Tipp 0254 Proportional-Schriften erkennen
Autor/Einsender:
Datum:
  Andreas ten Pas
14.07.2002
Entwicklungsumgebung:   VB 5
Das Erkennen von Proportional-Schriften ist z.B. für Listen notwendig, um Einträge exakt ausrichten zu können. Bei einer Nicht-Proportional-Schrift sind alle Zeichen gleich breit, wogegen bei einer Proportional-Schrift die einzelnen Buchstaben unterschiedliche Breiten haben.
Mit der Methode TextWidth ist dies recht einfach möglich in dem bei einer Schrift das breiteste Zeichen z.B. das große "W" oder "M" mit dem schmalsten Zeichen dem "i" oder dem "l" verglichen wird. Allerdings ist TextWidth nur bei einigen wenigen Steuerelementen wie z.B. der PictureBox oder dem Printer-Objekt möglich.
Wie dies universell mit einem kleinen Trick möglich ist, zeigt unser Tipp.
 
Option Explicit

Private Sub Form_Load()
  Dim a As Integer

  For a = 0 To Screen.FontCount - 1
    List1.AddItem Screen.Fonts(a)
  Next a
End Sub

Private Sub List1_Click()
  Label1.FontName = List1.List(List1.ListIndex)

  If IsProportionalFont() = True Then
    Label2.ForeColor = &H8000&
    Label2.Caption = "Ich bin eine Proportional-Schrift, " & _
       "da meine Schrift Zeichen unterschiedliche Breiten haben."
  Else
    Label2.ForeColor = &HC0&
    Label2.Caption = "Ich bin keine Proportional-Schrift, " & _
       "da alle meine Zeichen die gleiche Breite haben."
  End If
End Sub

Private Function IsProportionalFont() As Boolean
  Dim lblWidth(2) As Integer

  Picture1.FontName = Label1.FontName
  lblWidth(0) = Picture1.TextWidth("W")
  lblWidth(1) = Picture1.TextWidth("i")

  If lblWidth(0) <> lblWidth(1) Then
    IsProportionalFont = True
  Else
    IsProportionalFont = False
  End If
End Function
 
Weitere Links zum Thema
Bildschirm- und Drucker-Schriftarten ermitteln
Schriftgröße und Zeichenbreite einer Schrift ermitteln

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3 kB) Downloads bisher: [ 783 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 9. September 2011