Autor Beitrag
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 02.04.03 12:04 
Möchte man ein Verzeichnis zum Beispiel in einem Label darstellen kann es passieren das der komplette Pfad von der Länge her nicht im Label dargestellt werden kann..

Seit Delphi 3 gibt es dafür die undokumentierte Funktion MinimizeName aus der Unit FileCtrl.pas. Diese Funktion kümmert sich darum den Pfad entsprechend verkürzt darzustellen. Zur Berechnung der maximal anzeigbaren Buchstabenzahl für den verkürzten Pfad benötigt die Funktion die Canvas (und damit die für diese Canvas eingestellte Schriftart), auf der der Text ausgegeben werden soll und die Breite des Ausgaberechtecks.

Die Verkürzung eines Verzeichnisses kann dann zum Beispiel so aussehen:
Zitat:
F:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung

wird zu
Zitat:
F:\...\Programme\Verwaltung

Der folgende Aufruf demonstiert den Aufruf der Funktion MinimizeName:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Var
  PathName: String;
Begin
  PathName := 'F:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung';

  Label1.Caption := MinimizeName (
      PathName,      { Der abzukürzende Pfad }
      Label1.Canvas, { Die Referenz-Zeichenfläche }
      Label1.Width   { Die maximale Ausgabe-Breite }
    );
End;

Wichtig dabei ist das die Eigenschaft des Labels AutoSize auf False steht.