default font gui

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Wonderer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 107
Registriert: Do, 06. Jul 2006 13:24

default font gui

Beitrag 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?
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: default font gui

Beitrag 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
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: default font gui

Beitrag 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.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: default font gui

Beitrag von brandelh »

Code: Alles auswählen

oFnt := GraSetFont( XbpDialog;drawingArea )
zwischen XbpDialog und drawingArea steht ein ; ... vermutlich sollte es ein : sein.
Falls es nicht nur hier so geschrieben ist, gibt das einen Laufzeitfehler
Gruß
Hubert
Wonderer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 107
Registriert: Do, 06. Jul 2006 13:24

Re: default font gui

Beitrag 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

Code: Alles auswählen

oDlg := SetAppWindow()  
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 :D

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'.
Antworten