Seite 1 von 1

DCBROWSE Row farbig

Verfasst: Di, 18. Aug 2020 13:10
von Peter Schweizer
Hallo,
ich möchte in einem DCBROWSE abhängig von einer Logischen Variablen die Reihe einfärben.
Der Hintergrund der Browse-Zeilen ist weiß und auch der Hintergrund der Datenzeilen ist weiß.

@ 0,0 DCBROWSE oTest ALIAS cAlias FIT PRESENTATION DC_BrowPres() EVAL {|o| o:cursorMode := XBPBRW_CURSOR_ROW }
-----------------------------
nach dem einfügen von MKCOLOR sind zwar die Zeilen, für die lWert=.T. ergibt in Gelb, jedoch die anderen Datenzeilen in Hintergrund: Grau
was ich nicht verstehe !

Code: Alles auswählen

@ 0,0 DCBROWSE oTest ALIAS cAlias  FIT;
 	PRESENTATION DC_BrowPres() ;
        MKCOLOR {|| test->lWert } , {|| SayFarbe()} ;
	EVAL {|o| o:cursorMode := XBPBRW_CURSOR_ROW } 
....
Function sayfarbe
return IF( test->lTest , {GRA_CLR_BLACK,GRA_CLR_YELLOW}, {GRA_CLR_BLACK,GRA_CLR_WHITE} )	

Kann mir jemand sagen was da schief läuft ?
Gruß Peter

Re: DCBROWSE Row farbig

Verfasst: Di, 18. Aug 2020 13:30
von Koverhage
lWert oder lTest
Ich habe bei MKCOLOR normalerweise nur
MKCOLOR {|| SayFarbe()}
stehen

Re: DCBROWSE Row farbig

Verfasst: Di, 18. Aug 2020 14:52
von Peter Schweizer
Hallo Klaus,
lTest ist richtig. ( lwert war ein schreibfehler beim erstellen dieses Themas)

Mein Prg zeigt ja richtig die Zeile mit Hintergrundfrabe Gelb an, wenn lTest = True ist.
Was ja meine eigentliches "Problem" ist, das ab dem einsetzen von MKCOLOR die restlichen Zeilen, die durch Daten belegt sind, mit Hintergrundfarbe Grau dargestellt werden. Die nicht durch Daten belegten Zeilen des Browsers ( am Schluß des Browsers) weden nach wie vor Weiß dargestellt.

Gruß Peter

Re: DCBROWSE Row farbig

Verfasst: Di, 18. Aug 2020 19:42
von Wolfgang Ciriack
Wie ist denn dein default DC_BrowPres() definiert.
Übergib mal die Farbarraywerte mit 4 Elementen

Code: Alles auswählen

