![]() |
Verkürztes Label mit "..." am Satzende
Hallo zusammen,
gibt es in Delphi 7 eine Funktion, die ein Label mit "..." am Satzende anzeigt, wenn der Platz nicht ausreicht? MinimizeName() aus der Unit FileCtrl ist ja spezielle für Dateinamen / Ordner. Ich habe schon in der Delphi-Hilfe nach einigen möglichen Namen gesucht, jedoch nichts gefunden. Weiß hier jemand Bescheid? Dank und Gruß Pfoto |
Re: Verkürztes Label mit "..." am Satzende
Sowas vielleicht ?
Delphi-Quellcode:
Musst natürlich deinen String den du ins Label schreiben willst, vorher mit mder Funktion aufrufen und dann ins Label schreiben.function TForm1.getkurzenSatz(satz : String):String; var satzKurz : String[40]; begin if length(satz) > 40 then begin satzKurz := satz; Result := satzKurz+'...'; end else begin Result := satz; end; end; greetz Lun |
Re: Verkürztes Label mit "..." am Satzende
Hallo,
du kannst die API Funktion DrawText() mit der Format-Option DT_END_ELLIPSIS verwenden. Grüße vom marabu |
Re: Verkürztes Label mit "..." am Satzende
Einfach im OI für das Label die Eigenschaft EllipsesPosition auf epEndEllipses oder epWordEllipses setzen.
...:cat:... |
Re: Verkürztes Label mit "..." am Satzende
Moin Daniel,
Zitat:
|
Re: Verkürztes Label mit "..." am Satzende
@Sakura:
Wie oben schon erwähnt, sind die bei Delphi7 im Label noch nich integriert Aber selbst wenn, ich benutze Skin-Komponenten, die es ebenfalls nicht haben, deshalb die Suche nach einer reinen Funktion. @Lun: Ich wollte es eigentlich von der Länge eines Canvas abhängig machen und nicht bloß von der Länge der Zeichen. @marabu: Wenn es noch keine Delphi7-Funktion dafür gibt, werde ich sie mir damit basteln. Dank und Gruß Pfoto |
Re: Verkürztes Label mit "..." am Satzende
Delphi-Quellcode:
Aufruf für z.B. Label3
Procedure TForm1.LabelText(Var L:TLabel; S:String);
Begin L.Hint := s; // Kompletten Text als Hint anzeigen If L.Canvas.TextWidth(s) > L.Width Then // Ist der Text breiter als das Label ? Begin While L.Canvas.TextWidth(s+'...') > L.Width Do // Text kürzen bis er passt... Delete(s,Length(s),1); L.Caption := s+'...'; // Text + ... End Else L.Caption := s; End; LabelText(Label3, 'Das ist der Text der evtl. gekürzt wird.'); mfg. Berny |
Re: Verkürztes Label mit "..." am Satzende
Danke Bernie!
ich hatte mir parallel dazu gerade etwas eigenes gebastelt (ähnlich aufgabaut wie "MinimizeName" von Borland):
Delphi-Quellcode:
function MinimizeNameEllipses(const aCaption: string; aCanvas: TCanvas; aMaxLen: Integer): string;
begin Result := aCaption; aMaxLen:= aMaxLen - aCanvas.TextWidth('...'); If (aCanvas.TextWidth(Result) > aMaxLen) then begin while (aCanvas.TextWidth(Result) > aMaxLen) do Result:= copy(Result, 0, length(Result)-1); result:= result + '...'; end; end; Gruß Pfoto |
Re: Verkürztes Label mit "..." am Satzende
Hm, wo genau soll nun der Vorteil gegenüber DrawText sein?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz