vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB4, VB5, VB623.06.03
AutoSize für den Command-Button

Optimale Breite für einen Command Button einstellen.

Autor:   Roland WutzkeBewertung:     [ Jetzt bewerten ]Views:  16.758 
www.vb-power.netSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Angenommen Sie schreiben eine mehrsprachige Anwendung. Was machen Sie jetzt mit Ihren Command-Buttons auf der Form? Sie ermitteln durch testen mit den unterschiedlichen Sprachen die maximale Breite der Buttons, damit auch ja alles vernünftig angezeigt wird.

Oder Sie weisen dem Button zur Laufzeit einen dynamischen Text zu. Auch hier gilt: Testen, testen und wieder testen bis die richtige Breite gefunden ist.

Da der Command-Button keine AutoSize Eigenschaft wie z.B. das Label hat, bauen wir uns selber eine.

Die Funktion cmdAutoSize erwartet folgende Parameter:

  • oButton: Button, der eingestellt werden soll
  • Optional minTwips = 400: min. Breite, die nicht unterschritten wird (Twips)
  • Optional addTwips = 100: zusätzliche Breite für den Rand (Twips)
  • Optional oAlignment = b_Center: Ausrichtung des Buttons relativ zur alten Position

Der optionale Parameter oAlignment bestimmt die Ausrichtung des Buttons relativ zur alten Position auf der Form. Sie wird über die Aufzählung cmdAlignment festgelegt. Voreingestellt ist b_Center.

Da der Text i.d.R. durch einen TrueType Font dargestellt wird, müssen wir auch noch die schmaleren Buchstaben und Sonderzeichen wie "l i 1 . : , ;" usw. berücksichtigen. Das aber übernimmt die Funktion automatisch für Sie. Diese Zeichen werden mit 1/3 der Schriftbreite berechnet.

Fügen Sie nachfolgenden Code in ein Modul ein:

Option Explicit
 
Public Enum cmdAlignment
  b_Left = 0
  b_Right = 1
  b_Center = 2
End Enum
' Optimale Breite eines CommandButtons einstellen
Public Sub cmdAutoSize(oButton As CommandButton, _
  Optional minTwips As Long = 400, _
  Optional addTwips As Long = 100, _
  Optional oAlignment As cmdAlignment = b_Center)
 
  Dim aktSize As Single
  Dim tmpSize As Single
  Dim tmpWidth As Long
  Dim x As Long
 
  ' Variablen initialisieren
  aktSize = oButton.Font.Size
  tmpSize = 0
  tmpWidth = oButton.Width
 
  With oButton
    ' Schleife über die Länge des Caption Text
    For x = 1 To Len(.Caption)
      Select Case Mid$(.Caption, x, 1)
        ' Spezielle Zeichen ermitteln und 1/3 der Breite zur
        ' Berechnung in die Größen-Variable übertragen
        Case "!", "`", "´", "'", "|", ",", ";", _
             ".", ":", "1", "l", "i", "I", "f"
          tmpSize = tmpSize + (aktSize / 3)
 
        ' Alle anderen Zeichen mit der vollen Breite berechnen
        Case Else
          tmpSize = tmpSize + aktSize
      End Select
    Next x
 
    ' Ermittelte Größe in Twips umrechnen
    tmpSize = CLng(tmpSize * Screen.TwipsPerPixelX)
 
    ' Und jetzt den Butten einstellen. Dabei werden
    ' die Parameter minTwips und addTwips berücksichtigt.
    If (tmpSize + addTwips) > minTwips Then
      .Width = tmpSize + addTwips
    Else
      .Width = minTwips
    End If
 
    ' Und jetzt die Ausrichtung des Buttons relativ
    ' zur alten Position einstellen.
    Select Case oAlignment
      Case cmdAlignment.b_Left
        ' Wir machen nichts, denn Left ist Default...
      Case cmdAlignment.b_Right
        .Left = .Left - (.Width - tmpWidth)
      Case cmdAlignment.b_Center
        .Left = .Left - ((.Width - tmpWidth) \ 2)
    End Select
  End With
End Sub

Aufruf-Beispiel:

' Der Button wird mit den Standard Parameter 
' der Funktion eingestellt
Command1.Caption = "neuer Buttontext"
cmdAutoSize Command1

Oder:

' Der Rand soll mit 200 Twips berechnet werden 
' und die Ausrichtung wird auf Rechts gesetzt.
Command1.Caption = "neuer Buttontext"
cmdAutoSize Command1, , 200, b_Right

Oder:

' Der Button darf 1000 Twips nicht unterschreiten:
Command1.Caption = "neuer Buttontext"
cmdAutoSize Command1, 1000

Dieser Tipp wurde bereits 16.758 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-2019 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