DCBROWSE Row farbig

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

DCBROWSE Row farbig

Beitrag 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
Gruss Peter
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE Row farbig

Beitrag von Koverhage »

lWert oder lTest
Ich habe bei MKCOLOR normalerweise nur
MKCOLOR {|| SayFarbe()}
stehen
Gruß
Klaus
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCBROWSE Row farbig

Beitrag 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
Gruss Peter
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCBROWSE Row farbig

Beitrag 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}
Viele Grüße
Wolfgang
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCBROWSE Row farbig

Beitrag 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
Gruss Peter
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: DCBROWSE Row farbig

Beitrag von Tom »

Ich würde das auf Spaltenebene machen:

Code: Alles auswählen

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

DCBROWSECOL ... COLOR bColor
Herzlich,
Tom
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCBROWSE Row farbig

Beitrag 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
Gruss Peter
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: DCBROWSE Row farbig

Beitrag 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.
Herzlich,
Tom
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: DCBROWSE Row farbig

Beitrag 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.
Herzlich,
Tom
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCBROWSE Row farbig

Beitrag 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
Gruss Peter
Antworten