Keldorn 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!
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!