Ich habe einmal versucht einen Sisyphus-Automaten zu bauen:
Wenn die Listbox gefüllt ist, muss in einer Schleife festgestellt werden,
welches die Zeile mit dem längsten Text ist (Len-Wert).
Nehmen wir an, es ist die 4.Zeile, dann muss festgestellt werden,
wo die halbe Höhe der 4.Zeile und der rechte Rand der betr. Spalte sind.
Nun werden in einer Schleife die Pixel auf halber Höhe der 4.Zeile
vom rechten Rand der betr. Spalte rückwärts daraufhin geprüft,
ob sie ungleich weiß sind. Der erste Treffer liegt am Ende des Strings,
der Wert gibt die Länge des Strings an.
dim i as integer
aktuY = ListBox1.Top + 21 + ListBox1.DefaultRowHeight *3 +
Listbox1.DefaultRowHeight /2
aktuX = Listbox1.Left + Listbox1.Column(0).WidthActual-2
for i =1 to ListBox1.Column(0).WidthActual
if Graphics.Pixel(aktuX,aktuY) <> &cFFFFFF then
msgbox str(aktuX)
exit for
end if
aktuX = aktuX -1
next
Die Höhe der Prüflinie unterstellt, dass der letzte Buchstabe des Strings
die größte Breite tatsächlich in der Mitte hat. Bei einem T oder einem L
trifft das dann leider nicht zu. Für hundertprozentige Sicherheit müsste man
mehrere Prüfschleifen mit jeweils unterschiedlicher Höhe ablaufen lassen.
Aber wenn man hinter dem letzten Buchstaben noch einige Pixel Platz lässt,
wirds wohl schon ganz gut passen.
beste Grüße, Christian Hahn.
----- Original Message -----
From: "Enno Bussmann" <[email protected]>
To: "Realbasic NUG German" <[email protected]>
Sent: Monday, October 17, 2011 5:50 PM
Subject: Re: Was macht eigentlich self.Graphics.StringWidth(text)
Kleine korrektur: Ich glaube, dass sich das erst dann zufriedenstellend
lösen lassen wird, wenn sich irgendjemand daran setzt und den faktor
für jeden einzelnen schriftschnitt ausrechnet = sisyphus lässt grüssen.
Am Mon Oct 17 17:24:07 2011 schrieb nobe:
Ich glaube nicht, dass sich erst dann zufriedenstellend lösen lassen wird,
wenn sich irgendjemand daran setzt und den faktor für jeden einzelnen
schriftschnitt ausrechnet = sisyphus lässt grüssen ;-)
enno
Am Mon Oct 17 17:01:42 2011 schrieb Stefan Mettenbrink:
Stefan Sicurella wrote:
das Problem hab eich auch schon seit Jahren, leider auch mit
stringheight
Du musst dich über die Anzahl der Zeichen der tatsächlichen Größe
annähern… anders geht es nicht
:-(
Für andere Bereiche habe ich bisher einfach 5-10% hinzugefügt. In diesem
Fall finde ich das blöd. - Genaugenommen finde ich das immer blöd!
Hast Du das mal gemeldet?
MfG, Metti.