我希望这样的事情应该工作:打开一个新的形式与特定的标签
Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;
的事情是,我有多个按钮(在第一种形式),我想对于每一个他们可以在PageControl的特定选项卡中打开新窗体。
错误:Undeclared identifier: 'TabSheet1'
我希望这样的事情应该工作:打开一个新的形式与特定的标签
Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;
的事情是,我有多个按钮(在第一种形式),我想对于每一个他们可以在PageControl的特定选项卡中打开新窗体。
错误:Undeclared identifier: 'TabSheet1'
的消息显示,TabSheet1没有定义 - 这可能是(虽然不向我们展示完整的代码),因为你的父对象外,所以你需要行
Form2.PageControl1.ActivePage := Form2.TabSheet1;
Dsm的回答是提问的正确答案。
但是从设计的角度来看,虽然这样可以正常工作,但它确实需要调用代码来了解Form2的内部知识,这不是很好的类封装。我将一个数据成员,而不是添加到Form2
,表示期望的页面在窗体的OnShow
事件来显示,然后调用Show()
之前设置该成员,如:
type
TWhichTab = (wtNone, wtTab1, wtTab2, ...);
TForm2 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
...
procedure FormShow(Sender: TObject);
...
public
...
InitialTab: TWhichTab;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
PageControl1.ActivePageIndex := Ord(InitialTab)-1;
end;
Form2.InitialTab := wtTab2;
Form2.Show();
Form1.Hide();
是的,我同意,虽然我会进一步讨论它,并且指出正在显示什么而不是哪个选项卡,因为信息如何显示应该是视觉对象。例如,标签可能会重新排序,例如6个月。 – Dsm
我经常使用的各这些命令没有问题。那么你的问题到底是什么?我认为你需要给予更多的帮助,最好是一个能够显示你的问题的小型示例程序。同时请说明它是Firemonkey还是VCL,以及您使用的Delphi版本。 – Dsm
其VCL。它说:'未声明的标识符''TabSheet1'' - Delphi 7 –