如何修改Delphi面板以使对齐:=taRightJustify呈现略带右边距的标题?

如何修改Delphi面板以使对齐:=taRightJustify呈现略带右边距的标题?,delphi,margin,caption,Delphi,Margin,Caption,我正在转换一个2005年的旧遗留项目。它使用许多Panel.Caption字段来存储输出。所有面板都设置为taRightJustify。标题紧靠右边缘 作为一个快速解决方案,我尝试使border=4,起初我认为这将是解决方案。它给出了一个右内边距的视觉外观。但是,带有“g、y和逗号”等派生词的字符 因此,我正在寻找一种方法来修改Panel.Caption属性,这样当面板设置为taRightJustify时,标题文本的右边缘和面板的右内边缘之间有一点空白 我曾考虑在标题文本的末尾添加一个空格,但有

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

作为一个快速解决方案,我尝试使border=4,起初我认为这将是解决方案。它给出了一个右内边距的视觉外观。但是,带有“g、y和逗号”等派生词的字符

因此,我正在寻找一种方法来修改Panel.Caption属性,这样当面板设置为taRightJustify时,标题文本的右边缘和面板的右内边缘之间有一点空白


我曾考虑在标题文本的末尾添加一个空格,但有太多地方标题文本实际上是数值,添加额外的空格会导致代码发生超出其价值的更改。

您可以通过更改绘制标题文本的代码来修改TPanel显示标题的方式……但您需要很可能不想实际更改代码

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

重写Caption属性的声明,以便在访问该属性时,它正在访问内部面板的标题

重写ShowCaption属性的声明,以便外部面板ShowCaption始终为False,并且设置该属性会更改内部面板上的ShowCaption属性

使用Search and Replace,将所有Tpanel更改为新的派生类(您可以将自己的名称命名为TPaddedPanel)

要在IDE的窗体设计器中使用新的TPanel,必须注册组件


有很多创建自定义组件的教程。Ray Konopka经验丰富,有一个关于VCL组件的有用教程:

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



实现您想要的很容易,只是不需要面板标题。是否必须使用面板标题?如果面板在其父级中以某种方式对齐,您可以将AlignWithMargins设置为True,并将边距设置为Right(右)某个值(例如4)而其他页边距设置为0。从一个这样的面板的
.dfm
文件中提取一个片段可能会很有用,这样可以准确地查看您设置了什么属性以及如何设置。一个可能的欺骗可能是覆盖
绘制
方法。@DavidHeffernan不幸的是,是的。我试图避免必须更改所有已设置的元素e分散在旧的遗留代码中。