这是关于带动态标签的PageControl。我有5个按钮(Button1,Button2,Button3,Button4,Button5)。
我想要以下内容:
TtabSheet
。怎么做?
答案 0 :(得分:0)
只需在表单类中定义类似fPreviousTabIndex
的变量,您可以在其中存储TPageControl的最后一个状态(ActivePageIndex
属性)。
下一部分已经很简单......
procedure TForm1.Button2Click(Sender: TObject);
const
DESIRED_PAGE_INDEX = 2;
begin
if PageControl.ActivePageIndex = DESIRED_PAGE_INDEX then
PageControl.ActivePageIndex := fPreviousTabIndex
else
begin
fPreviousPageIndex := PageControl.ActivePageIndex;
PageControl.ActivePageIndex := DESIRED_PAGE_INDEX;
end;
end;
当然,您需要在创建表单期间初始化fPreviousTabIndex
。
答案 1 :(得分:-1)
我不知道为什么你真的想让五个按钮完成创建标签然后选择它们的工作,但这是你可以尝试的方法之一
uses System.Generics.Collections;
...
var
Newtabsheet: Ttabsheet;
Tabs: TList<Ttabsheet>;
Index: array[1..5] of Integer;
Ex: array [1..5] of Boolean;
implementation
将它放在Formcreate
处理程序
procedure TForm6.FormCreate(Sender: TObject);
begin
Tabs := Tlist<Ttabsheet>.create;
for I=1 to 5 do ex[I]:=false;
end;
这是每个OnClickButton
事件处理程序
procedure TForm6.Button1Click(Sender: TObject);
begin
if not(Ex[1])then
begin
Newtabsheet := Ttabsheet.Create(PageControl1);
NewTabSheet.PageControl := PageControl1;
Newtabsheet.Caption := 'Tab 1';
Index[1] := Tabs.Count;
Tabs.Add(Newtabsheet);
Ex[1] := true;
end
else
begin
Pagecontrol1.ActivePage := Tabs.List[Index[1]];
end;
end;
procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Tabs.Free;
end;
请记住更改数字。
它在RAD studio Seattle测试。
注意:根据david评论我编辑了我的答案。有关详细说明,请参阅此question