Form.Assign()的用法?(50分)

  • 主题发起人 主题发起人 blankblock@263.
  • 开始时间 开始时间
B

blankblock@263.

Unregistered / Unconfirmed
GUEST, unregistred user!
新建Application,其中有Form1和Form2,在Form1的Button1的事件中加入:
procedure TForm1.Button1Click(Sender: TObject);
var
tmpForm:TForm2;
begin
tmpForm:=TForm2.Create(Application);
try
tmpForm.Assign(Form2);
tmpForm.ShowModal;
finally
tmpForm.Free;
end;
end;
编译通过,在运行时点击Button1,出现以下错误:cannot assign a TForm2 to TForm2?
请问为什么?Assign不就是干这个用的吗?
 
对窗体来说是不可以的!
 
你是不想重用FORM2!
你得写一个继承FORM2的窗体不就行了吗?
 
你定义的TmpForm本身就是一个TForm2对象,这样用是会出问题,你看看TForm中的Assign
的帮助文件就知道了!你执行了tmpForm:=TForm2.Create(Application);就不需要再Assign
就可以执行了!
 
我的真实目的是这样的,我编写了自己的属性编辑框MyPropEditor,就是按Object Inspector中省略号
弹出来编写属性的那个咚咚,我要在使用属性编辑框时知道当前被编辑的控件所在的窗体
是那个,就定义了MyPropEditor.ParentControl:TComponent的属性,希望能够通过
MyPropEditor.ParentControl.Assign(CurrentProp.Designer.Root)
来获得。如果象楼上所说对窗体就是不行的话,那应该怎么解决?
 
你是不是要在form1中装入form2呀?
劝你用AHM2000中的TAHMFormSlide控件,可以很轻松的装入,而且还可以实现特效。
 
我想了想,其实只要把CurrentProp.Designer.Root的指针赋给MyPropEditor就可以了,
以前因为一直头疼指针的^ @这些咚咚,没想过用它,不过我还是不明白,为什么我就
不能把一个已存在的Form2的所有属性赋给tmpForm,理论上没有错误啊。
 
多人接受答案了。
 
后退
顶部