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 17.816 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren [email protected]! - 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. |
sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. 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. |
||||||||||||||||
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. |