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.428 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||||
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. |