Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 20.06.05 18:04 
Hallo, wie komm ich an die Pixellänge eines Textes im TEdit um die Breite des TEdits anzupassen?
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 20.06.05 18:28 
Tedit hat kein canvas, um canvas.Textwidth zu verwenden. Du kannst aber z.B. das canvas der Form nehmen oder ein Hilfsbitmap erstellen, Font einstellen und dann die Textbreite mit canvas.textwidth ermitteln. Zum ermittelten Wert noch um ein paar Pixel für den 3d-Rahmen dazuaddieren.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mo 20.06.05 21:33 
user profile iconKeldorn hat folgendes geschrieben:
Tedit hat kein canvas, um canvas.Textwidth zu verwenden. Du kannst aber z.B. das canvas der Form nehmen oder ein Hilfsbitmap erstellen, Font einstellen und dann die Textbreite mit canvas.textwidth ermitteln. Zum ermittelten Wert noch um ein paar Pixel für den 3d-Rahmen dazuaddieren.

Mfg Frank


Ja, ich kenne in Java da gibts eine methode getFontMetrics(Font).stringWidth("blabla");
jetzt habe ich gedacht ich kann ja auch so eine funktion schreiben die z.B. bei übergabe eines
Font Objects ein Label erstellt mit diesem Font und länge vom diesem Label zurückgibt!
Im Prinzip geht das doch?

Ich habs versucht! Aber es klappt nicht richtig!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function TWhereManager.GetStrLenInPix(Text : String; Font : TFont) : Integer;
var Lab : TLabel;
begin
   Lab := TLabel.Create(Self);
   Lab.AutoSize := True;
   Lab.Font.Assign(Font);
   Lab.Caption := Text;
   Result := Lab.Width;
   Lab.Free;
end;


Ich hatte auch für eine TEdit zum Wert 6 Addiert! Aber als ich eine Andere SChriftart genommen hatte
stimmte es wieder nicht!

Ok, ich versuchs mit Canvas!

//EDIT

Es klappt seltsamer weise nicht wenn ich Fettschrift habe!