使用特定选项卡打开新表单

Opening a new form with specific tab

我希望这样的东西能起作用:

Form2.Show();
Form1.Hide();
Form2.PageControl1.ActivePage := TabSheet1;

问题是我有多个按钮(在第一个表单中),我希望每个按钮都能在 PageControl 的特定选项卡中打开新表单。

错误:Undeclared identifier: 'TabSheet1'

该消息显示未定义 TabSheet1 - 这可能是因为您在父对象之外(尽管没有向我们显示完整代码),所以您需要行

Form2.PageControl1.ActivePage := Form2.TabSheet1;

Dsm 的回答是所提问题的正确答案。

但从设计的角度来看,虽然这会很好地工作,但它确实需要调用代码了解 Form2 的内部结构,这不是很好的 class 封装。我会向 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();