GroupBoxのCaption表示を中央にする方法等ありますでしょうか?
検索してみましたが、良く方法がみつからなかったので、お願いします。
Panelを2つ使えばそれなりに似たものができますが、どうでしょうか(^^;
Caption用のPanelは枠なしにすれば・・・
そのFormのGroupBoxは全て変わります。
Formの宣言の前に下記を追加、usesにthemesを追加
TGroupBox = class(StdCtrls.TGroupBox)
protected
procedure Paint; override;
end;
実装部分は、まずStdCtrlsのTCustomGroupBox.Paintをコピー。
テーマ有効時のテキスト描画位置のCaptionRectを修正する。
if ThemeControl(Self) then
begin
if Text <> '' then
begin
ブロックの一番下に
OffsetRect(CaptionRect, Width div 2 - 8 - CaptionRect.Right div 2, 0);
を追加。
ThemeServices.DrawText(Handle, Details, Text, CaptionRect, DT_LEFT, 0);
を
のDT_LEFTをDT_CENTERに変更。
テーマ無効時のRを修正する。
Flags := DrawTextBiDiModeFlags(DT_SINGLELINE);
の行の前に
R := Rect(Width div 2 - Canvas.TextWidth(Text) div 2 - 8, 0, 0, H);
を追加、またDT_SINGLELINEをDT_SINGLELINE OR DT_CENTERに変更。
一応こんな感じで中央表示になりました。
ツイート | ![]() |