如何允许或禁止用户在pagecontrol中输入tab?

Ama*_*nda 4 delphi tpagecontrol

我想限制用户(基于特殊条件)在页面控件中打开选项卡.即,用户可以单击选项卡,但不会向他显示.相反,一条消息将向他显示" he don't have the access right to see such tab".

在什么事件上我应该编写检查代码,以及哪个tab属性(TPageControl组件)将允许/阻止用户进入这样的选项卡?

Dav*_*nan 7

在一个理想的世界里,你将设置AllowChangeFalseOnChanging事件阻止页面改变.然而,这看起来似乎不可行,因为我无法从内部辨别OnChanging出用户试图选择哪个页面.

即使查看基础Windows通知似乎也没有什么希望.该TCN_SELCHANGING通知标识了控件,但对于所涉及的页面没有任何说明,据我所知.

我能想到的最好的方法是用来OnChanging记录当前的活动页面,然后进行艰苦的工作OnChange.如果所选页面已更改为不需要的内容,则只需将其更改回来.

procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
begin
  FPreviousPageIndex := PageControl1.ActivePageIndex;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
  if PageControl1.ActivePageIndex=1 then begin
    PageControl1.ActivePageIndex := FPreviousPageIndex;
    Beep;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我知道相当凌乱,但它有工作的美德!

  • @ Ravaut123的确不是.由于您控制了您编写的代码,因此应该很容易避免出现这样的错误. (4认同)