Hallo,
ich suche eine Funktion für die Kalkulation der Länge eines Strings mit einem bestimmten Font. Irgendwo habe ich die Funktion schon gesehen, finde sie aber nicht mehr.
Grüße
Rudolf
Fontsize
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Re: Fontsize
Hallo Rudolf,
ich mach das damit:
Jan
ich mach das damit:
Code: Alles auswählen
/// <summary>
/// <para>
/// <bold>Zweck:</bold> Die exakte Länge eines Textstrings feststellen
/// </para>
/// <para>
/// <bold>Parameter:</bold> oParent, cText, cFont
/// </para>
/// <para>
/// <bold>Beispiel:</bold>
/// </para>
/// </summary>
/// <returns>
/// nLaenge
/// </returns>
///
FUNCTION TextLaenge(oParent, cText, cFont)
LOCAL oPs := NIL
LOCAL nLaenge := 0
LOCAL aTextBox := {}
LOCAL oFont := NIL
// Presentationspace für die Gra...()-Funktion erstellen
oPs := XbpPresSpace():New()
oPs:Create(oParent:WinDevice(), oParent:currentSize(), GRA_PU_LOMETRIC)
// Die korrekte Schrift setzen, damit die Textlänge stimmt
IF cFont <> NIL
oFont := xbpFont():new(oPs)
oFont:create(cFont)
GraSetFont(oPs, oFont)
ENDIF
// Die Länge berechnen
aTextBox := GraQueryTextBox(oPs, cText)
nLaenge := aTextBox[3,1] - aTextBox[2, 1]
// Aufräumen
vernichteObjekt(oPs)
RETURN nLaenge
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Re: Fontsize
Hallo Uli,
nein, das ist so schon richtig. Denn nur wenn das nicht NIL ist, kann die Zeichenkette zwei Zeilen weiter als Font gesetzt werden.
Jan
nein, das ist so schon richtig. Denn nur wenn das nicht NIL ist, kann die Zeichenkette zwei Zeilen weiter als Font gesetzt werden.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Re: Fontsize
Hallo,
danke für die Funktion. Ich verwendet TextLaenge(AppDesktop()) da ich sonst keinen Parent habe. Aber anscheinend sind die Werte zu hoch, das oDlg Objekt habe ich noch nicht wenn ich den Dialog aufbaue. Ich habe von einem Dialog alle Get Postionen und möchte überall links davon einen Label darstellen.
Grüße
Rudolf
danke für die Funktion. Ich verwendet TextLaenge(AppDesktop()) da ich sonst keinen Parent habe. Aber anscheinend sind die Werte zu hoch, das oDlg Objekt habe ich noch nicht wenn ich den Dialog aufbaue. Ich habe von einem Dialog alle Get Postionen und möchte überall links davon einen Label darstellen.
Grüße
Rudolf
Code: Alles auswählen
@ 20,200 dcget aGets[1] getsize 300,20 PIXEL
nPos := 200 - TextLaenge(AppDesktop(), "Datum" , "8.Arial" )-1 // links für say
@ 20,nPos dcsay "Datum" font "8.Arial" PIXEL
---
- Dateianhänge
-
- Zwischenablage01.jpg (2.3 KiB) 2720 mal betrachtet
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net