TRzpagecontrol 如何动态创建?(分不多,请多包涵)
一,情况是这样的:我先手动创建一个Tabsheet1 里面包括button,panel,listview edit等控件,现在Tabsheet1里面每个控件功能都实现好了,现在我想通过一个按钮来实现动态创建Tabsheet1里一模一样的界面和功能,各位大大请问怎么实现?小弟比较菜,最好能详细说明,谢谢了
二,Rzpagecontrol 手动创建4个Tabsheet1,Tabsheet2,Tabsheet3,Tabsheet4
窗体create时 全部设置tabvisible为false,现通过按钮把前三个tabvisible为true,通过标题那个关闭按钮一个个关掉3个之后竟然会出现Tabsheet4那一页的内容(按道理来说是不能出现的),请问这个又是怎么回事啊?如果不要出现Tabsheet4那一页又怎么做? 谢谢
[解决办法]
一,把那些功能写成一个frame,调用时就
var
f:TMyFrame
[解决办法]
var
TabSheet:TsTabSheet;
f:TFrame1;
begin
TabSheet:=TsTabSheet.Create(PageControl1);
TabSheet.PageControl := PageControl1;//容器归属
PageControl1.ActivePageIndex := TabSheet.PageIndex;//激活容器页
f := TFrame1.Create(TabSheet);//创建窗口
f.ManualDock(TabSheet);//将窗口融合到容器里
f.Align := alClient;//窗口自适应
[解决办法]
动态创建TTabSheet的例子(初始pageControl默认有一个TTabSheet, 上边两个控件TButton, TEdit)
procedure TForm13.btn3Click(Sender: TObject);
var
i : integer;
newTab : TTabSheet;
begin
newTab := TTabSheet.Create(pgc1);
newTab.PageControl := pgc1;
newTab.Visible := true;
newTab.Caption := 'ts' + IntToStr(pgc1.PageCount);
for I := 0 to ts1.ControlCount - 1 do
begin
if ts1.Controls[i] is TButton then
begin
with TButton.Create(newTab) do
begin
name := newTab.Name + '_' + ts1.Controls[i].Name;
Parent := newTab;
Visible := true;
top := TButton(ts1.Controls[i]).Top;
left := TButton(ts1.Controls[i]).left;
Width := TButton(ts1.Controls[i]).Width;
Height := TButton(ts1.Controls[i]).Height;
Caption := TButton(ts1.Controls[i]).Caption;
end;
end
else
if ts1.Controls[i] is TEdit then
begin
with TEdit.Create(newTab) do
begin
name := newTab.Name + '_' + ts1.Controls[i].Name;
Parent := newTab;
Visible := true;
top := TButton(ts1.Controls[i]).Top;
left := TButton(ts1.Controls[i]).left;
Width := TButton(ts1.Controls[i]).Width;
Height := TButton(ts1.Controls[i]).Height;
Text := TEdit(ts1.Controls[i]).Text;
end;
end;
end;
end;