Vielleicht geht es mit MinimizeName, obwohl das AFAIK nur für Pfadangaben gedacht ist.
Stimmt, ist nur für Pfade.
EllipsisPosition
...
Geben tut es das ab Delphi 2006. Intern wird das 1:1 auf die entsprechenden Konstanten gemappt und an DrawText übergeben. Auch Canvas.TextRect kennt ein entsprechendes Flag. Aber das sind eben alles nur für die Ausgabe vorhandene Funktionen.
Danke für die Info. Hab EllipsisPosition gefunden beim TLabel in TurboDelphi. In Lazarus scheint's das nicht zu geben. In Delphi scheinbar nur im TLabel?
... für DrawText wird ein hdc benötigt, was nicht bei allen in Frage kommenden Controls der Fall ist.
Bei welchen denn? Nicht bei allen kommst du direkt heran, aber eigentlich haben alle einen Device Context.
Ok, ich sitze jetzt schon über eine halbe Stunde nur daran, ein blöden Text mit DrawText auf ein Panel zu bekommen. (Habs auch mit Form1 versucht.) Ich habe bestimmt 1 Mio. Codes von
MSDN bis Was-weiß-ich-was-WebSites und Foren (auch hier) probiert und bin am verzweifen! Ich krieg ums Verrecken keinen Text mit Panel zu sehen!! Das kenn ich von "damals", als ich noch mit VB (Classic) programmierte. Und genau aus diesem Grund wollte ich DrawTest nicht haben. Das nervt einfach nur.
Es folgt ein Beispiel-Code, den ich ausprobiert habe. Bitte zeig mir doch den Fehler, oder einen funktionierenden Code.
Und glaub mir, ich hab zig verschieden Kombinationen der Paramter und Funktionen probiert!
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
var
Txt: String;
h: HDC;
Rct: TRect;
begin
Txt := 'Dies ist ein Beispiel-Text.';
//h := GetDC(Panel1.Handle);
//h := GetWindowDC(Panel1.Handle);
GetWindowRect(Panel1.Handle, Rct);
DrawText(Panel1.Canvas.Handle, PChar(Txt), Length(Txt), Rct,
DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS);
end;
Guido.