xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von notloesung »

Hi,

gibt es eine Möglichkeit innerhalb eines Browsers jede zweite Zeile eine andere Hintergrundfarbe zu zuordnen (ganz Unabhängig von den Werten etc.)? Soll rein der Optik dienen.

Gruß,
Notloesung
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:

Beitrag von Jan »

Die Hintergrundfarbe kann man ja recht einfach manipulieren. Das Problem besteht darin, jede 2. Zeile zu treffen. Ich hab mal einen Browse geschrieben, wo die Hintergrundfarbe abhängig von einem bestimmten Wert war. Wenn Du da also nicht mit Index arbeitest, kannst Du das über den Recno() machen, jeder gerade normal und jeder ungerade anders.

Theoretisch sollte das sicher auch bei Index-Nutzung funktionieren. Da wüsste ich im Moment aber nicht, wie man da die Satznummer feststellt. geht aber bestimmt :?

Jan
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Jan hat geschrieben:Die Hintergrundfarbe kann man ja recht einfach manipulieren. Das Problem besteht darin, jede 2. Zeile zu treffen. Ich hab mal einen Browse geschrieben, wo die Hintergrundfarbe abhängig von einem bestimmten Wert war. Wenn Du da also nicht mit Index arbeitest, kannst Du das über den Recno() machen, jeder gerade normal und jeder ungerade anders.
Hallo Jan,

das mit den Farben abhängig vom Wert habe ich auch schon gemacht. Aber auf die Idee mit der RecNo() bin ich einfach nicht gekommen.
Das werde ich gleich mal testen.

Danke,
Notloesung
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Jan hat geschrieben:kannst Du das über den Recno() machen, jeder gerade normal und jeder ungerade anders.
Hallo Jan,

lässt sich leider nicht so einfach realisieren.
Ich habe es mit der Recno() und der Zeilenummer des Browsers probiert.
Funktionier aber nicht so wie es soll - was auch logisch ist.

Beim blättern ändert sich (ständig) sowohl die Recno() auch die Zeilennummer des Browsers. Und dann wird natürlich jedes Mal die Farbe geändert und zwar immer in jeder! Zeile.

Schade ...

Gruß,
Notloesung
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:

Beitrag von Jan »

??? Die Recno() darf sich doch nicht ändern. Die hat ja nix mit dem Browse zu tun. Da sollte also die Markierung mitwandern.

Mit der Zeilennummer des Browses hast Du natürlich recht - das kann nicht gut gehen, wenn Du die farbige Markierung auf dem Datensatz und nicht auf der Browserzeile haben möchtest.

Jan
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Beitrag von hschmidt »

Hallo,

die colorblock ivar von Xbpcolumn ist nicht vollständig dokumentiert.
Es wird nicht nur der Wert , sondern auch die Spalte und Zeilennummer übergeben.

Also kannst Du folgendes in der Init-Methode Deiner (abgeleiteten) xbpbrowseColumn benutzen:

Code: Alles auswählen

    ::colorblock    := {|xValue,oCol,nRow|self:SetCellColor(xValue,oCol,nRow)}
und dann...

Code: Alles auswählen

METHOD xbpColumn:SetCellColor (xValue,a,nRow)

LOCAL aColor    := {}

 IF nRow % 2 = 0
        aColor := {GRA_CLR_BLACK, GRA_CLR_YELLOW}
    ELSE
        aColor := {GRA_CLR_BLACK, GRA_CLR_WHITE}
    ENDIF

RETURN aColor
Das habe ich nicht exakt so getestet, aber es sollte funktionieren.

Hans
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

hschmidt hat geschrieben:Das habe ich nicht exakt so getestet, aber es sollte funktionieren.
Hallo Hans,

das funktioniert richtig gut.

Danke.

Jan hat geschrieben:Die Recno() darf sich doch nicht ändern.
Hi Jan,

das ist richtig und auch das funktiniert. Habe eben nur die falsche Recno() genommen. Ich nehme jetzt aber die Lösung von Hans, da ich dabei kein Kopf um den Index machen brauch.

Danke für die Hilfe!
Notloesung
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:

Beitrag von Jan »

Hallo Noti,

und ich hatte mich beim Recno() schon gewundert!

