:Colorblock

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

:Colorblock

Beitrag von saul »

Hallo,
bei mir im XbpBrowse verhalten sich die Farben nicht wie ich es erwarte.

Code: Alles auswählen

PRES_spa2:={ ; 	// Presentation Parameter fuer den Browser   
{XBP_PP_COL_HA_BGCLR          , GRA_CLR_WHITE   }, ;
{XBP_PP_COL_HA_FGCLR          , GRA_CLR_BLACK   }, ;
{XBP_PP_COL_DA_HILITE_BGCLR   , GRA_CLR_BLUE   }, ;
{XBP_PP_COL_DA_HILITE_FGCLR   , GRA_CLR_WHITE   }, ;
{XBP_PP_COL_HA_CAPTION     , "Kunde" },;
{XBP_PP_COL_HA_ALIGNMENT   , XBPALIGN_HCENTER},;
{XBP_PP_COL_DA_CHARWIDTH   , len(kunde)+2		 },;
{XBP_PP_COL_DA_COMPOUNDNAME, str(mschrift,2,0)+".Courier New" }}

oxbpcol:=XbpColumn():new(,,,,PRES_spa2)
oXbpCol:dataLink := {|| " "+kunde+" " }
oXbpCol:colorblock:= {|| IIf(nZahl<0, {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{GRA_CLR_BLACK,GRA_CLR_WHITE})}
oXbpCol:create()
oBrowse:addColumn( oxbpcol)
Ich habe die Farben eingestellt Zellenhintergrund weiß, schrift schwarz. Cursor Zellenhintergrund blau, schrift weiß. Das funktioniert.
Wenn ich nun einige Zellen mit der Variablen :colorBlock belege, dann ändert sich das Verhalten des Cursors aber nur in den Zellen die ich anders belegt habe. Ich meinem Beispiel erscheint der Cursor Zellenhintergrund blau, schrift schwarz

Code: Alles auswählen

oXbpCol:colorblock:= {|| IIf(nZahl<0, {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{NIL,NIL})}
verändert die Situation nochmal Cursor Zellenhintergrund blau, schrift weiß in den Zellen, in denen IIF nicht zutrifft.
Was mache ich falsch?

mfg
Wolfgang
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: :Colorblock

Beitrag von Wolfgang Ciriack »

Versuche es mal mit

Code: Alles auswählen

oXbpCol:colorblock:= {|| IIf(nZahl<0, {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{nil,nil})}
Viele Grüße
Wolfgang
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: :Colorblock

Beitrag von saul »

Hallo Wolfgang,
hatte ich gemacht. verändert die Situation nochmal Cursor Zellenhintergrund blau, schrift weiß in den Zellen, in denen IIF nicht zutrifft, also so wie ich es möchte.

In den Zellen in denen IIF zutrifft habe ich aber wieder das Problem.

mfg
Wolfgang
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: :Colorblock

Beitrag von brandelh »

Hi,

ich denke, dass man für das Standardverhalten := NIL zuweisen muss und nicht { NIL, NIL }

versuche also mal:

Code: Alles auswählen

oXbpCol:colorblock:= {|| IIf(nZahl<0, {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},   NIL   ) }
Gruß
Hubert
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: :Colorblock

Beitrag von saul »

Hallo,
das gleiche Verhalten wie bei { NIL, NIL}.

mfg
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: :Colorblock

Beitrag von georg »

Hallo, Wolfgang -


vielleicht schaust Du auch mal hier: http://www.xbaseforum.de/viewtopic.php? ... 40&p=81586
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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: :Colorblock

Beitrag von AUGE_OHR »

saul hat geschrieben:bei mir im XbpBrowse verhalten sich die Farben nicht wie ich es erwarte.
welche Xbase++ Version ?
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: :Colorblock

Beitrag von saul »

Hi,
1.90.331.

mfg
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: :Colorblock

Beitrag von Jan »

Woher kommt denn nZahl? Ich befürchte, daß der Wert immer der Gleiche sein wird ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: :Colorblock

Beitrag von saul »

Hi,
nZahl ist der Feldname.

mfg
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: :Colorblock

Beitrag von Jan »

OK. Ist aber ein witziger Feldname, deswegen hatte ich das für eine Variable gehalten.

Ich selber arbeite übrigens auch sehr viel mit :colorBlock() in XbpBrowses. Das klappt einwandfrei, allerdings belege ich auch beide IIf()-Rückgabewerte auch mit korrekten Farbwerten, also niemals mit {NIL, NIL}.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: :Colorblock

Beitrag von AUGE_OHR »

saul hat geschrieben:Wenn ich nun einige Zellen mit der Variablen :colorBlock belege, dann ändert sich das Verhalten des Cursors aber nur in den Zellen die ich anders belegt habe.
Ich meinem Beispiel erscheint der Cursor Zellenhintergrund blau, schrift schwarz
...
verändert die Situation nochmal Cursor Zellenhintergrund blau, schrift weiß in den Zellen, in denen IIF nicht zutrifft.
Was mache ich falsch?
du "siehst" deinen o:Colorblock nicht ;)
Der (ROW) Cursor "überdeckt den o:Colorblock !

um eine "Lücke" im ( ROW) Cursor zu erreichen, zwecks Anzeige des o:Colorblock, kannst du diese Class statt XbpColumn() verwenden:

Code: Alles auswählen

******************************************
CLASS XbpColumnLocal FROM XbpColumn
******************************************
EXPORTED:
   INLINE METHOD HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
   *************************************************************
   LOCAL aColor
   LOCAL RETVAR

   IF ( lHilite )         
      IF ::colorBlock # NIL
         aColor:= Eval( ::colorBlock )
         IF aColor = NIL
            RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
         ELSE
            RETVAR := ::dataArea:setCellColor( nRowPos, aColor[ 1 ], aColor[ 2 ] )
         ENDIF
      ELSE
         RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
      ENDIF
   ELSE
      RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
   ENDIF
   RETURN RETVAR
ENDCLASS
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: :Colorblock

Beitrag von saul »

Hallo,
das habe ich mal getestet. Leider noch nicht mit Erfolg. Mein alter Code

Code: Alles auswählen

// Spalten für alle Felder anfügen
PRES_spa2:={ ; 	// Presentation Parameter fuer den Browser   1024x768
{XBP_PP_COL_HA_BGCLR          , GRA_CLR_WHITE   }, ;
{XBP_PP_COL_HA_FGCLR          , GRA_CLR_BLACK   }, ;
{XBP_PP_COL_HA_CAPTION     , "Kunde" },;
{XBP_PP_COL_HA_ALIGNMENT   , XBPALIGN_HCENTER},;
{XBP_PP_COL_DA_CHARWIDTH   , len(kunde)+2		 },;
{XBP_PP_COL_DA_BGCLR          , GRA_CLR_WHITE  }, ;
{XBP_PP_COL_DA_FGCLR          , GRA_CLR_BLACK   }, ;
{XBP_PP_COL_DA_HILITE_BGCLR   , GRA_CLR_BLUE   }, ;
{XBP_PP_COL_DA_HILITE_FGCLR   , GRA_CLR_WHITE   }, ;
{XBP_PP_COL_DA_COMPOUNDNAME, str(mschrift,2,0)+".Courier New" }}

oxbpcol:=XbpColumn():new(,,,,PRES_spa2)
oXbpCol:dataLink := {|| " "+kunde+" " }
oXbpCol:colorblock:= {|| IIf(Zahl<0 , {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{GRA_CLR_BLACK,GRA_CLR_WHITE})}
oBrowse:addColumn( oxbpcol)
den habe ich jetzt umgestellt nach

Code: Alles auswählen

oxbpcol:=XbpColumnLocal():new(,,,,PRES_spa2)
oXbpCol:dataLink := {|| " "+kunde+" " }
oXbpCol:colorblock:= {|| IIf(Zahl<0 , {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{GRA_CLR_BLACK,GRA_CLR_WHITE})}
oBrowse:addColumn( oxbpcol)
Leider wird mir jetzt kein o:colorblock mehr angezeigt. Was mache ich falsch?

Code: Alles auswählen

   INLINE METHOD HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
Woher bekommt das Programm die Übergabevariablen nRowPos, lHilite, lFrame, lRepaint?

mfg
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: :Colorblock

Beitrag von AUGE_OHR »

saul hat geschrieben:das habe ich mal getestet. Leider noch nicht mit Erfolg. Mein alter Code
...
den habe ich jetzt umgestellt nach

Code: Alles auswählen

oxbpcol:=XbpColumnLocal():new(,,,,PRES_spa2)
oXbpCol:dataLink := {|| " "+kunde+" " }
oXbpCol:colorblock:= {|| IIf(Zahl<0 , {GRA_CLR_BLACK,GRA_CLR_PALEGRAY},{GRA_CLR_BLACK,GRA_CLR_WHITE})}
oBrowse:addColumn( oxbpcol)
Leider wird mir jetzt kein o:colorblock mehr angezeigt. Was mache ich falsch?
hm ... vorher hattest du nZahl (statt Zahl)

... ist der o:Datalink "so" richtig ? ( mit den " " und ohne ALIAS-> )

p.s. setzte mal oBrowse als Parent für deine Column ein
saul hat geschrieben:

Code: Alles auswählen

   INLINE METHOD HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
Woher bekommt das Programm die Übergabevariablen nRowPos, lHilite, lFrame, lRepaint?
o:hiliteRow() ist eine Method von XbpColumn() und die Parameter werden durch XbpBrowse() übergeben.
gruss by OHR
Jimmy
Antworten