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

标签 delphi delphi-xe2 tpagecontrol

我想在 PageControl 上实现一个关闭按钮,我也读过这个问题 How to implement a close button for a TTabsheet of a TPageControl
问题是我不知道如何实现 Ulrichb 的答案中提供的代码......他们是否从 TPageControl 构建一个新的组件后代?如果有人可以解释在哪里编写某些代码,我将不胜感激!我在学校有一位老师,他懂一点delphi,但他帮不了我……如果这是一个愚蠢的问题,我很抱歉,但我对delphi 和编程很陌生。

最佳答案

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

  • OnDrawTab
  • 鼠标按下时
  • 鼠标移动
  • 鼠标离开
  • 鼠标松开

您必须使用 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;

关于delphi - 在 TPageControl 的每个 Ttabsheet 中绘制一个关闭按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430088/

相关文章:

android - Delphi Android RESTRequest: channel 无法恢复,将被丢弃

delphi - 如何链接 "parallel"类层次结构?

delphi - 如何让 Delphi 不打扰我的 DFM?

delphi - 在 PageControl 之间移动 TabSheet

delphi - 如何更改主题 TabSheet 标题的文本颜色?

delphi - 如何设置 TPageControl 的当前页面?

delphi - 如何修补 Classes.pas 中的方法

delphi - 将UnicodeString的char pos转换为utf8字符串中的字节pos

php - Aes|Rijndael-128 在 Delphi XE2 中进行哈希文本解码

delphi - 在 VCL 样式表单上禁用 TButton 问题