Fontsize

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Fontsize

Beitrag von Rudolf »

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
Benutzeravatar
Jan
Marvin
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

Beitrag von Jan »

Hallo Rudolf,

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
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
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:

Re: Fontsize

Beitrag von UliTs »

Hallo Jan,

Muss das nicht

Code: Alles auswählen

IF cFont == NIL
heißen?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
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

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Fontsize

Beitrag von Rudolf »

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

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
Zwischenablage01.jpg (2.3 KiB) 2720 mal betrachtet
Antworten