Seite 1 von 1

o:SetFont()

Verfasst: Fr, 31. Okt 2014 22:36
von AUGE_OHR
hi,

ich verändere, während der Laufzeit, den Font der Anwendung mit

Code: Alles auswählen

oDlgMain:SetFont(oFont)
das klappt auch soweit mit der 1st Ebene von o:DrawingArea:Childlist() aber nicht mit weiteren Ebenen :(

Code: Alles auswählen

   ::oStatPB   := XbpStatic()  :new( ::drawingArea, , {  0, StatbarHigh+2 }, {aSize[1]-8, 41} , aPresParam )
   ::oStatPB:type := XBPSTATIC_TYPE_GROUPBOX
   ::oStatPB:ClipChildren := .F.
// jetzt die einzelnen Buttons
   ::makeButton(aPresParam)
   ...

INLINE METHOD makeButton(aPresParam)

   ::oPB01     := XbpPushButton():new( ::oStatPB, , {  4,2}, {76,32}, aPresParam )
   ::oPB01:caption := "F1"
   ::oPB01:tabStop := .T.
   ::oPB01:activate := {|mp1, mp2, obj| ::ToDeskTop() }

   ::oPB02     := XbpPushButton():new( ::oStatPB, , { 82,2}, {76,32}, aPresParam )
   ...
RETURN self
Die Schrift auf den Buttons ändert sich nun nicht "live" ... erst nach einem Neustart ( Werte wurden bei beenden gespeichert )

Die Frage ist nun : wie geht man "richtig" vor damit die der Font "überall" gleich ändert ?

Re: o:SetFont()

Verfasst: Sa, 20. Feb 2016 17:44
von UliTs
Schreib Dir eine Funktion SetFontAll( oXbp,oFont ):

Code: Alles auswählen

FUNCTION SetFontAll( oXbp,oXbp )
LOCAL lResult
  lResult := ValType( oXbp ) == "O"
  IF lResult
    IF IsMethod( oXbp,"SetFont" )
      oXbp:SetFont( oFont )
    ENDIF
    IF IsMethod( oXbp,"ChildList" )
      AEval( oXbp:ChildList(),{|oXbp2|lResult := SetFontAll( @oXbp2,@oFont ) .AND. lResult} )
    ENDIF
  ENDIF
RETURN( lResult )
Aufruf:
SetFontAll( oDlgMain,oFont )

Ungetestet.
Könnte so funktionieren :-) .

Re: o:SetFont()

Verfasst: Sa, 20. Feb 2016 19:49
von Herbert
Achtung bei Edit-Controls. Dort lässt ich so nur die Caption ändern aber nicht der Font des Inputs.

Re: o:SetFont()

Verfasst: So, 21. Feb 2016 5:36
von UliTs
Keine Frage: die Funktion müsste für einige Klassen noch speziell angepasst werden :-) .

Re: o:SetFont()

Verfasst: Di, 23. Feb 2016 1:25
von AUGE_OHR
hi,

Danke für eure Antworten ... auch wenn die Frage schon ein wenig älter ist ;)

ich bin mir auch nicht mehr sicher warum ich die Frage "so" gestellt habe welches sich nur auf den Font bezieht.
nun kann man aber den Font, besser das Font Object (XBP_PP_FONT), in den Presentation Parameter unterbringen und die werden ja an die Childs vererbt.