有个问题,请当家帮忙,谢谢 在窗体Form1上放置PageControl控件,Form2上有edit1等控件。在Form1->PageControl上创建10个TTabSheet,每个TabSheet上再创建Form2.代码如下:
For ii:=1 to 10 do
begin
Tab :=TTabSheet.Create(PageControl1);
Tab.PageControl :=PageControl1;
Tab.Caption :='操作'+inttostr(ii)
Form2 :=TForm2.Create(self);
Windows.SetParent(Form2.Handle,tab.Handle);
Form2.Show;
end; 我可以在各自的TabSheet上进行编辑,处理等。
我的问题是:我如何在Form1上得到每个TabSheet上的Form2的控件内容及各自的变量哩?谢谢。(因为Form2上内容太多,做全局变量太麻烦,而且还有数据库组件等。)
For ii:=1 to 10 do
begin
Tab :=TTabSheet.Create(PageControl1);
Tab.PageControl :=PageControl1;
Tab.Caption :='操作'+inttostr(ii)
Form2 :=TForm2.Create(self);
Windows.SetParent(Form2.Handle,tab.Handle);
Form2.Show;
end; 我可以在各自的TabSheet上进行编辑,处理等。
我的问题是:我如何在Form1上得到每个TabSheet上的Form2的控件内容及各自的变量哩?谢谢。(因为Form2上内容太多,做全局变量太麻烦,而且还有数据库组件等。)
解决方案 »
- 如何对Delphi获取指定文件的图标进行数据库的写入和读取
- 如何截取图像的指定部分内容?分少可再加。
- 应用程序在运行的过程中突然SQL-SERVER中断了,怎么捕捉?要不然就显示"连接失败",然后程序就无法退出.
- 请问有没有类似温度计的带刻度的水柱的控件???
- 关于Flash
- 怎样导入.mdf文件到SQL Server?
- 哪里可以下载LMD tool for CB 5或6 的正式版?
- 如何将字符串转换成用十进制数字表示的字符串,又如何转换回来呢
- 如何通过传递地址的方式来调用一个integer的DLL?指计??
- SelectDirectory 的一个怪问题,不刷新
- 急!!!' Unknow database.Alias : SymInt ' . Process stopped,use step or r
- 请问大家用过IP Messenger吗?是delphi开源吗?
var
Form1: TForm1;implementationuses unit2;
var TabSheetForm:array [1..10] of TForm2;//以数组下标来甄别每个窗体
Tab:TTabSheet;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var ii:integer;
begin
For ii:=1 to 10 do begin
Tab :=TTabSheet.Create(PageControl1);
Tab.PageControl :=PageControl1;
Tab.Caption :='操作'+inttostr(ii);
TabSheetForm[ii]:=TForm2.Create(self);
Windows.SetParent(TabSheetForm[ii].Handle,tab.Handle);
TabSheetForm[ii].Show;
end;
end;
public
{ Public declarations }
test3:bool;//窗体变量,每个TForm2窗体实例独自享有
end;var
Form2: TForm2;
test1:bool;//单元变量,每个TForm2窗体实例均共享implementationvar test2:bool;//单元变量,每个TForm2窗体实例均共享{$R *.dfm}
......
1:你的方法我还没试,我自动创建的tab,可能数量由用户来创建,是可变的数组。
2:我说的变量是每个Form2内的变量,要通过Form1给Form2传递不同的变量。
你的方法我觉得可以试下,谢谢。
var
Form1: TForm1;implementationuses unit2;
var TabSheetForm:array of TForm2;//不要定死了长度{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var ii:integer;
begin
For ii:=1 to 10 do begin
Tab :=TTabSheet.Create(PageControl1);
Tab.PageControl :=PageControl1;
Tab.Caption :='操作'+inttostr(ii);
setlength(TabSheetForm,length(TabSheetForm)+1);
TabSheetForm[ii]:=TForm2.Create(self);
Windows.SetParent(TabSheetForm[ii].Handle,tab.Handle);
TabSheetForm[ii].Show;
end;
end;这样变通后,就可以不管客户要动态生成多少了。