如何向动态生成的窗体中的控件附值
我刚注册还没分,请大家帮忙
有两个窗体。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;
interface
uses
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;
implementation
uses 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;
interface
uses
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.
[解决办法]
不需要动态产生TTabSheet的,
使用自动拖动就可以把form2放到TPageControl上,如:
Form2.ManualDock(Form1.PageControl1);
记得把PageControl1.DockSite设置为true。
PageControl1会自动产生TTabSheet的。
[解决办法]
////动态生成Form2并加到pagecontrol中
form:=Tform2.Create(application);
楼主这个动态生成的是form,而且form是局部变量的,这样form2你还没创建的,你用他的属性当然会出地址错误一类的了。