Am 31.03.2011 um 09:42 schrieb Thomas Tempelmann:
2011/3/31 Klemens Klarhoelter <apple.t...@knetsoft.de>:
TextPosV = floor(G.StringWidth(NthField(Listbox1(tab).cell(i,
1),",,",i1))
Naja. So eine Zeile ist irreführend für einen Aussenseiter mit all dem
Kram darin, der mir nix sagt. Ich kenne doch deinen Code drumherum
nicht. Beschränke dich doch bitte aufs Wesentliche, wenn du um Hilfe
bittest.
Alles, worum es geht ist:
1. StringWidth(s)
2. g
Und g must von dem Graphics-Obj sein, in das du mit DrawString
reinschreibst. Ist das der Fall?
Verdana passt es relativ gut aber bei allen anderen sind die
Abweichungen 5-30 Pixel!
Tja, evtl. ist das wirklich so blöde. Keine Ahnung, ich hab das noch
nie dafür verwendet.
Meiner Erfahrung nach funktioniert das recht zuverlässig. Bei kursiven
Texten muss man nur beachten, dass .StringWidth die Breite der
Fußlinie zurückgibt; d. h. oberhalb der Fußzeile kann der Text noch
etwas breiter sein als von der Funktion ermittelt.
Allerdings muss man natürlich die Text-relevanten Eigenschaften des
Graphic-Objektes entsprechend einstellen. In dem Beispiel sieht es so
aus, als würde Klemens darauf bauen, dass die Formatierung des Strings
in der ListBox von .StringWidth beachtet wird. Das ist
selbstverständlich nicht der Fall! Also muss vor dem Aufruf
von.StringWidth folgendes eingestellt werden:
g.TextFont = ...
g.TextSize = ...
g.bold = ...
g.italic = ...
g.TextUnit = ... (ist glaube ich nur nötig, wenn ein anderes Maßsystem
als 'Punkt' für die Schriftgröße verwendet werden soll)
Gruß
Christian