Das die Lösung von Hans besser ist ist mir schon klar. Denn dann ist auch ein Index vollkommen egal. Und es ist eleganter. Man muß halt nur die undokumentierten Parameter alle kennen, dann klappts auch mit dem Nachbarn, äh Browse.

Jan
Zuletzt geändert von Jan am Mo, 25. Jun 2007 17:29, insgesamt 1-mal geändert.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Super!
Ich habe schon lange nach der Lösung gesucht und dann aufgegeben. Jetzt kann ich diese Lösung auch bei mir einsetzen.
Danke!
Gruß,

Andreas
VIP der XUG Osnabrück
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Beitrag von hschmidt »

Hallo,

auf diese undokumentierten Parameter bin ich auch nur per Zufall gestoßen und habe es mir zur Gewohnheit gemacht, bei allen Funktionen, die ich bisher noch nicht benutzt habe, nach so etwas zu forschen.

Bin allerdings nicht weiter fündig geworden :|

Hans
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:

Beitrag von Jan »

Vielleicht sollten wir solche undokumentierten Sachen hier im Forum sammeln?

Was sagt denn Alaska zu soetwas? Nehmen die Punkte auf wo man die hingewiesen hat, daß das fehlt?

Jan
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:

Beitrag von brandelh »

Hallo Jan,

per PDR Formular kann man auch Fehler / fehlende Hinweise in der
Dokumentation melden. Habe ich auch schon gemacht, allerdings
weiß ich jetzt nicht mehr ob sich daraufhin was geändert hat.

Sollten die Parameter noch nicht endgültig sein kann ja Alaska sagen dass das vorläufig ist. :wink:
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
das war schon häufiger Thema...
Funktionen sind aus den unterschiedlichsten Gründen undokumentiert...
  • Das Dokumentieren wurde vergessen (eher selten)
  • Sie sind ursprünglich geplant gewesen, aber aus verschiedenen Gründen durch andere Funktionalität (oder Planungen) obsolet
  • Sie laufen nicht richtig rund und sollen erst noch verfeinert werden
  • ...
Auf jeden Fall sollte nie vergessen werden, dass eine undokumentierte Funktion in der nächsten Version nicht mehr vorhanden zu sein muß!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender 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

Beitrag von AUGE_OHR »

hi,
hschmidt hat geschrieben: die colorblock ivar von Xbpcolumn ist nicht vollständig dokumentiert.
Das ist nicht ganz richtig. Der Colorblock ist auf :dataArae, :Heading
und :footing anwendbar. Alle 3 Objecte enthalten eine Refernz auf
XbpCellGroup(). Dort findet man auch die vollständig documentierte
Methode

Code: Alles auswählen

:setCellColor(<nRowPos>, [<nColorFG>], [<nColorBG>], [<lRepaint>] )
gruss by OHR
Jimmy
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Beitrag von hschmidt »

Jimmy,

ich habe nicht gesagt, dass die setCellColor-Methode unvollständig dokumentiert ist, sondern die Colorblock-Instanzvariable.

aus der Doku:
In die Instanzvariable :colorBlock kann optional ein Codeblock eingetragen werden. Ihm wird als Parameter der Wert übergeben, der in der aktuellen Zelle angezeigt werden soll. Das ist der Rückgabewert des :dataLink Codeblocks. In Abhängigkeit dieses Wertes kann die Farbe einer Zelle definiert werden. Dazu muß der Codeblock in :colorBlock ein Array mit zwei Elementen zurückgeben, die Farbkonstanten für die Vorder- und Hintergrundfarbe der Zelle beinhalten. Die allgemeine Form des Codeblocks lautet:

