我刚注册还没分,请大家帮忙
有两个窗体。Form1中有个paagecontrol. 动态生成Form2并加到pagecontrol上。
当把Form1中的editfrom.text附给Form2中的Edit就出错Form2.edit1.text:=editfrom.text
出错提示:Access Violation at Address0045375E
1.请问如何生成Form2才能实现这个功附值能???????
2.下面几个语句有什么不同吗?在这个程序中运行效果是一样的
//增加 TTabsheet
Sheet:=TTabsheet.Create(nil);
Sheet:=TTabsheet.Create(self);
Sheet:=TTabsheet.Create(pagecontrol1);
多谢了各位。我头都大了都想不出来
///////////////////////////
program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
///// unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Editfrom: TEdit;
Button1: TButton;
BtAddFrm: TButton;
////动态生成Form2并加到pagecontrol中
procedure BtAddFrmClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BtAddFrmClick(Sender: TObject);
var
Sheet:TTabSheet;
Form:Tform;
begin
//增加 TTabsheet
Sheet:=TTabsheet.Create(nil);
with sheet do
begin
PageControl :=pagecontrol1;
Caption :='AddTabSheet';
end;
pagecontrol1.ActivePage :=sheet;
////动态生成Form2并加到pagecontrol中
form:=Tform2.Create(application);
with form do
begin
Parent :=pagecontrol1.ActivePage ;
BorderStyle :=bsnone;
Top :=0;
left:=0; end;
form.Show ;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Edit1.Text :=editfrom.Text ;
end;end.
//////////////////
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}end.
有两个窗体。Form1中有个paagecontrol. 动态生成Form2并加到pagecontrol上。
当把Form1中的editfrom.text附给Form2中的Edit就出错Form2.edit1.text:=editfrom.text
出错提示:Access Violation at Address0045375E
1.请问如何生成Form2才能实现这个功附值能???????
2.下面几个语句有什么不同吗?在这个程序中运行效果是一样的
//增加 TTabsheet
Sheet:=TTabsheet.Create(nil);
Sheet:=TTabsheet.Create(self);
Sheet:=TTabsheet.Create(pagecontrol1);
多谢了各位。我头都大了都想不出来
///////////////////////////
program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
///// unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Editfrom: TEdit;
Button1: TButton;
BtAddFrm: TButton;
////动态生成Form2并加到pagecontrol中
procedure BtAddFrmClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BtAddFrmClick(Sender: TObject);
var
Sheet:TTabSheet;
Form:Tform;
begin
//增加 TTabsheet
Sheet:=TTabsheet.Create(nil);
with sheet do
begin
PageControl :=pagecontrol1;
Caption :='AddTabSheet';
end;
pagecontrol1.ActivePage :=sheet;
////动态生成Form2并加到pagecontrol中
form:=Tform2.Create(application);
with form do
begin
Parent :=pagecontrol1.ActivePage ;
BorderStyle :=bsnone;
Top :=0;
left:=0; end;
form.Show ;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Edit1.Text :=editfrom.Text ;
end;end.
//////////////////
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}end.
使用自动拖动就可以把form2放到TPageControl上,如:
Form2.ManualDock(Form1.PageControl1);记得把PageControl1.DockSite设置为true。
PageControl1会自动产生TTabSheet的。
form:=Tform2.Create(application);
楼主这个动态生成的是form,而且form是局部变量的,这样form2你还没创建的,你用他的属性当然会出地址错误一类的了。
我的Form2 在程序的Form1.PageControl1中要动态生成和销毁(反复,不是一次)。应该如何实现》?
logne() 你说的有道理。但在程序中反复生成,该如何定义Form2?
怎样才能实现
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Edit1.Text :=editfrom.Text ;
end;end
我的Form2 在程序的Form1.PageControl1中要动态生成和销毁(反复,不是一次)。应该如何实现》?
logne() 你说的有道理。但在程序中反复生成,该如何定义Form2?
怎样才能实现
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Edit1.Text :=editfrom.Text ;
end;end
在form1中定义窗体级变量form . ////动态生成Form2并加到pagecontrol中
form:=Tform2.Create(application);
with form do
。以下有点变化:
procedure TForm1.Button1Click(Sender: TObject);
begin
(form as Tform2).Edit1.Text :=editfrom.Text ;
end;
在我的程序中测试是可以通过的。不知道有没有更好的办法??