Hallo Christian,

danke für den Tipp aber die Schriftart etc. wird übergeben. 
Ich habe mir die Werte im Debugger angeschaut und man sieht,
das die Formatierung nicht berücksichtigt wird.
Ich habe eine Länge von 129 Pixel bei der Schriftart Courier und wenn
ich auf Arial umschalte auch 129 Pixel. Bei Arial muß es weniger sein. 
Die Schriftart wird korrekt dargestellt, aber da der Startpunkt links immer 
der gleiche passt es rechts nicht mehr. 
Ist es so schwer ein Text im Graphics auszurichten?

Gruß
Klemens 
Am 31.03.2011 um 10:19 schrieb Christian Dorn:

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

Klemens Klarhoelter-Selbst











Antwort per Email an