向大家请教用什么控件才能使点击窗体最大化的时候,窗体上的内容才能够成比例的跟着变化(我跟大家说了,大家可别见笑,我以前做的那些工具的界面我都是把窗体最大化那项给设置成了false的)

解决方案 »

  1.   

    如果要跟着显示器分辨率要写代码吧,我一般都是放panel做为底,然后把它的Align属性设为alClient或alRight之类的,如果要求不是很高这样也可以了!
      

  2.   

    如果要跟着显示器分辨率要写代码吧,我一般都是放panel做为底,然后把它的Align属性设为alClient或alRight之类的,如果要求不是很高这样也可以了!我试了一下,好像不行的,窗体上的那些按钮根本就没有成比例的变化
      

  3.   

    我一般使用俩个方法:
    1、组件的容器应用;常规使用ATTOP/ATCLIENT/ATCUSTOM/ATLEFT/ATNONE/ATRIGHT/ATBOTTOM。
    2、判断窗口的RESIZE倍数,取得HEIGHT/WINDTH各倍数,重新绘可视组件。(如果是自定义的VCL或是三方的,特别是FRAME的组件,就不一定能正确缩放)。
      

  4.   

    一般来说都是设置align或者anchors属性
      

  5.   

    这个在PB中很常见,我用PowerBuilder写N层PB-ORA通用框架的时候是这么实现的
    具体做法是取得所有可视对象,包括在Tab上的所有控件,因为Tab里面的也要缩放的
    然后借助每个控件的TAG来记录要如何缩放
    缩放分9类
    FIXEDRIGHT 控件总是右对齐(水平方向而已) //这里主要是按钮,因为没有人会去把按钮变大
    FIXEDBOTTOM 控件总是底部对齐 (垂直方向而已) //同上
    FIXEDRIGHTBOTTOM 控件总是右底对齐 (水平和垂直方向) //例子:假设Form上有个关闭按钮,它位于右底侧,在你缩放窗口的时候,它总会是保持窗口相对位置
    SCALE //比例缩放,随着窗口的大小变大而变大,变小而变小,象记事本的MEMO组件,就是啦
    SCALERIGHT='ScaleToRight' //横向比例缩放,象IE窗口那样,如果左边有树型视图,右边是个DBGRID的话,那么DBGRID宽度总是随着窗口宽度而自动调整
    SCALEBOTTOM //道理同上,只是改成了下面的
    //下面这两个是上面的集合,可以实现,MDI窗口中的子窗口缩放,假设MDI上面有IEButtonBar,左边有TreeView,那么子窗口就可以是下面的啦,当然,子窗口也具备缩放效果的
    FIXEDRIGHT_SCALEBOTTOM='FixedToRight&ScaleToBottom'
    FIXEDBOTTOM_SCALERIGHT='FixedToBottom&ScaleToRight'在每个控件中的TAG写上面的标识符,然后在Form_Load中,判断每个控件的TAG,当然对于TAB必须遍历,使用数组记录他们现在的WIDTH,HEIGHT,X,Y,窗口的也要
    然后在Resize属性中,根据当前的参数做除法和加法运算,例如:
    memo1.Width=self.Width/newwidth,memo1.Height=memo1.Y.................
    记住,你还需要一个CONTROL数组,这样才能做到通用,只要实例化这个类,然后在Form_Load写
    TAutoResize.register(THIS)
    Form_Resize写
    TAutoResize.Resize(Resize事件的参数)最后补充一点的是,缩放需要一个最小化尺度,象WIN2000的任务管理器,它缩放到某个程度的时候就不能再缩小,这么做的好处是避免界面的控件布局混乱,其实这在DELPHI只要指定MinWidth和MinHeight就可以啦本来想把我写的TAutoResize类放上来的,可惜这里似乎不能上传附件,但是我已经告知了实现方法,希望有兴趣的朋友可以一试
      

  6.   

    在DELPHI中设置控件的anchors属性即可。
      

  7.   

    在DELPHI中设置控件的anchors属性即可。
    是不是比如说把窗体上的所有控件的anchors的akleft和aktop设置成true,把其他的都设置成false,这样的话,窗体上的控件都保持左上对齐,这样就保持了窗体上的整体布局不变???????????????????????
      

  8.   

    你把anchors属性中的四个互相设置为TRUE或FALSE试试不就知道了嘛。
      

  9.   

    anchors属性的作用是控件按以父控件的上、下、左、右保持相对位置,比如你把一个BUTTON放在窗体的底部,再把它的AKBUTTOM设置为true,其它几项都设置为false,则这个窗体在最大化时BUTTON总是会在窗体的底部这个位置上。
      

  10.   

    多放panel做为底,在Form的Form_Resize写各panel的相对长或宽的百分比(得到的长或宽要是整数)
      

  11.   

    我一般是 所有控件以panel为底,然后在添加以下代码implementationconst
      ScreenWidth: LongInt = 1024; {I designed my form in 1024×768 mode.}
      ScreenHeight: LongInt = 768;
    {$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      scaled := true;
      if (screen.width <> ScreenWidth) then
      begin
        height := longint(height) * longint(screen.height) div ScreenHeight;
        width := longint(width) * longint(screen.width) div ScreenWidth;
        scaleBy(screen.width, ScreenWidth);
      end;
    end;学习的别人的代码 感觉效果还可以
      

  12.   

    在Delphi中如果想实现你要的定位,只需要Panel+Anchor设置即可。
    你甚至可以在设计期就可以查看效果。