我的一个form1下还有一个form2,想做到效果是这样的,form1位置变化则form2在显示时也要跟着相对变化?
我这样实现没有效果不知为什么有知道的吗?
 form2.left:=form1.left-30;
 form2.top:=form1.top-30;

解决方案 »

  1.   

    通过ini/xml等配置文件保存位置,需要是从中提取
      

  2.   

    在执行过程中实现FORM2对FORM1的跟随,好像有点难,如果是每次执行的时候的相对位置,那就简单多了,读写配置文件就可以了.INI
      

  3.   

    简单着:要工作的是: form1 的,在FormCloseQuery事件里写ini文件,保存这个时候form1的具体位置,form2 的,在formOnCreate事件里读取ini文件里面关于form1被关闭时所保存的位置,然后 form2.left:=form1.left-30;
     form2.top:=form1.top-30;就可以了。另外,如果你是 form1 和form2 同时显示的,就在form1的Resize事件里写 form2.left:=form1.left-30;
     form2.top:=form1.top-30;End.
      

  4.   

    哦,现在弄明白你想作什么了。就是form1和form2同时显示的,上面的回复还有错误,
    请看下面的:unit1;
    .....
    type
    .......
        procedure Get(var msg:Tmessage);message  161;
    .......
    implementation{$R *.dfm}procedure tform1.Get(var msg:Tmessage);
    begin
     inherited;
     if msg.WParam=2 then
       begin
         form2.left:=form1.left-30;
         form2.top:=form1.top-30;
      end;
    end;
      

  5.   

    如果把Form1换成一个控件,然后我要在控件的某个事件中显示出一个窗体 。
    其中窗体的位置也要能跟着控件的位置做相应的变化,是不是也可以用上面的
    编程思想来解决这样的问题啊 。
      

  6.   

    又想出来一个办法
    -------------------------
    form2.parent:=form1;
    form2.show;
    -------------------------
    form2跟着form1走,绝对的,呵呵!
      

  7.   

    你说的是不是磁性窗口,象winamp那样?如果是查以前的帖子就是了,实现的方法就是跟踪form的消息。
      

  8.   

    我的意思是,我扩展了Edit的功能,试图使它有一个象ComboBox那样的下拉效果 。
    但是我不知道怎么做下拉效果,所以我只能用一个通过控制一个窗体的显示位置
    来达到效果。