ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 06.10.1999

Diese Seite wurde zuletzt aktualisiert am 06.10.1999
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_labelkorsett@aboutvb.de

Schön und praktisch ist die AutoSize-Eigenschaft des Label-Steuerelements, die dafür sorgt, dass es seine Größe immer dem darin enthaltenen Text anpasst. Auch schön und arbeitsparend ist, dass das Label die notwendigen Zeilenumbrüche selbst ermittelt, wenn Sie es mit einem überlangen Text füttern und die Eigenschaft WordWrap gleich True setzen. Weniger schön ist dagegen, dass es seine Breite willkürlich ändert, wenn Sie diese vorgeben und anschließend mit einem AutoSize = True für die Anpassung der Höhe an die tatsächlich benötigte Zeilenzahl sorgen wollen. Das Label wird immer um ein paar Buchstabenbreiten breiter werden, falls Sie nicht zufällig einen ihm genehmen Wert wählen. Das Einpassen in einen vorgegebenen Raum, etwa in eine PictureBox, wird so zum Glücksspiel - das jedes Mal aufs Neue beginnt, wenn Sie den Raum oder auch nur die Schriftart, -größe usw. des Labels ändern wollen.


Zwingen Sie ein mehrzeiliges Label-Steuerelement in eine vorgegebene Breite - dann können Sie auch die Zeilen zählen

Es führt kein Weg daran vorbei, ausgehend von der gewünschten Breite diese so lange zu vermindern, bis das Label sich damit einverstanden erklärt und sich nicht mehr eigenwillig verbreitert. Dazu verringern Sie Schritt für Schritt in einer Do...Loop-Schleife eine Vergleichsbreite ausgehend von der Zielbreite, setzen jeweils die AutoSize-Eigenschaft des Labels auf False, weisen ihm die jeweils neue Vergleichsbreite zu und setzen AutoSize wieder auf True zurück. Erst wenn die Breite des Labels nicht mehr von alleine die gewünschte maximale Breite überspringt, wird die Schleife verlassen bzw. nicht weiter durchlaufen. Sie wird ebenfalls verlassen, wenn die Vergleichsbreite gleich oder kleiner als Null geworden ist, damit die Schleife nicht endlos läuft oder in einen Laufzeitfehler bei der Zuweisung einer negativen Breite mündet - dieser letztmögliche Ausstieg aus der Schleife bedeutet allerdings auch einen Fehlschlag des Verfahrens. Damit dieses Versuch-und-Irrtum-Verfahren nicht in störendes Flackern ausartet, machen Sie das Label am besten vorher unsichtbar und hinterher wieder sichtbar.

Dim nLabelWidth As Single
Dim nPicScaleWidth As Single

With picLabelBack
  nLabelWidth = .ScaleWidth
  nPicScaleWidth = nLabelWidth
  With lbl2Size
    .Visible = False
    .WordWrap = True
    Do While .Width > nPicScaleWidth
      nLabelWidth = nLabelWidth - Screen.TwipsPerPixelX
      .AutoSize = False
      .Width = nLabelWidth
      .AutoSize = True
      If nWidth <= 0 Then
        Exit Do
      End If
    Loop

Nun können Sie das Label auch noch, falls gewünscht, innerhalb der Zielbreite exakt zentrieren:

    If chkCentered.Value Then
      .Left = (nPicScaleWidth - .Width) \ 2
    Else
      .Left = 0
    End If
    .Visible = True
  End With

Und so erfahren Sie zum Schluss, zu wie vielen Zeilen der automatische Wortumbruch nun geführt hat:

Dim nOldPicFont As StdFont

  Set nOldPicFont = .Font
  Set .Font = lbl2Size.Font
  lblLinesCount.Caption = lbl2Size.Height \ .TextHeight("A")
  Set .Font = nOldPicFont
End With


Beispiel-Projekt LabelSizeTest (adjlabel.zip - ca. 2,5 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer