我用一个按狃动态创建窗体,运行时出错: Access violation at address 0044E559 in module 'Project2.exe',Read of address 0000004C procedure TForm1.ToolButton1Click(Sender: TObject);
var
frm2:TForm2;
begin
frm2 := Tform2.Create(nil);
frm2.ShowModal;
end;
var
frm2:TForm2;
begin
frm2 := Tform2.Create(nil);
frm2.ShowModal;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
Label3: TLabel;
Label5: TLabel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ComboBox1: TComboBox;
Label4: TLabel;
Label6: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation
uses
Unit6;{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Width := 444;
Form2.Height := 250;
end;procedure TForm2.Button1Click(Sender: TObject);
var
Age,nName,Sex,MobilePhone,Tel,Address:String;
begin
nName := Edit1.Text;
Age := Edit2.Text;
Sex := ComboBox1.Text;
MobilePhone := Edit3.Text;
Tel := Edit4.Text;
Address := Edit5.Text;
with DataModule6.ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('Insert into Tab_Address values('''+nName+''','''+Address+''','''+Sex+''','+Age+','''+MobilePhone+''','''+Tel+''')');
ExecSQL;
end;
ShowMessage('添加成功!');
Edit1.Text := '';
Edit2.Text := '';
ComboBox1.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
end;end.
Form2的代码
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); //没有这个就会有你的那个问题
Application.Run;
begin
Form2.Width := 444;
Form2.Height := 250;
end;
-------------->
procedure TForm2.FormCreate(Sender: TObject);
begin
Width := 444;
Height := 250;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=tform2.Create(self);
form2.ShowModal;
form2.Release;
end;
begin
form2:=tform2.Create(nil);
form2.ShowModal;
form2.Release;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with tform2.Create(nil) do begin
showmodal;
release;
end;
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
var
frm2:TForm2;
begin
frm2 := Tform2.Create(nil);
frm2.ShowModal;
end; 有人知道原因吗?
begin
Application.CreateForm(TForm2, Form2);
end;这样 贴错了
var
Form2:TForm2;
begin
Application.CreateForm(TForm2, Form2);
end;
动态创建窗体:
var
oFrm:TForm;
begin
oFrm := TForm.Create(Self);
with oFrm do begin
Top := **;
Left := **;
Height := **;
Width := **;
Parent := nil;
Caption:= **;
end;
oFrm.ShowModal;
这是不属于任何窗体的。若想在上面添加控件,只需要改 Parent := oFrm;
关于动态创建窗体有很多细节,有的从属性设置就搞定了.呵呵
这些不是从FromShow等发放中能看到的.