我把窗体的Position的属性选为poDesigned,然后我到DPI设置里,把正常尺寸(96 DPI)改为大尺寸(120 DPI)后,窗体的StatusBar和一些控体将无法正常显示,请问有什么办法能够解决这个问题。

解决方案 »

  1.   

    把窗体的Position的属性是否选为poDesigned 与窗体内控件变形无关,你调动了dpi后是会出现该种情况,这是因为你修改了字体的大小,所以控件就随之变大了,如果是label可以使用image,输入框可以考虑将autosize修改,当然这样并不好的原因是因为修改dpi的人就是因为眼神不好,而你限制了字体大小肯定会让这位用户眼睛疲劳,最好是使用一个参数表,分别存储每个控件的位置甚至大小,窗体显示时检查当前的dpi然后分类加载相应的参数即可。虽然麻烦,但作为一个体贴用户的程序员应该如此。当然,不变形的控件你可以不使用参数,但注意用tag来标识出来,比如所有tag为0的控件就不使用参数,而tag为1的使用第一行参数,2 使用第二行,这样你可以用个循环来摆平这种事情,然后把这个循环放入所有窗体的基类中的onshow代码中即可直接使用了。例:  form1 的caption 为“主窗体”    当form1 show 的时候就去找参数文件中"[主窗体]"模块的相应参数
      

  2.   

    formx.scaled:=true;
    formx.scaleby(96,120);
    按比例缩放,通过参数调整