您如何修改 Delphi 面板,以便 Alignment := taRightJustify 呈现带有轻微右边距的标题?

How do you modify a Delphi Panel so Alignment := taRightJustify renders Caption with slight right margin?

我正在转换一个 2005 年的旧遗留程序。它使用许多 Panel.Caption 字段来存储输出。所有面板都设置为 taRightJustify。标题靠右边缘非常紧。

作为快速修复,我尝试设置 border=4,起初我认为这就是解决方案。它给出了内部右边距的视觉外观。但是,带有下行字母的字符,例如 "g、y 和逗号。

所以我正在寻找修改 Panel.Caption 属性 的方法,因此当面板设置为 taRightJustify 时,标题文本的右边缘和面板的内部右边缘。

我想只在标题文本的末尾添加一个 space,但有很多地方的标题文本实际上是数值,添加额外的 space 会导致代码变化超出了它的价值。

您可以通过更改绘制标题文本的代码来修改 TPanel 显示其标题的方式...但您可能不想实际更改该代码。

实际上,您可以做的是创建一个简单的自定义控件,它是一个 TPanel,其中包含另一个受保护的 TPanel。内部面板的属性应使用 ParentColor := true 无斜角,与客户端对齐(因此它填充外部面板)并按照@Uwe Raabe 的建议设置正确的边距和 AlignWithMargins。

覆盖标题的声明 属性 以便在访问它时访问内部面板的标题。

覆盖 ShowCaption 属性 的声明,使外部面板 ShowCaption 始终为 False,设置 属性 更改内部面板上的 ShowCaption 属性。

使用“搜索和替换”将所有 TPanels 更改为新派生的 class(您可以将自己的名字命名为 - 也许是 TPaddedPanel)。

要在 IDE 的表单设计器中使用新的 TPanel,您必须注册该组件。

有很多创建自定义组件的教程。 Ray Konopka 非常有经验,并且在以下位置提供了有关 VCL 组件的有用教程:https://edn.embarcadero.com/es/article/20569

我安装了 Konopka Signature VCL Controls 6.2.3。我决定使用 RzPanels 的 taRightJustify 设置关闭所有面板。 RzPanel 有一个 TextMargin 属性 可以满足我的需要。感谢 Ray Kanopka 将此功能合并到您的面板组件中。

https://delphibydesign.com/
https://raize.com/