首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么向动态生成的窗体中的控件附值

2012-04-06 
如何向动态生成的窗体中的控件附值我刚注册还没分,请大家帮忙有两个窗体。Form1中有个paagecontrol.动态生

如何向动态生成的窗体中的控件附值
我刚注册还没分,请大家帮忙
有两个窗体。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你还没创建的,你用他的属性当然会出地址错误一类的了。

热点排行