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

时间:2017-05-18 13:06:30

标签: delphi vcl

我希望这样的事情能够发挥作用:

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

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

错误:Undeclared identifier: 'TabSheet1'

2 个答案:

答案 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();