我希望这样的事情能够发挥作用:
Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;
问题是我有一个多个按钮(在第一种形式中),我希望每个按钮在PageControl的特定选项卡中打开新表单。
错误:Undeclared identifier: 'TabSheet1'
答案 0 :(得分:2)
该消息显示TabSheet1未定义 - 这可能(虽然不向我们显示完整代码)因为您在父对象之外,所以您需要行
Form2.PageControl1.ActivePage := Form2.TabSheet1;
答案 1 :(得分:1)
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();