Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TLabel mit hartem Umbruch (https://www.delphipraxis.net/185977-tlabel-mit-hartem-umbruch.html)

Shark99 23. Jul 2015 13:31

TLabel mit hartem Umbruch
 
Ich habe einen langen String mit Pfad/Dateinamen den ich auf begrenzten Raum darstellen will.

Ich hab zwar viel Platz in der Höhe, aber nur etwa 150 pixel in der Breite. TLabel schneidet mir also den Dateinamen einfach weg. Ich würde ihn aber gerne über mehrere Zeilen darstellen. Wordwrap kann ich nicht nehmen, weil es ja wie der Name sagt nur nach Wörtern in die nächste Zeile geht.

Hat jemand eine Idee mit welcher Komponente ich zum Ziel komme?

Klaus01 23. Jul 2015 13:40

AW: TLabel mit hartem Umbruch
 
Hallo,

ob ein Pfadname unbedinge lesbar ist, wenn er auf mehrere Zeilen umgebrochen wird?

Kannst Du nich den komplettten Pfadnamen anzeigen wenn z.B. der Mauszeiger auf dem Label verweilt (als hint)?

Grüße
Klaus

Union 23. Jul 2015 13:46

AW: TLabel mit hartem Umbruch
 
Setz doch die Funktion Hier im Forum suchenMinimizeName ein.

Shark99 23. Jul 2015 13:50

AW: TLabel mit hartem Umbruch
 
Zitat:

Zitat von Klaus01 (Beitrag 1309634)
Hallo,

ob ein Pfadname unbedinge lesbar ist, wenn er auf mehrere Zeilen umgebrochen wird?

Kannst Du nich den komplettten Pfadnamen anzeigen wenn z.B. der Mauszeiger auf dem Label verweilt (als hint)?

Grüße
Klaus

Das mit dem Hint mache ich schon, aber einige User achten nicht drauf und fragen per Email wo das File genau ist.

Zitat:

Zitat von Union (Beitrag 1309635)
Setz doch die Funktion Hier im Forum suchenMinimizeName ein.

Das Hilft nur bedingt. Der User soll schon den kompletten Pfad sehen (ist wichtige Info).

Dalai 23. Jul 2015 14:02

AW: TLabel mit hartem Umbruch
 
Für solche Fälle benutze ich ein TEdit, das auf ReadOnly geschaltet wird, so dass der Nutzer da reinklicken kann, um den Pfad nicht nur komplett sehen zu können sondern auch kopieren zu können. Ich hasse es, wenn Pfade in Labels angezeigt werden, denn das erschwert oder verhindert gar die (Weiter-)Arbeit damit in anderen Programmen.

MfG Dalai

user0815 23. Jul 2015 14:09

AW: TLabel mit hartem Umbruch
 
Delphi-Quellcode:
procedure TForm1.Label1Click(Sender: TObject);
begin
  try
    ShowMessage(PChar(TLabel(Sender).Hint));
  except
  end;
end;
oder

Delphi-Quellcode:
uses
  ShellApi;
...
procedure TForm1.Label1Click(Sender: TObject);
begin
  try
    ShellExecute(0, nil, PChar(TLabel(Sender).Hint), nil, nil, SW_SHOW);
  except
  end;
end;

himitsu 23. Jul 2015 14:27

AW: TLabel mit hartem Umbruch
 
Warum PChar und wofür sollen die schrottigen Exceptions gut sein?

Minimize-Name ist blöde, denn was soll der Benutzer mit den Kurznamen (8.3) anfangen?

Es gibt aber eine Funktion mit Ellipsis, die in den Pfad mitten drin eingefügt werden. (Pfadangang und Dateiname werden nicht verkürzt)

Ellipsis (...) in der Caption, aber man soeine ähnliche Funktion auch beim Label aktivieren, also mit den Punkten am Ende.
und im Hint die Langversion.

Ein TEdit ohne Rahmen und mit geänderter Hintergrundfarbe und das als ReadOnly-"Label" verwenden, wo man scrollen und kopieren kann.
Bzw. im TEdit die Kurzversion anzeigen und beim OnEnter/OnExit auf die Langversion umschalten.

Union 23. Jul 2015 14:45

AW: TLabel mit hartem Umbruch
 
@himitsu: Du verwechselst das mit ExtractShortPathName

himitsu 23. Jul 2015 15:12

AW: TLabel mit hartem Umbruch
 
Gut, dann vielleicht verwechselt. :oops:


PS:
https://en.wikipedia.org/wiki/Zero-width_space
Einfach nach jedem Zeichen ein #8203 einfügen. (geht natürlich nur mit Unicode)
Bzw. die Breite der Zeichen berechnen und jeweils an die gewünschten Stellen ein Leerzeichen einfügen, oder besser gleich den Zeilenumbruch.

hathor 23. Jul 2015 15:13

AW: TLabel mit hartem Umbruch
 
Delphi-Quellcode:
procedure TForm1.Label5MouseEnter(Sender: TObject);
begin
 cap:= Caption;   // cap : String; //global
 caption:= Label5.Caption;
end;

procedure TForm1.Label5MouseLeave(Sender: TObject);
begin
 Caption:= cap;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf