重写WM_MAXIZE(是不是这个?反正就是窗口最大化那个消息),在这个消息的处理过程里面对修改每个控件的尺寸.

解决方案 »

  1.   

    设置Align或者Anchors,具体试一下就知道了
      

  2.   

    设置Align或者Anchors 可以改变控件尺寸,但是如果控件很多,有十几、几十个怎么办,可能只有在程序中修改每个控件的尺寸,具体我也没试过,用设置Align或者Anchors方法改尺寸,我用过. 
      

  3.   

    用程序计算可以得到,不过工程十分浩大,我曾经经过完全使用自定义(Create)的控件,然后计算大小比较方便一点,不知道有没有简单的方法。
      

  4.   

    利用ScaleBy(x,y)函数,x和y都是integer类型的数值,函数作用是将窗体里的组建变为原来的x/y倍。具体做法是:
    1)在声明form的单元接口部分定义两个变量用来记忆form的Height和Width属性:
       var
         LastHeight:=Height;
         LastWidth:=Width;
    2) 编写窗体创建过程:
       procedure TForm1.FormCreate(Sender: TObject);
       begin
         LastHeight:=Height;
         LastWidth:=Width;
       end; //用来记忆窗体的原始尺寸。
    3) 编写窗体的OnResize事件:
       procedure TForm1.FormResize(Sender: TObject);
       begin
         scaleby(Height,LastHeight);
         LastHeight:=Height;
         LastWidth:=Width;
       end; //当窗体尺寸改变时,其中的组件也变化。注意事项:
    1)组件上的文本使用TrueType字体,才会有好的效果。
    2)上面的代码是针对Form的Height属性的变化而改变的,你也可以稍微修改一下使其响应
       Width属性的变化。但使组件的尺寸同时根据两个属性而变化则无能为力。不过以上代
       码已经完全可以实现你的问题。
      

  5.   

    用程序计算可以得到,但是如果控件很多,有十几、几十个怎么办,工程十分浩大
    我觉得最好是事先对系统的界面做好规划,然后多用几个容器组件如:panel,bevel,splitter等,设置它们的Align属性!
      

  6.   

    那PageControl控件也应该算是一个容器组件吧
      

  7.   

    用scaleby(Height,LastHeight);
    屏幕闪烁太厉害了 
      

  8.   

    我做过界面很复杂的系统,十分同意 mengbo(心有独钟) 看法。(千万不要企图改变edit等控件的大小——自己想一下,那会好看吗?)安排好布局,用Panel等分隔程序,并且设置好alien属性,有时候要注意摆放顺序。
      

  9.   

    这个问题会难到连CSDN上的人都解决不了啊
      

  10.   

    修改控件的 anchors 属性:=[akLeft,akTop,akRight,akBottom]
      

  11.   

    我以前问过,希望对你有用:]
    http://www.csdn.net/expert/topic/398/398538.shtm