Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verkürztes Label mit "..." am Satzende (https://www.delphipraxis.net/84474-verkuerztes-label-mit-am-satzende.html)

Pfoto 17. Jan 2007 12:34


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

Lun 17. Jan 2007 12:43

Re: Verkürztes Label mit "..." am Satzende
 
Sowas vielleicht ?

Delphi-Quellcode:

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;
Musst natürlich deinen String den du ins Label schreiben willst, vorher mit mder Funktion aufrufen und dann ins Label schreiben.

greetz Lun

marabu 17. Jan 2007 12:44

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

sakura 17. Jan 2007 13:12

Re: Verkürztes Label mit "..." am Satzende
 
Einfach im OI für das Label die Eigenschaft EllipsesPosition auf epEndEllipses oder epWordEllipses setzen.

...:cat:...

Christian Seehase 17. Jan 2007 13:17

Re: Verkürztes Label mit "..." am Satzende
 
Moin Daniel,

Zitat:

Zitat von sakura
Einfach im OI für das Label die Eigenschaft EllipsesPosition...

die es in D7 noch nicht gibt... ;-)

Pfoto 17. Jan 2007 13:19

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

Berny 17. Jan 2007 13:36

Re: Verkürztes Label mit "..." am Satzende
 
Delphi-Quellcode:
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;
Aufruf für z.B. Label3

LabelText(Label3, 'Das ist der Text der evtl. gekürzt wird.');

mfg. Berny

Pfoto 17. Jan 2007 13:56

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

Khabarakh 17. Jan 2007 14:03

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