在 TPageControl 的每个 Ttabsheet 中绘制一个关闭按钮



我想在PageControl上实现一个关闭按钮,我也读过这个问题 如何为TPageControl
的工作表实现关闭按钮问题是我无法弄清楚如何实现 Ulrichb 答案中提供的代码......他们是否正在构建来自 TPageControl 的新组件后代?如果有人能解释在哪里编写某些代码,我将不胜感激!我有一位老师,他在我的学校知道一点德尔菲,但他无法帮助我。如果这是一个愚蠢的问题,我很抱歉,但我是德尔福和编程的新手。

您链接到的问题中的代码不会创建新组件。相反,它通过使用页面控件的事件实现自定义绘图。具体来说,这些事件:

  • 在绘图选项卡上
  • 打开鼠标向下
  • 鼠标移动
  • 鼠标离开
  • 鼠标向上

您必须使用 Delphi 窗体设计器将这些事件处理程序连接到匹配的事件,以使代码正常工作。

回答该问题时,选择此方法可能是为了简单起见,但它无法扩展到具有许多具有页面控件的窗体的应用程序。在这种情况下,您可能希望派生一个新的页面控件组件。

如果这样做,则需要重写以下方法,而不是使用事件:

  • 绘制选项卡
  • 鼠标向下
  • 鼠标移动
  • 鼠标向上

除此之外,还必须复制OnMouseLeave行为。这需要一个消息处理程序。

procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
....
procedure TMyPageControl.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if Message.LParam=0 then
  begin
    // move OnMouseLeave code here
  end;
end;

相关内容

最新更新