{|xValue| IIf( <lExpression>, {<nColorFG1>,<nColorBG1>}, ;

{<nColorFG2>,<nColorBG2>} )

Dort wird als Parameter nur xValue und eben nicht oCol und nRow erwähnt.

BTW: hauptsache, es funktioniert.
Hans
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

Beitrag von AUGE_OHR »

hi,

was ich meine ist das zwar "scheinbar" Coordinaten im :ColorBlock
ausgegeben werden, aber ich bin der Meinung das man die nicht
benutzten kann/sollte weil die zur Laufzeit dann nicht mehr stimmen.

Wenn du eine "lange" Liste hast sieht es ja im ersten Moment so aus,
aber wenn du dann scrollst ... (je nachdem ob die letzte Zeile %2=0 )

Das scrollen muss man noch mit xbpColumn:HiliteRow() abfangen
... (auch hier ob die erste/letzte Zeile %2=0 ...)

und dann gibt es auch noch Crtl-PgDn/PgUp ... damit wären wir bei
der xbpColumn:DrawRow( nRow, lRedraw ) Methode ...

wenn man aber schon bei der xbpColumn:DrawRow() Methode ist
kann man hier die "einfärbung" vornehmen in der "richtigen" nRow !

gruss by OHR
Jimmy
Nachtrag : Was man nun für Methoden braucht und wie man die
anwedet kann man sich am Beispiel von Alaska ansehen.
C:\ALASKA\XPPW32\SOURCE\samples\basics\QBrowse\QBROWSE2.prg
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hat jemand die Lösung schon am Laufen.
Ich habe einfach über XbpBrowse:Additem die Spalten eingefügt und denen ein Colorblock zugewiesen. Es scheint auf den ersten Blick zu funktionieren aber beim Scrollen färben sich dann die Zeilen nur zufällig.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Ich habe jetzt den von Jimmy genannten Beispiel C:\ALASKA\XPPW32\SOURCE\samples\basics\QBrowse\QBROWSE2.prg
auf XbpBrowse umgestrickt.

Code: Alles auswählen

CLASS XbpColoredBrowse FROM XbpBrowse
EXPORTED:
   VAR EvenRow
   INLINE METHOD Init( p1, p2, p3, p4, p5, p6 )
      ::XbpBrowse:Init( p1, p2, p3, p4, p5, p6 )
      ::EvenRow := .T.
   RETURN self

   INLINE METHOD DrawRow( nRow, nCol, aValues, nCols, lRedraw )
      LOCAL aValue, j
      LOCAL lRGBLightBlue := {201,222,245}, lHilite := .F.

      /*
       * Zeile zeichnen
       */
      ::XbpBrowse:DrawRow( nRow, nCol, aValues, nCols, lRedraw )
      *aValue := ::dataLink:GetRowData( nRow )


      /*
       * Die Zeile einfaerben, abhaengig davon, ob wir aktuell gerade
       * oder ungerade Zeilen einfaerben.
       */
      IF ::EvenRow
         IF nRow % 2 == 0
            lHilite := .T.
         ENDIF
      ELSE
         IF nRow % 2 == 1
            lHilite := .T.
         ENDIF
      ENDIF
      IF lHilite //.AND. ValType(aValues[1]) != "U"
         FOR j := 1 TO ::ColCount
            ::getColumn(j):dataArea:SetCellColor( nRow, NIL, GRA_CLR_PALEGRAY, lRedraw )
            *::dataArea:SetCellColor( nRow, j, NIL, GraMakeRGBColor( lRGBLightBlue ), lRedraw )
         NEXT
      ENDIF
   RETURN .T.

   INLINE METHOD ScrollDown( nScroll )
      IF nScroll % 2 == 1
         ::EvenRow := !::EvenRow
      ENDIF
   RETURN ::XbpBrowse:ScrollDown( nScroll )

   INLINE METHOD ScrollUp( nScroll )
      IF nScroll % 2 == 1
         ::EvenRow := !::EvenRow
      ENDIF
   RETURN ::XbpBrowse:ScrollUp( nScroll )

   INLINE METHOD RefreshAll( p1, p2 )
      ::EvenRow := .T.
   RETURN ::XbpBrowse:RefreshAll( p1, p2 )

   INLINE METHOD GoTop()
      ::EvenRow := .T.
      ::XbpBrowse:GoTop()
   RETURN ::ForceStable()

   INLINE METHOD GoBottom()
      ::EvenRow := .T.
      ::XbpBrowse:GoBottom()
   RETURN ::ForceStable()

ENDCLASS
Soweit funktioniert es jetzt besser, obwohl ich nicht weiss, ob ich alles richtig gemacht habe.
Jetzt habe ich aber ein anderes Problem. Mein an die Spalten zugewiesener Colorblock funktioniert nur in den Spalten, wo die Zeileneinfärbung nicht eingreift.
Gruß,

Andreas
VIP der XUG Osnabrück
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

Beitrag von AUGE_OHR »

hi,
andreas hat geschrieben: auf XbpBrowse umgestrickt.
...
hm ... gesehen und probiert und ja da kommen wir der Sache doch
schon ziemlich nahe. So ähnlich sah mein Versuch auch aus, aber

Code: Alles auswählen

INLINE METHOD DrawRow( nRow, nCol, aValues, nCols, lRedraw )
INLINE METHOD ScrollDown( nScroll )
INLINE METHOD ScrollUp( nScroll )
während es die Methode DrawRow wohl auch für QuickBrowse gibt
sind die anderen "eigendlich" für XbpColumn ... wunder ...
andreas hat geschrieben: Soweit funktioniert es jetzt besser, obwohl ich nicht weiss, ob ich alles richtig gemacht habe.
Jetzt habe ich aber ein anderes Problem. Mein an die Spalten zugewiesener Colorblock funktioniert nur in den Spalten, wo die Zeileneinfärbung nicht eingreift.
sowas in der Art hatte mich schon bei einem normalen Cursor (ROW)
gestört wenn der über einem Colorblock stand. Hier eine Lösung wieder
mal von Diego :

Code: Alles auswählen

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

   IF ( lHilite )              // .AND. ( aColor:= Eval( ::colorBlock ) ) # nil
      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
vielleicht solltest du versuchen doch das ganze vom XbpColumn abzu-
leiten statt von XbpBrowse ?

gruss by OHR
Jimmy
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

Beitrag von AUGE_OHR »

hi,
AUGE_OHR hat geschrieben: vielleicht solltest du versuchen doch das ganze vom XbpColumn abzu-
leiten statt von XbpBrowse ?
also damit bin ich nicht weiter gekommen, wohl aber was das Problem
mit vorhandenen Color Codeblock angeht

Code: Alles auswählen

INLINE METHOD DrawRow( nRow, nCol, aValues, nCols, lRedraw )
LOCAL aValue, j
LOCAL aRGB     := {153,255,203}
LOCAL lHilite  := .F.

   /*
    * Zeile zeichnen
    */
   ::XbpBrowse:DrawRow( nRow, nCol, aValues, nCols, lRedraw )

   /*
    * Die Zeile einfaerben, abhaengig davon, ob wir aktuell gerade
    * oder ungerade Zeilen einfaerben.
    */
   IF ::EvenRow
      IF nRow % 2 == 0
         lHilite := .T.
      ENDIF
   ELSE
      IF nRow % 2 == 1
         lHilite := .T.
      ENDIF
   ENDIF
   IF lHilite                    //.AND. ValType(aValues[1]) != "U"
      FOR j := 1 TO ::ColCount
         IF ::getColumn(j):colorBlock <> NIL
            Eval( ::getColumn(j):colorBlock )
         ELSE
            ::getColumn(j):dataArea:SetCellColor( nRow, NIL, GraMakeRGBColor(aRGB), lRedraw )
         ENDIF
      NEXT
   ENDIF
RETURN .T.
wenn du dann auch für Column die einen Colorblock haben die Class
XbpColumnLocal() von Diego benutzt, dann sieht man auch bei einem
XBPBRW_CURSOR_ROW die Farben wenn man draufsteht.

gruss by OHR
Jimmy
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Guten Morgen!

Warum denn so kompliziert ( :?: )
Bei funktioniert es, bisher ohne Macken, durch eine einfache ColorBlock Zuweisung. Diesen weise ich aber jeder Column zu :!:

Hier die Column:

Code: Alles auswählen

         // Anfragenummer
         aPP[1][2] := pp_ANFRAGENUMMER
         aPP[8][2] := 8
         oXbpColumn          := XbpColumn():new(,,,,aPP)
         oXbpColumn:dataLink := {|| SQLBSANF->ANF_NR }
         oXbpcolumn:colorBlock := {|xValue,oCol,nRow| IIf( nRow % 2 == 0, ;
                                                           {NIL,pnWINLINE_BG_5}, ;
                                                           {NIL,pnWINLINE_BG_3} ) }
         oXbpColumn:create()
         ::oBrowserSQL:addColumn( oXbpColumn )
Meine aPP:

Code: Alles auswählen

         // Allgemeine Präsentationsparameter für den Browser
         aPP := { ;
                  { XBP_PP_COL_HA_CAPTION     , ""                         }, ;   // Überschrift Kopfzeile
                  { XBP_PP_COL_HA_FGCLR       , GRA_CLR_WHITE              }, ;   // Schriftfarbe - Überschrift
                  { XBP_PP_COL_HA_BGCLR       , pnWINLINE_BG_2             }, ;   // Hintergrundfarbe - Überschrift
                  { XBP_PP_COL_HA_HEIGHT      , 20                         }, ;   // Höhe der Kopfzeile in Pixel
                  { XBP_PP_COL_HA_ALIGNMENT   , XBPALIGN_TOP               }, ;   // Ausrichtung von Text
                  { XBP_PP_COL_DA_FGCLR       , GRA_CLR_BLACK              }, ;   // Hervorgehobene Vordergrundfarbe
                  { XBP_PP_COL_DA_BGCLR       , pnWINLINE_BG_3              }, ;   // Hervorgehobene Hintergrundfarbe
                  { XBP_PP_COL_DA_CHARWIDTH   , XBP_AUTOSIZE               }, ;   // Spaltenbreit in Buchstaben!
                  { XBP_PP_COL_DA_ROWSEPARATOR, XBPCOL_SEP_NONE            }, ;   // Trennlinie zwischen Zeilen
                  { XBP_PP_COL_DA_COLSEPARATOR, XBPCOL_SEP_NONE            }, ;   // Trennlinie zwischen Spalten
                  { XBP_PP_COL_DA_HILITE_FGCLR, GRA_CLR_BLACK              }, ;   // Hervorgehobene Schriftfarbe
                  { XBP_PP_COL_DA_HILITE_BGCLR, pnWINLINE_BG_4             }, ;   // Hervorgehobene Hintergrundfarbe
                  { XBP_PP_COL_DA_ROWHEIGHT   , 9                          }, ;   //
                  { XBP_PP_COL_DA_HILITEFRAMELAYOUT, XBPCOL_SEP_LINE       }, ;   //
                  { XBP_PP_COL_DA_CELLFRAMELAYOUT, XBPFRAME_BOX         }, ; //
                  { XBP_PP_COL_DA_CELLHEIGHT  , 9                          } ;   // Höhe der Zelle in Pixel
                }
Das war’s. Wie gesagt geht ohne Probleme (habe dies bisher nur im Test, ist also noch nicht produktiv - hoffe da tauchen dann nicht irgendwelche Unvorhersehbahren Probleme auf).

Gruß,
Notloesung
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Jimmy,

danke, das funktioniert erstmal.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Notloesung,

ich habe es bei mir am Anfang auch so gemacht, mit dem Unterschied, dass ich das ganze in eine Funktion ausgelagert habe, um jedesmal weniger zu schreiben.
Dabei gab es Problem, wenn ich im Browse scrollen musste. Da tauchten plötzlich mehrere Zeilen in gleicher Farbe.
Mit der Lösung von Oben funktioniert es bis jetzt einwandfrei. Zumindest habe ich noch keine Fehler festgestellt.
Gruß,

Andreas
VIP der XUG Osnabrück
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von vorti »

Hallo,
ich hol das hier nochmal hoch.
Ist es irgendwie möglich, den "Zebra-Stil" zu behalten, auch wenn man danach nochmal mit ColorBlock verfärbt.
Er verfärbt mir zwar die Column`s, die auf die entsprechende Bedingung passen, allerdings mach er den restlichen Hintergrund weiß.
Kann mir jemand helfen. Danke
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: xbpBrowse / XbpColumn -> unterschiedliche Zeilenfarbe?

Beitrag von Tom »

Wenn der Colorblock NIL zurückliefert, sollten die Standardfarben bzw. Präsentationsparameter greifen:

Code: Alles auswählen

oCol:ColorBlock := {|x|IF(x='Juhu',{GRA_CLR_BLACK,GRA_CLR_GREEN},NIL)}
Herzlich,
Tom
Antworten