![]() |
ClientArea von TGroupBox modifizieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
gelegentlich möchte ich gerne eine TGroupBox Komponente mit leerer Caption verwenden, um GUI Elemente zu gruppieren. Leider entsteht dann beim Enfügungen von Komponenten mit z.b.
Delphi-Quellcode:
=
Align
Delphi-Quellcode:
auf der Oberseite ein recht hässlicher Rand (siehe Screenshot), da trotzdem Platz für die Caption reserviert wird.
alClient
Gibt es eine einfache Möglichkeit die Client-Area der TGroupBox Komponente zu modifizieren? Viele Grüße Zacherl |
AW: ClientArea von TGroupBox modifizieren?
Hmm..
Ist die GroupBox nicht ein Panel mit zusätzlicher Textzeile im Kopf? Würde sich da nicht die Verwendung von TPanel statt TGroupBox mit BevelInner := bvLowered anbieten? Ansonsten müsstest Du Dir eine eigene GroupBox ableiten und das Paint überschreiben. |
AW: ClientArea von TGroupBox modifizieren?
Zum Gruppieren nutze ich immer TPanel mit BevelInner und BevelOuter = bvNone.
Wenn ich 'nen kleinen, aber gleichmäßigen, Rand um die guppierten Elemente haben möchte, setze ich BorderWidth auf 2 oder 4. Lässt man die BorderWidth auf 0, sieht man in der Oberfläche nicht, dass da ein Panel benutzt wird. |
AW: ClientArea von TGroupBox modifizieren?
Zitat:
Das Panel mit Rand zum Gruppieren von Komponenten hat aber den Nachteil, dass die Ecken nicht abgerundet sind wie bei der GroupBox. |
AW: ClientArea von TGroupBox modifizieren?
Naja, vielleicht bin ich ja altmodisch, aber Ecken sind bei mir eckig ;-)
Quatsch: Die Panels sind immer so angeordnet, dass sie zwar die daraufliegenden Komponenten gruppieren, aber ansonsten unsichtbar sind. Für den Anwender ist die technische Gruppierung mit Panels nicht erkennbar, sondern nur die funktionale / fachliche Gruppierung. Für kleine Abstände zwischen den Gruppen sorge ich dann mit BorderWidth, sofern erforderlich. |
AW: ClientArea von TGroupBox modifizieren?
Zitat:
|
AW: ClientArea von TGroupBox modifizieren?
Zitat:
Erfordert schon einigen Aufwand. gruss |
AW: ClientArea von TGroupBox modifizieren?
Alles klar, danke euch!
Dann werde ich vorerst weiterhin meinen Workaround verwenden. Hierzu platziere ich in der GroupBox zuerst noch ein Panel ohne Rand, welches ich manuell positioniere und danach Right und Bottom zu den Anchors hinzufüge. |
AW: ClientArea von TGroupBox modifizieren?
Du kannst es mit folgender Interposer-Class erreichen:
Delphi-Quellcode:
type
TGroupBox = class(Vcl.StdCtrls.TGroupBox) protected procedure AdjustClientRect(var Rect: TRect); override; end; procedure TGroupBox.AdjustClientRect(var Rect: TRect); begin inherited AdjustClientRect(Rect); Canvas.Font := Font; Dec(Rect.Top, Canvas.TextHeight('0')); end; |
AW: ClientArea von TGroupBox modifizieren?
"Interposer-Class"
... das is cool und kannte ich bisher so noch nicht, da mache ich gleich ein paar Konzeptversuche mit Sachen die mich bei TMS noch nerven und ich bisher immer direkt in deren Source gepatcht habe, was aber viel Aufwand ist, denn ich muss es bei jeder neuen Version bisher immer manuell nachführen. Das könnte mir die Arbeit bei TMS Updates zukünftig erleichtern:) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz