Seite 2 von 2

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Fr, 08. Jun 2018 12:26
von vorti
Nein, leider nicht.
Wie gesagt, die Zellen wo das x greift macht er, allerdings ist der Rest weiß.
An der Stelle sei gesagt, dass ich die Column´s über eine Schleife einlese, wenn ich sie hintereinander reinschreibe, macht er den "Zebra-Stil" allen Spalten außer in der wo die Bedingung zutrifft.

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Mo, 11. Jun 2018 2:07
von AUGE_OHR
vorti hat geschrieben: Fr, 08. Jun 2018 12:26 An der Stelle sei gesagt, dass ich die Column´s über eine Schleife einlese, wenn ich sie hintereinander reinschreibe, macht er den "Zebra-Stil" allen Spalten außer in der wo die Bedingung zutrifft.
es gibt ja hier 2 Vorschläge :

1.) oXbpcolumn:colorBlock := {|xValue,oCol,nRow|

2.) ::XbpBrowse:DrawRow( nRow, nCol, aValues, nCols, lRedraw )

wie im Thread erwähnt verwende ich XbpColumnLocal() wenn es noch zusätzliche o:Coloblock Codeblöcke habe.
deshalb geht dan IMHO Vorschlag 1.) nicht in solchen Fällen denn da habe ich schon den o:Colorblock belegt

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Mo, 11. Jun 2018 8:42
von vorti
Danke für die Antwort,
leider das gleiche Ergebnis. Für die Spalte, in welcher ich meine Bedingung habe, bleibt der Hintergrund weiß, falls x nicht zutrifft.
Ich häng mal ein Bsp. ran.

Code: Alles auswählen

oDlg := GuiStdDialog()
SetAppWindow( oDlg )

drawingArea := oDlg:drawingArea

oBrowse := GuiBrowseDB() 		// XbpColoredBrowse

oColumn := XbpColumnLocal():new( oBrowse:setParent() )

oColumn := oBrowse:AddColumn( {|| &( aZellinhalt[1] )}, 20, "Spalte 1" )
oColumn:ColorBlock := {|x| if( x = "test", { GRA_CLR_BLACK, GRA_CLR_YELLOW }, NIL )  }
oColumn := oBrowse:AddColumn( {|| &( aZellinhalt[2] )}, 20, "Spalte 2" )
oColumn := oBrowse:AddColumn( {|| &( aZellinhalt[3] )}, 20, "Spalte 3" )
oColumn := oBrowse:AddColumn( {|| &( aZellinhalt[4] )}, 20, "Spalte 4" )


Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Mo, 11. Jun 2018 18:41
von AUGE_OHR
vorti hat geschrieben: Mo, 11. Jun 2018 8:42 Für die Spalte, in welcher ich meine Bedingung habe, bleibt der Hintergrund weiß, falls x nicht zutrifft.
das hast du jetzt falsch verstanden. XbpColumnLocal() ist dafür WENN ein ColorBlock durch den Cursor "verdeckt" wird.

hier mal ein Zebra Browse wo ein o:Colorblock, trotzt Cursor, angezeigt wird.
ZebraBro.zip
pure Xbase++ Source
(748 Bytes) 246-mal heruntergeladen

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Di, 12. Jun 2018 8:53
von vorti
Ich glaube wir reden aneinander vorbei. Ich häng mal ein Bild ran
BrowseColor.png
BrowseColor.png (4.97 KiB) 5814 mal betrachtet

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Di, 12. Jun 2018 12:22
von Wolfgang Ciriack
Setz doch mal statt nil deine Colorbedingung für das Zebra ein.

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Di, 12. Jun 2018 14:30
von vorti
Das funktioniert zwar, allerdings nur für kleine Datenmengen ( ohne scrollen ).

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Di, 12. Jun 2018 23:13
von AUGE_OHR
vorti hat geschrieben: Di, 12. Jun 2018 14:30 Das funktioniert zwar, allerdings nur für kleine Datenmengen ( ohne scrollen ).
bei mir funktioniert es ohne Problem mit Wheel und grossen Daten Mengen.

zu deinem Snapshot : zeig uns doch mal deinen Codeblock

Code: Alles auswählen

         IF ::getColumn( j ) :colorBlock <> NIL
            EVAL( ::getColumn( j ) :colorBlock ) 
         ELSE
hier wird ja nur geprüft "ob" es einen Codeblock gibt.

wenn der o:ColorBlock aber abhängig "vom Wert" sein soll müsste man den Codeblock so schreiben

Code: Alles auswählen

   oCol:Colorblock := {|| IF( ARTIKEL->Bestand < 1, { GRA_CLR_RED, GRA_CLR_WHITE }, NIL ) }
und ZebraBro:DrawRow() so modifizieren

Code: Alles auswählen

         IF ::getColumn( j ) :colorBlock <> NIL
            IF EVAL( ::getColumn( j ) :colorBlock ) = NIL
               ::getColumn( j ) :dataArea:SetCellColor( nRow, NIL, GraMakeRGBColor( ::aRGB ), lRedraw )
            ENDIF
         ELSE
            ::getColumn( j ) :dataArea:SetCellColor( nRow, NIL, GraMakeRGBColor( ::aRGB ), lRedraw )
         ENDIF

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Verfasst: Mi, 13. Jun 2018 8:41
von vorti
Perfekt, jetzt passt es.
Die Lösung war die Zeile.

Code: Alles auswählen

IF EVAL( ::getColumn( j ) :colorBlock ) = NIL
Bei mir sah es so aus

Code: Alles auswählen

IF ::getColumn( j ) :colorBlock <> NIL
	EVAL( ::getColumn( j ) :colorBlock )
ELSEIF ::getColumn( j ) :colorBlock = NIL
        ::getColumn( j ):dataArea:SetCellColor( nRow, NIL, GraMakeRGBColor( ::aRGB ), lRedraw )
ELSE
	::getColumn( j ):dataArea:SetCellColor( nRow, NIL, GraMakeRGBColor( ::aRGB ), lRedraw )
ENDIF
Ich danke dir für die Mühe.