请教各位大侠,这样动态创建窗体为何不行?(50分)

  • 主题发起人 主题发起人 kmif
  • 开始时间 开始时间
__________________________________________________________________________
var
NewFrm:Tform3;
begin
NewFrm := Tform3.Create(nil);
.
.
.
NewFrm.ShowModal;
NewFrm.free;
end;
_________________________________________________________________________
我一直在这么用,没问题。
 
form3 = class(tform); 把这行去掉
应该就可以了。
 
根据各们人兄的提议,我这样做:
program Project2;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin
Application.Initialize;
Application.Title := '管理平台';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(Tform2, form2);
Application.CreateForm(TForm3, Form3);
form2.Edit1.SetFocus;
form2.BitBtn1.Enabled:=false;
Application.Run;

end.
其中form2为密码窗,通过后hide了,在form1的button1中我这样用:
procedure TForm1.button1Click(Sender: TObject);
var
form3:tform3;
begin
Form3 := TForm3.Create(self);
form3.ADOConnection1.connectionstring:='Provider=SQLOLEDB.1;Password=maxell;'+
'Persist Security Info=True;User ID=sa;'+
'Initial Catalog=dhgl;Data Source=KMIF;'+
'defaultdatabase=dhgl';
form3.ADOConnection1.Connected:=true;
form3.adoQuery1.connection:=form3.adoconnection1;
form3.Showmodal;
end;

结果当然是"Access Violation at address '****' In module 'vcl70.bpl'......
你说是不是见鬼了
 
type
form3 = class(tform)----------------------------------这里定义的类是form3;
var
form3:tform3----------------------------这里用到的是tform3是不是有问题啊;
还有,这些代码是在form1中写的吧,应该写在implementation后面吧,而且是应该在uses
后面,也就是说,程序能够找到tform3这个类,然后才能执行:
个人见解,仅供参考
 
把你得源程序发到 JIE1017@163.NET我看看究竟怎么回事
 
密码验证而已,何必这么麻烦?!
BambooHeart@vip.sina.com
 
后退
顶部