AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClientArea von TGroupBox modifizieren?

Ein Thema von Zacherl · begonnen am 13. Jan 2017 · letzter Beitrag vom 14. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 19:20
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. Align = alClient auf der Oberseite ein recht hässlicher Rand (siehe Screenshot), da trotzdem Platz für die Caption reserviert wird.

Gibt es eine einfache Möglichkeit die Client-Area der TGroupBox Komponente zu modifizieren?

Viele Grüße
Zacherl
Miniaturansicht angehängter Grafiken
groupbox.png  
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#2

AW: ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 19:23
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.

Geändert von HolgerX (13. Jan 2017 um 19:25 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 19:47
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.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#4

AW: ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 20:03
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.
Ähnlich mache ich das auch.

Das Panel mit Rand zum Gruppieren von Komponenten hat aber den Nachteil, dass die Ecken nicht abgerundet sind wie bei der GroupBox.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 20:14
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.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: ClientArea von TGroupBox modifizieren?

  Alt 13. Jan 2017, 21:05
Naja, vielleicht bin ich ja altmodisch, aber Ecken sind bei mir eckig
Du weißt doch was ich meine
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: ClientArea von TGroupBox modifizieren?

  Alt 14. Jan 2017, 02:32
Zitat:
Gibt es eine einfache Möglichkeit die Client-Area der TGroupBox Komponente zu modifizieren?
Einfach (schnell) denke ich mal nicht.
Erfordert schon einigen Aufwand.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: ClientArea von TGroupBox modifizieren?

  Alt 14. Jan 2017, 02:39
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#9

AW: ClientArea von TGroupBox modifizieren?

  Alt 14. Jan 2017, 12:45
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#10

AW: ClientArea von TGroupBox modifizieren?

  Alt 14. Jan 2017, 13:07
"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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz