这是关于带动态选项卡的PageControl。我有5个按钮(Button1,Button2,Button3,Button4,Button5)。德尔福 - 已在页面控制中打开标签
我想以下几点:
- 每点击一个按钮,将打开一个新的
TtabSheet
。 - 当点击同一个按钮时,'Ttabsheet'已经打开,应该再次显示。
如何做到这一点?
这是关于带动态选项卡的PageControl。我有5个按钮(Button1,Button2,Button3,Button4,Button5)。德尔福 - 已在页面控制中打开标签
我想以下几点:
TtabSheet
。如何做到这一点?
我不知道为什么你真的想有五个按钮做创建的标签,然后选择他们的工作,但是这是方法之一,你可以尝试
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上进行测试。
注:根据大卫评论我编辑了我的答案。并进一步解释请看这question
是的它可以很好地运行,但是当我删除标签时它不能重新打开相同的标签。我该怎么办? –
当您删除选项卡时,执行'ex(选项卡的编号):= false;'它应该做的伎俩。 –
哇完美无缺。非常感谢。 –
只需在窗体类中定义像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
。
问题是,创建标签的相同按钮应该在再次单击时选择它。 –
所以当你点击一个按钮,你想要显示的页面? –
,你能解释第二部分吗? –
欢迎来到Stack Overflow!请[编辑]您的问题以显示[迄今为止的代码](http://whathaveyoutried.com)。你至少应该包括一个你遇到问题的代码大纲(但最好是[mcve]),然后我们可以尝试帮助解决具体问题。你还应该阅读[问]。 –