|
Scheinbar unverrückbar sind die Beschriftungen von
Steuerelementen wie CommandButton, CheckBox, Option und Frame
angeordnet. Sie vermuten ganz richtig, dass dem schließlich doch
nicht so ist.
Die Anordnung der Beschriftung zählt nämlich zu den sogenannten
Fensterstilen, die Sie über das Gespann der API-Funktionen GetWindowLong
und SetWindowLong
manipulieren können. Mit GetWindowLong lesen Sie den aktuellen
Fensterstil aus, verknüpfen dessen Wert mit der Konstanten für die
gewünschte Ausrichtung der Beschriftung, und schreiben ihn wieder
mit SetWindowLong zurück. Bei einem CommandButton können Sie
beispielsweise die Beschriftung so an der Oberkante zentriert
ausrichten:
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) _
As Long
Private Const GWL_STYLE = (-16)
Private Const BS_TOP = &H400
Private Const BS_VCENTER = &HC00
Private Const BS_BOTTOM = &H800
Private Const BS_LEFT = &H100
Private Const BS_CENTER = &H300
Private Const BS_RIGTH = &H200
'...
Dim nWindowLong as Long
nWindowLong = GetWindowLong(Command1.hwnd, GWL_STYLE)
nWindowLong = nWindowLong Or BS_TOP
SetWindowLong Command1.hwnd, GWL_STYLE, nWindowLong
Command1.Refresh
Wie Sie aus der kleinen Animationsgrafik ersehen können, wirkt
sich die Änderung der Ausrichtung bei CheckBoxen und Optionen nicht
nur auf die eigentliche Beschriftung, sondern auch auf die Anordnung
des Check- bzw. Options-Elements aus. Je nach voreingestellter
Ausrichtung der Visual Basic-Eigenschaft Alignment gibt es leichte
Unterschiede in der Darstellung. Bei der in der Animation
dargestellten Checkbox ist die Alignment-Eigenschaft auf 0 (Links
ausgerichtet), bei der Option auf 1 (Rechts ausgerichtet)
eingestellt. Außerdem bleiben die Stile Oben-Mitte und Unten-Mitte
ohne Wirkung. Auch beim Frame-Steuerelement zeigen nicht alle Stile
Wirkung. Hier sind es nur die Stile Links, Zentriert und Rechts.
Ändern Sie die Ausrichtung eines dieser Steuerelemente mehrmals
nachträglich, sollten Sie die vorherige Ausrichtung löschen.
Anderenfalls bekommen Sie immer neue Kombinationen der Stile und es
wird leicht unübersichtlich, welcher Stil eigentlich gerade gesetzt
ist. Die Löschung erreichen Sie, indem Sie den Stil mit der
Negation der Kombination aller Stile maskieren. Damit Sie diese
Löschung und die Kombination der Stile nicht jedes Mal aufs neue
vornehmen müssen, packen Sie das ganze am besten in eine kleine
Funktion in einem Standard-Modul. Dieser übergeben Sie das
betreffende Steuerelement und den gewünschten Ausrichtungsstil als
vorbereitete Konstante.
Public Const capAlignNone = 0
Public Const capAlignCenter = BS_CENTER
Public Const capAlignLeftTop = BS_LEFT Or BS_TOP
Public Const capAlignTop = BS_TOP
Public Const capAlignRightTop = BS_RIGHT Or BS_TOP
Public Const capAlignRight = BS_RIGHT
Public Const capAlignRightBottom = BS_RIGHT Or BS_BOTTOM
Public Const capAlignBottom = BS_BOTTOM
Public Const capAlignLeftBottom = BS_LEFT Or BS_BOTTOM
Public Const capAlignLeft = BS_LEFT
Public Function CaptionAlign(Control As Control, _
Optional ByVal Alignment As Long)
Dim nWindowLong As Long
Dim nClear As Long
Const kAll& = BS_TOP Or BS_VCENTER Or BS_BOTTOM Or BS_LEFT _
Or BS_CENTER Or BS_RIGHT
nClear = Not kAll
With Control
nWindowLong = GetWindowLong(.hwnd, GWL_STYLE)
nWindowLong = (nWindowLong And nClear) Or Alignment
SetWindowLong .hwnd, GWL_STYLE, nWindowLong
.Refresh
End With
End Function
 |
Die Funktion CaptionAlign verpackt das
Setzen der Ausrichtungsstile für den handlichen Aufruf

|

|