xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

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

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti » Fr, 08. Jun 2018 12:26

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: 11228
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von AUGE_OHR » Mo, 11. Jun 2018 2:07

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: 56
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti » Mo, 11. Jun 2018 8:42

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: 11228
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von AUGE_OHR » Mo, 11. Jun 2018 18:41

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) 6-mal heruntergeladen
gruss by OHR
Jimmy

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

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti » Di, 12. Jun 2018 8:53

Ich glaube wir reden aneinander vorbei. Ich häng mal ein Bild ran
BrowseColor.png
BrowseColor.png (4.97 KiB) 186 mal betrachtet

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2392
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von Wolfgang Ciriack » Di, 12. Jun 2018 12:22

Setz doch mal statt nil deine Colorbedingung für das Zebra ein.
Viele Grüße
Wolfgang

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

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti » Di, 12. Jun 2018 14:30

Das funktioniert zwar, allerdings nur für kleine Datenmengen ( ohne scrollen ).

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11228
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von AUGE_OHR » Di, 12. Jun 2018 23:13

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: 56
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti » Mi, 13. Jun 2018 8:41

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