vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB4, VB5, VB622.08.01
Bild im Button (links oder rechts)

Mit einem kleinen Trick lässt sich in einem VB-CommandButton ein Bild rechts oder links vom Text anzeigen.

Autor:   Ronny HasseBewertung:  Views:  24.907 
www.mspsoftware.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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

Und so könnte Ihr
neuer Button aussehen
Buttons mit Bildern

Fertig - viel Spass beim klicken!
 



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.