GLnB: Group, Label & Button
Eigenschaften (Details):
Typen sind dort angegeben, wo sie nicht durch den Eigenschaftsnamen eindeutig sind.
Neben den unten aufgeführten Eigenschaften verfügt GLnB über alle Eigenschaften von TLabel. Der Vorfahre ist TGraphicControl.
(#: Eigenschaften, die sich anders verhalten als in TLabel.)
public
- # Alignment
s. Autosize- AlignmentVertical (avTop, avCenter, avBottom)
Vertikale Ausrichtung des Textes innerhalb des Bereiches von FrameText. Wird nur auf einzeilige Texte angewendet. S. AutoSize.- # AutoSize
Bei TLabel bewirkt AutoSize ein 'SetBounds', d.h. eine Anpassung der Komponentengröße auf die Größe der Textausgabe.
Bei TGLnB wird nicht die Größe der Komponente, sondern nur die Größe des Textbereiches innerhalb der Komponente (FrameText) angepaßt. Bereiche, die nicht in die Komponente passen, werden daher auch nicht angezeigt. Andererseits kann die Komponente auch bei AutoSize:=True größer sein als die eigentliche Textausgabe.
Alignment und AlignmentVertical beziehen sich in gleicher Weise auf den Bereich von FrameText anstelle von Canvas.
Für weitere Besonderheiten s. FixMargin.- BorderStyle
Von TWinControls bekannte Option eines äußeren Rahmens.- Ctl3D
Von TWinControls bekannte Option eines 3D-Effekts um die Komponente.- FrameBack/Text/Top...: TFrameShape
Drei umrahmte Ebenen innerhalb der Komponente. Unter ihnen liegt zunächst der Komponentenhintergrund, wie er durch die bekannten TLabel-Eigenschaften (Color, Transparent, etc.) bestimmt wird. Darüber folgt FrameBack, dann FrameText mit der Textausgabe (Caption, Font, etc.), und zuoberst FrameTop.
Im einfachsten Fall (Default) sind sie alle durchsichtig und besitzen (und behalten bei Größenänderungen) einen Randabstand von 0. Dann verhält sich TGLnB fast wie ein TLabel.
Jede dieser Ebenen kann jedoch mit den folgenden Eigenschaften individuell gestaltet, ausgerichtet, sogar als Dialogelement verwendet werden:
- ButtonState: set of (bsRounded, bsDown, bsInvertDown, bsFocused, bsEnabled, bsSwitch)
bsRounded, bsDown, bsInvertDown, bsFocused: Mögliche Zustände der Ebene bei einer Darstellung als Button (s. Style). Mit bsInvertDown wird im Zustand bsDown die Fläche des Button invertiert.
Hinweis bsFocused: Dieser Zustand ist nur eine Gestaltungsoption! TGLnB kann als TGraphicControl wie auch ein TSpeedButton keinen Tastaturfokus erhalten.
bsEnabled, bsSwitch: Mit bsEnabled wird die Ebene als Button aktiviert und reagiert automatisch auf Knopfdrücke (bsDown wird gesetzt/gelöscht). Mit bsSwitch wird eine Arbeitsweise als Schalter (An/Aus) festgelegt, ohne arbeitet sie als Taster (An/An).- Color2D
Rahmenfarbe für 2D-Stile ohne bsDown.
Die Farbe der oberen und linken Seite bei 3D-Stilen. Die äußere Farbe der oberen und linken Seite bei fsFrame. Bei bsDown umgekehrt.- Color3D
Die Farbe der unteren und rechten Seite bei 3D-Stilen. Die äußere Farbe der unteren und rechten Seite bei fsFrame. Bei bsDown umgekehrt.
Rahmenfarbe für 2D-Stile mit bsDown.- FixMargin: set of (fmTop, fmLeft, fmBottom, fmRight)
Auf den gewählten Seiten hält der Rahmen seinen unter MarginX festgelegten Abstand zum Komponentenrand auch bei Größenänderungen der Komponente bei. Er macht demnach Größenänderungen mit.
Auf den nicht gewählten Seiten bleibt der Rahmen an seiner Position stehen, indem er seine Randeinstellungen auf die Größenveränderung der Komponente anpaßt. Sobald nur eine von zwei gegenüberliegenden Seiten nicht am Rand befestigt wird, behält der Rahmen auf dieser Achse seine Größe bei (z.B. fmLeft und/oder fmRight führen zu konstanter Breite).
Beispiel: Ein Rahmen mit fmLeft und fmTop wird immer mit gleicher Größe in der linken oberen Ecke der Komponente 'kleben' (z.B. bei MarginTop/Left:=0).
Dieses Verhalten zeigt sich sowohl zur Laufzeit als auch in der Entwicklungsumgebung und eignet sich daher ideal zur Schaffung von wiederkehrenden, größenunabhängigen Layouts.
Besonderheiten FrameText mit AutoSize: FixMargin beschränkt AutoSize auf den jeweils gewählten Seiten in der möglichen Ausdehnung des Textes. Auf diese Weise läßt sich AutoSize (auch in Verbindung mit Alignment/AlignmentVertical) noch differenzierter einsetzen.- MarginBottom/Left/Right/Top: Integer
Der Abstand zum jeweiligen Komponentenrand. Diese Werte bleiben konstant, wenn für die jeweilige Seite 'FixMargin' festgelegt wurde. Andernfalls führen Größenänderungen der Komponente zu automatischen Anpassungen dieser Werte. Die Werte können negativ sein, d.h., Teile des Frames können außerhalb des sichtbaren Bereiches liegen, was weitere Gestaltungsoptionen eröffnet.- Style: (bsAutoDetect, bsNew, bsWin31, fs2D, fs2DBordered, fs3D, fs3DBordered, fsFrame)
bsAutoDetect, bsNew, bsWin31: Die von TBitBtn bekannten Stile. Wie auch die anderen Stile mit gestaltbarer Oberfläche (s. Surface), Attributen/Funktionsweise (s. ButtonState) und Randstärke (s. Width).
fs2D, fs2DBordered: Einfacher Rahmen in der Farbe Color2D, bei bsDown in Color3D. Als fs2DBordered mit zusätzlicher schwarzer Umrandung.
fs3D, fs3DBordered: 3D-Rahmen, unten und rechts in Farbe Color3D, oben und links in Color2D, bei bsDown umgekehrt. Als fs3DBordered zusätzlich mit schwarzer Umrandung.
fsFrame: 3D-Rahmen, mit einfacher äußerer Umrandung wie Stil fs3D und nach innen je nach Randstärke (s. Width) fortgesetzter Umrandung mit umgekehrter Farbzuordnung.- Surface: TSurface
Die Oberfläche jedes Rahmens läßt sich in verschiedener Weise einfärben:
- Color
Die Farbe oder Hintergrundfarbe (bei gewähltem 1-Bit-Pattern) der Oberfläche.- Pattern: TBitmap
Ein 8x8 Bitmap (aus .BMP einlesbar) für gemusterte Oberflächen. Ein Muster mit 16 Farben wird unverändert ausgegeben, ein 1-Bit-Muster wird mit Color (Hintergrund) und PatternColor (Vordergrund) eingefärbt.- PatternColor
Vordergrundfarbe für 1-Bit-Muster.- Style: (ssSolidOrPattern, ssTransparent, ssShadow)
ssSolidOrPattern: Enthält Pattern Bitmap-Daten, wird die Oberfläche aus ihnen erzeugt. Sonst wird die Oberfläche in Color ausgegeben.
ssTransparent: Es wird keine Oberfläche für diesen Rahmen erzeugt. Lediglich die Umrandung wird ausgegeben.
ssShadow: Es wird keine Oberfläche für diesen Rahmen erzeugt, jedoch der durchscheinende Hintergrund wird schattiert dargestellt.- Width
Breite (Randstärke) des Rahmens.- LinkList: TLinkList
Persistente Liste verbundener Komponenten. In der Entwicklungsumgebung bequem mit Editoren zu bearbeiten (Aufruf: Doppelklick im Objektinspektor / auf Komponente oder über ihr Kontextmenü (Links)).
Derzeit keine Wirkung zur Laufzeit, kann jedoch gelesen werden. (TLinkList ist ein Nachkomme von TStringList. Daher können verbundene Komponenten über die Objects-Eigenschaft bzw. mit IndexOfObject ermittelt werden.)
IDE-Verhalten:
Die mit einem GLnB verbundenen Komponenten machen alle mausgesteuerten Positionsänderungen des GLnB mit. Sobald das GLnB mit der Maus aufgenommen wird, werden auch die verbundenen Komponenten aufgenommen. Dafür ist keine vorherige Gruppenmarkierung oder ähnliches erforderlich und die Verbindungen sind dauerhafter Bestandteil des Formulars!
Dieses Verhalten überträgt sich auch auf verkettete GLnBs und deren Verknüpfungen!
Wird während des Loslassens der Maus die Shift- oder Strg-Taste festgehalten, bleiben die verbundenen Komponenten markiert und es können anschließend mit Shift-Klick weitere Markierungen hinzugefügt werden.
Tastaturpositionierungen können weiterhin wie gewohnt vorgenommen werden.
Zwecke:
1. Erstellung von Kombinationskomponenten z.B. aus Label und Editierfeld oder Button und Bitmap.
2. Gruppierung von Komponenten, ohne Nebeneffekte von TGroup (Ressourcen, Komponenten müssen innerhalb liegen, werden Child von TGroup).- ParentControl: TWinControl
Vorsicht: Diese Eigenschaft verlangt einige Erfahrung mit Windows-Konzepten!
Für spezielle Zwecke kann ein GLnB vollständig in ein TWinControl (z.B. TTabSet) integriert werden, indem dieses als ParentControl zugewiesen wird. Nach der Zuweisung liegt es innerhalb seines ParentControl.
Hinweis: Positionseinstellungen (Top, Left) werden nicht verändert! Es empfiehlt sich das GLnB schon im Formular auf Koordinaten zu plazieren, die auch im sichtbaren Bereich des gewünschten ParentControl liegen.- TransparentText: Boolean
Normalerweise wird Text mit transparenten Zwischenräumen ausgegeben, wodurch der normale Hintergrund sichtbar wird. Ist dieser jedoch ein Bitmap-Muster oder ein hinterlegtes Bitmap, kann der Text schwer lesbar werden. Mit TransparentText:=False werden Textzwischenräume - unabhängig von den sonstigen Einstellungen in FrameText.Surface - mit FrameText.Surface.Color ausgefüllt.Neue Ereignisse:
- OnBefore/AfterPaint
Unmittelbar vor und nach dem Neuzeichnen des GLnB werden diese Ereignisse ausgelöst. So können zusätzliche, programmgesteuerte Maßnahmen (z.B. eigene Ausgaben in Canvas) mit dem Neuzeichnen der Komponente verbunden werden.Neue Methoden:
- procedure DrawFrame(Var Client: TRect; Color2D,Color3D: TColor ; BevelWidth: Integer; Style: TFrameStyle; IsRounded, IsDown, IsFocused: Boolean)
Die Methode, welche GLnB zur Ausgabe eines Rahmens innerhalb des Komponenten-Canvas benutzt. Die Parameter entsprechen den Komponenteneigenschaften (TFrameShape).- procedure DrawSurface(Const Frame: TFrameShape; Var Client: TRect)
Die Methode, welche GLnB zur Ausgabe einer Oberfläche benutzt. Die Parameter entsprechen den Komponenteneigenschaften.- function FrameShapeRect(Var Frame:TFrameShape):TRect
Funktion zur Ermittlung des Rechteckes des übergebenen Rahmens (FrameBack, FrameText, FrameTop). Mit dieser Funktion kann z.B. bei einem Mausereignis auch programmgesteuert ermittelt werden, welcher Rahmen angeklickt wurde.Editoren:
- TLinkListEditor
- TLinkListComponentEditor