Function sayfarbe
return IF( test->lTest , {GRA_CLR_BLACK,GRA_CLR_YELLOW, nil, GRA_CLR_WHITE}, {GRA_CLR_BLACK,GRA_CLR_WHITE,nil,GRA_CLR_WHITE}

Re: DCBROWSE Row farbig

Verfasst: Di, 18. Aug 2020 21:37
von Peter Schweizer
Hallo Wolfgang,
die Defintion sieht so aus und wird beim Prg-Start einmalig gesetzt.
Deine Vorschlag werden ich Morgen gleich testen.

Code: Alles auswählen

	aBrowPres := {    { XBP_PP_COL_HA_FGCLR, GRA_CLR_WHITE },           ; /* Header FG Color  */
  				  { XBP_PP_COL_HA_BGCLR, GRA_CLR_DARKGRAY },        ; /* Header BG Color  */
  				  { XBP_PP_COL_DA_ROWSEPARATOR, XBPCOL_SEP_DOTTED },; /* Row Sep          */
  				  { XBP_PP_COL_DA_COLSEPARATOR, XBPCOL_SEP_LINE },; /* Col Sep          */
  				  { XBP_PP_COL_DA_FGCLR, GRA_CLR_BLACK },           ; /* Row FG Color     */
  				  { XBP_PP_COL_DA_BGCLR, GRA_CLR_WHITE },           ; /* Row BG Color     */
  				  { XBP_PP_COL_DA_ROWHEIGHT, nBrowHi },             ; /* Row Height       */
  				  { XBP_PP_COL_HA_HEIGHT,  nBrowHi },                     ; /* Header Height    */
  				  { XBP_PP_HILITE_FGCLR, GRA_CLR_WHITE },           ; /* Hilite FG color  */
  				  { XBP_PP_HILITE_BGCLR, GRA_CLR_DARKBLUE },        ; /* Hilite BG color  */
  				  { XBP_PP_COL_FA_FGCLR, GRA_CLR_WHITE },           ; /* Footer FG Color  */
  				  { XBP_PP_COL_FA_BGCLR, GRA_CLR_DARKGRAY },        ; /* Footer BG Color  */
  				  { XBP_PP_COL_FA_HEIGHT,  nBrowHi }                      ; /* Footer Height    */
  				}
	DC_BrowPres(aBrowPres)  //	Default werte fr Browser setzen
Gruß Peter

Re: DCBROWSE Row farbig

Verfasst: Mi, 19. Aug 2020 9:02
von Tom
Ich würde das auf Spaltenebene machen:

Code: Alles auswählen

bColor := {||IF(tb->Feld,aColor[1],aColor[2])}

DCBROWSECOL ... COLOR bColor

Re: DCBROWSE Row farbig

Verfasst: Mi, 19. Aug 2020 10:20
von Peter Schweizer
Hallo Wolfgang,
Dein Vorschlag hat leider nicht wie gewünscht funktiniert.

Hallo Tom,
Dein Vorschlag macht es so wie ich will. --> Danke !

Warum es bei MKCOLOR zu einem solchen Effekt, wie beschrieben, kommt ,bleibt ein Rätsel.
Gruß Peter

Re: DCBROWSE Row farbig

Verfasst: Mi, 19. Aug 2020 10:42
von Tom
Freut mich!

Ich habe keine Doku zur Hand, weil ich im Zug sitze, aber m. E. dient MKCOLOR einem anderen Zweck, irgendwas mit Tagging (das ich nicht verwende, weil ich dafür eine eigene Lösung gebaut habe). Daher das eigenartige Verhalten.

Re: DCBROWSE Row farbig

Verfasst: Mi, 19. Aug 2020 15:46
von Tom
So.

DCBROWSE ... MKCOLOR ist offenbar in der eXpress++-Doku falsch erläutert. Es erwartet einen Codeblock als ersten Parameter, dann zwei Farbangaben (Vordergrund 1, Vordergrund 2). Der Codeblock bekommt die Zeilennummer (Arrayindex) als Parameter und muss .T. oder .F. liefern, was dann so aussehen kann (Beispiel von Roger aus einer Forennachricht, "aDir" wäre das gebrauste Array):

Code: Alles auswählen

MKCOLOR {|n|aDir[n,11]}, 0, GRA_CLR_BLUE
(Näheres dazu hier http://bb.donnay-software.com/donnay/vi ... 79&p=15817 )

Es gibt aber offenbar auch noch ein Problem, das laut readme.txt aus eXpress++ so lautet(e): "Corrected a problem with the MKCOLOR clause of @..DCBROWSE. The normal (unmarked) color was always gray regardless of the setting of the PRESENTATION array." Dieses Problem ist allerdings in Build 163 behoben worden (#228 in der readme).

MKCOLOR ist im Vergleich zur spaltenweisen Lösung tatsächlich kompakter.

Re: DCBROWSE Row farbig

Verfasst: Mo, 24. Aug 2020 10:58
von Peter Schweizer
Hallo Tom
ich arbeite mit Version 2.0 build 267 . Der beschriebene Effekt dürfte also gar nicht mehr auftreten.
Aber egal, hab ja eine Lösung.

Peter