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 25.310 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. |
Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||||
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. |