我现在做的FORM1窗体上有一些控件,如IMAGE1,edit等。当我拖动鼠标使其改变窗体大小时,希望窗体中的控件,主要是Image,能够也跟着改变大小。而且布局排列也改变。(我知道Anchors可以做到一些,但不完善。)请高手赐教,在线等待。

解决方案 »

  1.   

    如果觉得Anchors不好用 那只有自己写程序了.
      

  2.   

    Anchors不能改变控件的大小吧。
      

  3.   

    Anchors可以改变控件的大小,只要把四个选项都设成True就OK了.
    复杂的变化最好还是自己写
      

  4.   

    Anchors可以搞定的。只是麻烦点,你需要自己调整。:)
      

  5.   

    建一窗体,在窗体上加3个可视控件,在var段定义如下变量:
      x1,y1:integer;
      cl,ct,cw,ch:array [0..2] of real;//数组上限由可视控件数目而定在窗体的OnCreate事件输入如下代码:
    procedure TForm1.FormCreate(Sender: TObject);
    var i:integer;
    begin
    //取窗体的原始大小
    x1:=form1.ClientWidth;
    y1:=form1.ClientHeight;
    //取各控件的原始大小和位置
    for i:=0 to 2 do
    begin
      cw[i]:=form1.Controls[i].Width;
      cl[i]:=form1.Controls[i].Left;
      ch[i]:=form1.Controls[i].Height;
      ct[i]:=form1.Controls[i].Top;
    end;
    end;在窗体的OnResize事件输入如下代码:
    procedure TForm1.FormResize(Sender: TObject);
    var x,y,i:integer;
    begin
    x:=form1.ClientWidth;
    y:=form1.ClientHeight;
    for i:=0 to 2 do
    begin
       cl[i]:=cl[i]*x/x1;
       ct[i]:=ct[i]*y/y1;
       form1.Controls[i].Left:=round(cl[i]);
       form1.Controls[i].Top:=round(ct[i]);
       cw[i]:=cw[i]*x/x1;
       form1.Controls[i].Width:=round(cw[i]);
       ch[i]:=ch[i]*y/y1;
       form1.Controls[i].Height:=round(ch[i]);
    end;
    x1:=x;
    y1:=y;
    end;
    以上在WIN 2000 delphi 5/7下调试通过。
      

  6.   

    那Image中的画布 所绘制的图形如何跟着缩放哪?
      

  7.   

    to goodloop(小志) ,能解释一下吗?
      

  8.   

    Image.stretch:=True
    可以保证大小会随着变化,但图象质量嘛,,,,,,,5折!
      

  9.   

    放置一个容器,然后设置IMAGE  的 STRETCH属性