将上下文菜单添加到TPageControl的选项卡

Bri*_*ost 5 delphi contextmenu click tpagecontrol

我希望将上下文菜单添加到TPageControl的(仅)选项卡,与选项卡区域不同(例如,像Delphi一样提供文件/页面选项)。我知道我可以使用TRzPageControl做到这一点,但是请问如何使用TPageControl做到呢?

Fra*_*ois 5

如果不想创建组件,则始终可以使用PageControl的OnContextPopup,然后根据Mouse位置切换其PopupMenu。

假设您已经创建了2个PopuMenus pmTabs和pmPages,则以下代码在点击选项卡区域时将显示第1个,否则将显示第2个:

procedure TForm2.PageControl1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  with Sender as TPageControl do begin
    if [htOnItem] * GetHitTestInfoAt(MousePos.X, MousePos.Y) <> [] then
      PopupMenu := pmTabs
    else
      PopupMenu := pmPages;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • GetHitTestInfoAtAt(MousePos.X,MousePos.Y)中的htOnItem对我来说似乎更具可读性(希望表示相同的意思:-)。 (2认同)