vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  25.221 
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!
 

Dieser Tipp wurde bereits 25.221 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel