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:
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 18.274 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. 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... |
||||||||||||||||
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. |