Delphi-已在pagecontrol中打开选项卡
这是关于带有动态选项卡的页面控件。我有5个按钮(按钮1,按钮2,按钮3,按钮4,按钮5) 我想要以下内容:Delphi-已在pagecontrol中打开选项卡,delphi,delphi-xe,Delphi,Delphi Xe,这是关于带有动态选项卡的页面控件。我有5个按钮(按钮1,按钮2,按钮3,按钮4,按钮5) 我想要以下内容: 每次单击按钮都将打开一个新的t表格 单击同一按钮时,应再次显示已打开的“Ttabsheet” 如何做到这一点?只需在表单类中定义变量,如fPreviousTabIndex,在其中存储最后一个状态(ActivePageIndexTPageControl属性) 下一部分已经很简单了 procedure TForm1.Button2Click(Sender: TObject); const
t表格
如何做到这一点?只需在表单类中定义变量,如
fPreviousTabIndex
,在其中存储最后一个状态(ActivePageIndex
TPageControl属性)
下一部分已经很简单了
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
。我不知道为什么您真的希望使用五个按钮来创建选项卡,然后选择它们,但这是您可以尝试的方法之一
uses System.Generics.Collections;
...
var
Newtabsheet: Ttabsheet;
Tabs: TList<Ttabsheet>;
Index: array[1..5] of Integer;
Ex: array [1..5] of Boolean;
implementation
在每个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上进行了测试
注意:根据david的评论,我编辑了我的答案。如需进一步解释,请参见此,因此当您单击按钮时,您希望显示页面?您能解释第二部分吗?欢迎使用Stack Overflow!请出示你的问题。您应该至少包括您遇到问题的代码的大纲(但最好是a),然后我们可以尝试帮助解决特定问题。您也应该阅读。我成功地在每个按钮上添加页面,但当我再次单击同一按钮时,会出现添加新页面。如果我单击显示最近打开的选项卡页面的同一个按钮,我想单击。确定,因此当您按下按钮时,将添加一个页面。当你按下同一个按钮时,你希望它显示已经添加的页面,而不是添加新页面。这就是你想要的吗?是的,它可以运行良好,但当我删除该选项卡时,它无法重新打开相同的选项卡。我应该怎么做?当您删除选项卡时,do'ex(选项卡编号):=false;'它应该可以做到。只有一件事,当你删除选项卡时,你正在从“选项卡”列表中删除它,对吗?是的,你是对的,我只是使用PageControl1.ActivePage.free来激活选项卡的语句列表。这段代码非常混乱。至少它应该使用一个数组而不是5个变量。无论如何,抛开所有代码并使用tab sheets的TabVisible属性更容易。问题是创建选项卡的同一个按钮在再次单击时应该选择它。
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;