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 24.05.2000

Diese Seite wurde zuletzt aktualisiert am 24.05.2000
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...

Maßschneiderei

Zurück...


Anzeige

(-hg) mailto:hg_ellipsis@aboutvb.de

Was tun, wenn ein String zu lang ist, um in eine vorgegebene Breite zu passen? Eine Möglichkeit wäre, den String in einer Schleife so lange um ein Zeichen zu verkürzen, bis er passt. Da im allgemeinen eine solche Verkürzung durch Auslassungspunkte ("Ellipsis") angedeutet wird, müssten Sie die Punkte auch noch bei der Berechnung berücksichtigen. Besonders elegant und schnell ist das jedoch nicht.

Viel schneller und perfekt wird die Aufgabe von der API-Funktion MSDN Library - API DrawTextDrawText erledigt. Das ist zwar eigentlich eine Zeichen-Funktion zur Ausgabe von Text. Sie kann aber auch lediglich einen String so kürzen und zugleich mit Auslassungspunkten versehen, so dass er in die vorgegebene Breite passt. In der Regel werden die Auslassungpunkte lediglich angehängt. Bei Strings, die eine Pfadangabe darstellen (genauer gesagt, bei Strings, die das Zeichen "\" enthalten), werden die Auslassungspunkte möglichst so innerhalb des Strings eingesetzt, dass noch möglichst viel und sinnvoll vom Ende der Pfadangabe zu erkennen ist. Sie dürften dieses Erscheinungsbild mindestens aus Menüs kennen, die die Auswahl zuletzt bearbeiteter Dateien anbieten.

Die beiden Hilfsfunktionen ShortenPath und ShortenString kapseln die Aufrufe von DrawText und samt der notwendigen Parameter. Sie übergeben den Gerätekontext (Eigenschaft hDC beispielsweise eines Forms), den anzupassenden String und die Breite (in Pixels!), in die der String eingepasst werden soll. Der Rückgabewert der Funktionen enthält dann den angepassten String. Reicht die vorgegebene Breite aus, um den String komplett darzustellen, wird er natürlich nicht modifiziert.

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Declare Function DrawText Lib "user32" _
 Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, _
 ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) _
 As Long

Private Const DT_PATH_ELLIPSIS = &H4000
Private Const DT_END_ELLIPSIS = &H8000
Private Const DT_MODIFYSTRING = &H10000
Private Const DT_SINGLELINE = &H20

Public Function ShortenPath(ByVal hDC As Long, _
 ByVal Path As String, ByVal Width As Long) As String

  Dim nRect As RECT
  Dim nPos As Long
  Dim nPath As String
  
  nRect.Right = Width
  Path = Path & Chr$(0)
  DrawText hDC, Path, -1, nRect, _
   DT_MODIFYSTRING Or DT_SINGLELINE Or DT_PATH_ELLIPSIS
  nPos = InStr(Path, Chr$(0))
  If nPos Then
    ShortenPath = Left$(Path, nPos - 1)
  Else
    ShortenPath = Path
  End If
End Function

Public Function ShortenString(ByVal hDC As Long, _
 ByVal Str As String, ByVal Width As Long) As String

  Dim nRect As RECT
  Dim nPos As Long
  Dim nPath As String
  
  nRect.Right = Width
  Str = Str & Chr$(0)
  DrawText hDC, Str, -1, nRect, _
   DT_MODIFYSTRING Or DT_SINGLELINE Or DT_END_ELLIPSIS
  nPos = InStr(Str, Chr$(0))
  If nPos Then
    ShortenString = Left$(Str, nPos - 1)
  Else
    ShortenString = Str
  End If
End Function

Modul modEllipsis (modEllipsis.bas - ca. 1,6 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
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

Schnellsuche



Zum Seitenanfang

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

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer