运行时动态创建带控件的窗体,是行不通的.......(50分)

  • 主题发起人 主题发起人 kmif
  • 开始时间 开始时间
K

kmif

Unregistered / Unconfirmed
GUEST, unregistred user!
我是这样做的:
先定义了form3,把里面的控件、button 、adoquery等什么的都定义好,过程等都定义好了,即unit3是一个完整的窗体,
然后在form1中的button1这样调用form3:
type
form3 = class(tform);
.
.
var
form3:tform3;
.
.
begin
if form3=nil then
begin
Form3 := TForm3.Create(self);
form3.Show;
end;
程序运行时这样提示"Invalid property Value".
请教我这样动态创建窗体为何不行?
但我另外定义了一个空的窗体form4,在form1中也同样地调用,却正常得很:
type
tform4=clase(tform);
..

var
form4:tfrom4;
..
procedure TForm1.N9Click(Sender: TObject);
begin
With TForm4.creat(nil) do
begin
Try
showmodle;
finally
free
end;
end;

点解,点解。。。。。。。。
 
不用这么麻烦,直接在USES 一下UNIT3后在button1这样调用form3:
With TForm3.creat(Application) do
begin
Try
showmodule;
finally
free;
end;
end;

你的Form3 := TForm3.Create(self);可能有问题!用Form3 := TForm3.Create(Application);试一下,不一定行。
 
用一句 uses 就搞定了。
因为窗体定义不单是一个内部成员对象的问题,它还包括一个窗体定义文件,无法象一
般的类那样直接定义后再建立
 

Similar threads

后退
顶部