2

我标记了 Lazarus 和 Delphi,因为到目前为止我所做的一切似乎都是相似的 (100%)。但我的开发平台是 Lazarus。

我正在动态创建一个标签表,如下所示:

procedure TForm1.cmdTabButtonClick(Sender: TObject);
var
  NewTab: TTabSheet;
begin
  NewTab := TTabSheet.Create(PageControl1);
  NewTab.PageControl:= PageControl1;
  NewTab.Caption:='hi';
//  NewTab.TabVisible:=true;
//  newtab.SetFocus;
end;

过程中的最后两行被注释。没有它们,代码可以工作,但新选项卡不是最上面的选项卡。我必须单击它才能使其位于顶部。

但是如果我取消注释这两行,程序就会崩溃,说明一个不可见的对象不能有焦点。

关于如何解决这个问题的任何建议?

非常感谢!

4

2 回答 2

3

您需要设置ActivePage页面控件的属性。像这样:

PageControl.ActivePage := NewTab;
于 2012-12-10T10:41:04.580 回答
3

PageControl 具有属性ActivePageActivePageIndex,您可以使用它们。ActivePage在这种情况下是最方便的,因为你可以打电话

PageControl1.ActivePage := NewTab;
于 2012-12-10T10:41:16.930 回答