Haben Sie sich auch schon oft über das VB-Button-Control geärgert? Und zwar immer dann, wennman gerne ein Bildsymbol innerhalb des Buttons anzeigen möchte - aber nicht überhalb der Button-Beschriftung, sondern links oder rechts davon. Nachfolgend ein Trick, um einen Standard CommandButton mit Bildern auszustatten: Zunächst werden folgende API-Deklarationen benötigt, um die Beschriftung des Buttons links oder rechts anzuzeigen. Am besten Sie "packen" nachfolgenden Code in ein Modul: Option Explicit ' zunächst die benötigten API-Deklarationen ' für die Ausrichtung der Button-Beschriftung Public Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Public Const GWL_STYLE = (-16) Public Const BS_TOP = &H400 Public Const BS_VCENTER = &HC00 Public Const BS_BOTTOM = &H800 Public Const BS_LEFT = &H100 Public Const BS_CENTER = &H300 Public Const BS_RIGTH = &H200 Im Form_Load-Ereignis der Form, auf welcher der Button plaziert ist, muss dann folgender Code ausgeführt werden: Private Sub Form_Load() Dim n As Long ' Richtet den Text links aus n = GetWindowLong(Command1.hwnd, GWL_STYLE) n = n Or BS_LEFT ' Um den Text z.B. rechtsbündig auszurichten, ' muss BS_LEFT entsprechend ersetzt werden, ' z.B. n = n Or BS_RIGHT ' Hier die möglichen Varianten ' BS_TOP = Oberkante ' BS_VCenter = Vertikalzentrieren ' BS_BOTTOM = Unterkante ' BS_LEFT = Links ' BS_CENTER = Mitte ' BS_RIGHT = Rechts SetWindowLong Command1.hwnd, GWL_STYLE, n End Sub Damit das Bild auch schön so bleibt muss beim Klicken auf den Button der Focus umgesetztwerden! Private Sub Command1_Click() ' Damit das Bild auch schön so bleibt muss beim Klicken ' auf den Button der Focus umgesetzt ' Der Button sollte auch nicht das erste Control in der ' TabIndex-Reihenfolge sein! Command1.Enabled = False Me.SetFocus Command1.Enabled = True End Sub Dann muss man eigentlich nur noch eine Picturebox auf den Button plazieren und das gewünschte Bildsymbol aussuchen. Für die Picturebox setzt man am besten folgende Eingenschaften: BorderStyle = 0 - kein Appearance = 0 - 2D Wenn man möchte kann man mit Command1.Enabled (TRUE or FALSE) prüfen, ob es ein buntes oder graues Bild angezeigt werden soll/muss. Je nach Status kann man dann das entsprechende Bildsymbol der PictureBox zuordnen, z.B.: ' inaktiver Zustand des Buttons If Command1.Enabled = False Then LoadPicture(App.Path & "\Bildgrau.gif") End If
Fertig - viel Spass beim klicken! Dieser Tipp wurde bereits 24.908 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |