XbpColumn():Footing

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

XbpColumn():Footing

Beitrag von georg »

Guten Abend,


vielleicht liegt es an der Uhrzeit ...

Ich möcht ein einem XbpBrowse() den :footing Bereich verwenden, um Summen anzuzeigen. Wenn ich beim Erzeugen der Spalte entsprechende Werte über den Presentation Parameter vorgebe, klappt das. Nun liegt es aber in der Natur von Summen, dass diese sich ändern können, und es gelingt mir nicht, den eingestellten Wert zu ändern:

Code: Alles auswählen

   cToken := "Briefe"
   aPP := {;
      {XBP_PP_COL_HA_CAPTION,        cToken},;
      {XBP_PP_COL_HA_ALIGNMENT,      XBPALIGN_LEFT},;
      {XBP_PP_COL_FA_FGCLR,          XBPSYSCLR_WINDOWSTATICTEXT},;
      {XBP_PP_COL_FA_BGCLR,          XBPSYSCLR_DIALOGBACKGROUND},;
      {XBP_PP_COL_FA_CAPTION,        "Total"},;
      {XBP_PP_COL_DA_CELLALIGNMENT,  XBPALIGN_LEFT},;
      {XBP_PP_COL_DA_CHARWIDTH,      10};
      }
   oCol := XbpColumn():new(,,,, aPP)
   oCol:dataLink := {|| aHostKeyBro[nBroRecno,  1]}
   oCol:create()
   oCol:drawMode := XBP_DRAW_OWNER
   oCol:configure()
   oBro:addColumn(oCol)
Ich kann an dieser Stelle mit

Code: Alles auswählen

oCol:Footing:getCell(1)
den Wert "Total" abfragen. Das geht.

Code: Alles auswählen

oCol:Footing:setCell(1, "Gesamt")
auch in Verbindung mit

Code: Alles auswählen

oCol:Footing:configure()
und auch

Code: Alles auswählen

oCol:configure()
bringt keine Änderung, sondern die Zelle wird dann so dargestellt:

Bild

Ohne den :setCell() etc. Aufruf sieht es so aus:

Bild

Wo liegt mein Denkfehler?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: XbpColumn():Footing

Beitrag von AUGE_OHR »

georg hat geschrieben:Wo liegt mein Denkfehler?
das du nur eine Column hast ... ;)

du greifst ja "nach" dem Create() auf eine Cell und wenn du mehrere Column hättest würdest du mit GetColumn(n) arbeiten.

Code: Alles auswählen

     IF ntotal[1] > 0.00
       oBrowse:getColumn( nSoll ) :footing:setColorFG( GRA_CLR_BLACK )
       oBrowse:getColumn( nSoll ) :footing:setColorBG( GRA_CLR_GREEN )
     ELSE
       oBrowse:getColumn( nSoll ) :footing:setColorFG( GRA_CLR_WHITE )
       oBrowse:getColumn( nSoll ) :footing:setColorBG( GRA_CLR_RED )
     ENDIF
     oBrowse:getColumn( nSoll ):footing:Setcell( 1, LTRIM( STR( ntotal[ 1 ], 11, 2 ) ),, .T. )
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: XbpColumn():Footing

Beitrag von georg »

Guten Morgen, Jimmy -


nein, das funktioniert eben nicht?! Gerade ausprobiert.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: XbpColumn():Footing

Beitrag von Bertram Hansen »

Hallo Georg,

ich ändere den Wert über die Methode setfootercaption()

Code: Alles auswählen

::oBrowsePosition:getColumn(08):setfootercaption(STR(::nFooterGesWare,12,2))
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: XbpColumn():Footing

Beitrag von georg »

Hallo, Bertram -


Deine Lösung klingt toll, aber bist Du sicher, dass :setFooterCaption() eine Standard-Funktion ist? Mir meldet Xbase++ während der Laufzeit, dass es keine Methode dieses Namens in der Klasse XbpColumn() gibt, und auch die Dokumentation kennt diese Methode nicht?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: XbpColumn():Footing

Beitrag von Bertram Hansen »

Ok. Ich muss gestehen, die Methode ist von Roger's eXpress++. Sorry!
Ich werde mir mal den Code von Roger ansehen.
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: XbpColumn():Footing

Beitrag von Bertram Hansen »

Hallo Georg,

aber auch Roger macht das intern über setCell()

Code: Alles auswählen

FOR i := 1 TO Len(aFooter)
     ::footing:setCell(i,aFooter[i])
NEXT
und anschließend

Code: Alles auswählen

::footing:invalidateRect()
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Magic
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 343
Registriert: Mo, 11. Jul 2011 12:01

Re: XbpColumn():Footing

Beitrag von Magic »

Bertram Hansen hat geschrieben:Ich muss gestehen, die Methode ist von Roger's eXpress++.
Ich mache das mit Standard Xbase++ Funktionen nach folgenden Schema:

Code: Alles auswählen

      //Spalte holen und Wert setzen
      oColumn := ::oSollIstBrowse:getColumn(<Nummer Deiner Spalte in der die Summe angezeigt werden soll>)
      oColumn:Footing:SetCell( 1, Transform( nSummeInProzent, "@ 99,999.9 %" ), , .F. )
danach ändere ich abhängig vom Wert die Schriftfarbe

Code: Alles auswählen

      // Farbe der Fußzeile bestimmen
      oColumn := ::oSollIstBrowse:getColumn(<Spaltennummer>)
      oColumn:Footing:setCellColor( 1, <GRA_CLR_...> )
und nicht vergessen den Browser dann zu aktualisieren (anders als im Beispiel vorherigen Beispiel!)

Code: Alles auswählen

      // Browser aktualisieren
      ::oSollIstBrowse:Configure()
      ::oSollIstBrowse:RefreshAll()
      ::oSollIstBrowse:ForceStable()
Gruß,
Magic
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: XbpColumn():Footing

Beitrag von georg »

Hallo, Magic -


es könnte tatsächlich am :configure() des Browse liegen: ich werde das heute abend mal zu Hause ausprobieren.

Danke für die ganzen Hinweise bisher!
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten