Seite 1 von 1
default font gui
Verfasst: Mi, 03. Feb 2016 16:33
von Wonderer
Hallo,
ich versuche gerade für ein neu erstelltes XbpDialog und XbpParts den Standard-Font(Name) zu ermitteln.
Als Rückgabewert erhalte ich jedoch immer NIL.
folgendes habe ich versucht:
Code: Alles auswählen
cFntName := XbpDialog:setFontCompoundName
cFntName := XbpStatic:setFontCompoundName
SetAppWindow( XbpDialog )
oFnt := GraSetFont( XbpDialog;drawingArea )
Wie schon gesagt bekomme ich überall ein NIL zugewiesen.
Kann mir jmd.bitte sagen wie ich den Default-Font(Name) als Rückgabewert erhalten kann zum Speichern?
Re: default font gui
Verfasst: Mi, 03. Feb 2016 17:08
von Tom
Also.
Erstens ist SetFontCompoundName keine iVar, also keine Variable des fraglichen Objekts (Dialog, Static), sondern eine
Methode. Richtig wäre also:
Code: Alles auswählen
cFntName := oDialog:SetFontCompoundName() // man beachte die Klammern
Wenn kein Font für das Objekt gesetzt ist, gibt die Methode NIL zurück. Xbase++ verwendet für alle Darstellungen dann einen Standardfont (ich meine, 10.Arial).
Zweitens verwendet man die Methode zuerst für das
Setzen eines anderen Fonts - und nachrangig für dessen Abfrage:
Code: Alles auswählen
oDlg := XbpDialog():New() ...
oDlg:DrawingArea:SetFontCompoundName("14.Arial")
* jetzt gäbe die Methode auch etwas zurück
Re: default font gui
Verfasst: Do, 04. Feb 2016 7:29
von brandelh
Ich meine es ist 8. Arial
eines noch zusätzlich, ein Control sieht in der Liste seiner Parents nach, welche Fonts diese nutzen, wenn es selbst keine Vorgabe im Quellcode gibt.
Re: default font gui
Verfasst: Do, 04. Feb 2016 7:49
von brandelh
zwischen
XbpDialog und
drawingArea steht ein
; ... vermutlich sollte es ein : sein.
Falls es nicht nur hier so geschrieben ist, gibt das einen Laufzeitfehler
Re: default font gui
Verfasst: Do, 04. Feb 2016 14:48
von Wonderer
ah ja, sorry. das war Pseudo-Code - die Klammern und Doppelpunkt war schon richtig gesetzt im Programm.
Das mit dem 'Durchreichen nach Oben' hat mir nichts gebracht, da das höchste mir bekannte Element
ist und ein Zugriff auf den Font dort lediglich NIL zurückliefert.
AppDesktop:setFontCompoundName() -> NIL
XbpDialog:setFondCompoundName() -> NIL
Ooookay, gründliches Lesen des Handbuches hat sich als erfolgreich herausgestellt
folgendes funktioniert für Ermittlung des Default-Fonts:
Code: Alles auswählen
oWin := XbpDialog():new( ... )
...
oWin:create()
SetAppWindow( oWin )
oFnt := GraSetFont( oWin:lockPS() )
oWin:unlockPS()
Allerdings steht im CompoundName lediglich 'Ms Sans Serif' ohne Größen-Angabe.
NominalPointSize ist eingestellt auf '8'.