Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String länge setzen (https://www.delphipraxis.net/131800-string-laenge-setzen.html)

IIIMADDINIII 31. Mär 2009 09:33


String länge setzen
 
hallöchen

ich mochte einen string bei einer bestimmten anzahl von pixeln (natürlich Font abhänig) abschneiden.
dabei sollen aber die letzten drei zeichen die angezeigt werden '...' sein.
gibts da chon eine function von delphi???

schon mal danke

himitsu 31. Mär 2009 09:37

Re: String länge setzen
 
bei einem TStatic/TLabel gibt es eventuell was schau mal nach der Eigenschaft .EllipsisPosition ... in älteren Delphi-Versionen könnte man sowas für TStatic relativ leicht nachrüsten.

ansonsten siehe http://www.delphipraxis.net/internal...ct.php?t=12542

IIIMADDINIII 31. Mär 2009 09:42

Re: String länge setzen
 
leider möchte ich das nict mit einem label ausgeben sondern mit Canvas. gibt das auch dort???

IIIMADDINIII 31. Mär 2009 09:56

Re: String länge setzen
 
habe schon selbst eine lösung im internet gefungen. ich stelle sie mal für andere rein:

Delphi-Quellcode:
function TextCutB(Canvas: TCanvas; Len: Word; Text: String): String;
var
  k: Integer;
begin
  Result := Text;
  with Canvas do if TextWidth(Text) > Len then
  begin
    for k := Length(Text) downto 1 do
      if TextWidth(Copy(Text, 1, k) + '...') > Len then Continue
        else
      begin
        Result := Copy(Text, 1, k) + '...';
        Exit;
      end;
  end;
end;

DeddyH 31. Mär 2009 09:59

Re: String länge setzen
 
Da gab es mal die Methode MinimizeName (Unit FileCtrl), die war dafür geeignet, wenn ich mich recht entsinne. Zumindest unter Delphi 5 ist diese allerdings nicht dokumentiert.

[edit] Ach nee, die kürzt ja nur ggf. Pfadangaben. [/edit]

Luckie 31. Mär 2009 10:25

Re: String länge setzen
 
Wenn du es sowieso auf dem Canvas ausgibst, dann nimm doch gleich MSDN-Library durchsuchenDrawtext mit dem Flag DT_ENDELLIPSIS oder wie der heißt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.

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