Rubrik: Controls · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 16.01.03 |
Wortumbruch im Label-Control verhindern Ein kleiner Trick - und der Inhalt eines Label-Controls wird nicht mehr autom. abgeschnitten. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.942 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vielleicht kommt Ihnen folgendes Szenario bekannt vor
Auf der Form befindet sich ein einzeiliges Label-Control, das bestimmte Daten (Texte) erst zur Laufzeit anzeigt. Zwar dachten Sie, dass die zur Entwurfszeit festgelegte Breite immer ausreichen würde, doch auf einmal sollen Daten angezeigt werden, die nicht mehr ins Label-Control passen. Das wäre jetzt auch nicht ganz so tragisch, würden die Daten wenigstens in der gesamten zur Verfügung stehende Breite angezeigt. Was manchmal aber dabei herauskommen kann, macht nachfolgende Abbildung deutlich:
Angezeigt werden sollte eigentlich folgendes: 00001, Otter Dieter, 97708 Bad Bocklet/Steinach
Kurios - oder? Warum zeigt das Label nicht wenigstens noch "Bad Bocklet" an? Hätte doch noch reingepasst
Grund ist der, dass das Label den Text nach dem letzten darstellbaren Leerzeichen umbricht! Und nicht etwa wie gewünscht den Text nach der Maximalbreite abschneidet.
Abhilfe schafft hier folgender Trick: Wir ersetzen ALLE Leerzeichen im Text durch Leerzeichen Ja richtig gelesen: Leerzeichen. Zumindest meint der Anwender es seien Leerzeichen. Intern verwenden wir aber das "Whitespace"-Zeichen mit dem Ascii-Code 160 Für das Label-Control ist das dann kein Leerzeichen und wenn der Text überhaupt keine Leerzeichen enthält, dann verhält sich das Label-Control genau so wie wir uns das wünschen. Es schneidet den Text am Ende der verfügbaren Breite ab:
Label1.Caption = Replace(sText, Chr$(32), Chr$(160))