xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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.
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: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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
gruss by OHR
Jimmy
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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" )

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: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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) 245-mal heruntergeladen
gruss by OHR
Jimmy
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti »

Ich glaube wir reden aneinander vorbei. Ich häng mal ein Bild ran
BrowseColor.png
BrowseColor.png (4.97 KiB) 5732 mal betrachtet
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: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von Wolfgang Ciriack »

Setz doch mal statt nil deine Colorbedingung für das Zebra ein.
Viele Grüße
Wolfgang
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti »

Das funktioniert zwar, allerdings nur für kleine Datenmengen ( ohne scrollen ).
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: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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
gruss by OHR
Jimmy
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag 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.
Antworten