XbpQuickBrowse() und Farben Problem

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

XbpQuickBrowse() und Farben Problem

Beitrag von AUGE_OHR »

hi,

nach dem XbpMultiCellGroup() Beispiel von Rolf hab ich mein XbpBrowse()
Demo nach XbpQuickBrowse() portiert.

Leider hab ich ein Problem wenn ich das "Fenster" maximiere dann
"verliere" ich die Farben :(

Das selbe Problem ist wohl auch bei Scrollbar ( hScroll := .F.)

Eine weiter Frage bezieht sich auf die Presentation Parameter :

Wie kann ich aPRES_PARAM1 (richtig) benutzen ? Beim Init/Create
"scheint" es nicht zu "wirken" sodas ich nach(!) dem Create mit

Code: Alles auswählen

oQB:DataArea:SetPresParam(aPRES_PARAM1)
erst aPRES_PARAM1 einstellen kann.

ach ja noch ein "Problem" : wie bekomme ich die "Header-Line" weg ?

gruss by OHR
Jimmy

Code: Alles auswählen

#include "Appevent.ch"
#include "Gra.ch"
#include "Xbp.ch"
#include "Font.ch"

#define  aPRES_PARAM1     { ; // Presentation Parameter fuer XbpMultiCellGroup()
         {XBP_PP_FGCLR          , XBPSYSCLR_WINDOWSTATICTEXT   }, ;
         {XBP_PP_BGCLR          , XBPSYSCLR_WINDOW             }, ;
         {XBP_PP_HILITE_FGCLR   , XBPSYSCLR_HILITEFOREGROUND   }, ;
         {XBP_PP_HILITE_BGCLR   , XBPSYSCLR_HILITEBACKGROUND   }, ;
         {XBP_PP_COMPOUNDNAME   , FONT_DEFPROP_SMALL           }, ;
         {XBP_PP_CGRP_ROWHEIGHT      , 22                      }, ;
         {XBP_PP_CGRP_FRAMELAYOUT    , XBPFRAME_NONE           }, ;
         {XBP_PP_CGRP_CELLFRAMELAYOUT, XBPFRAME_BOX            }, ;
         {XBP_PP_CGRP_CELLWIDTH      , 1                       }}

#pragma Library( "XppUI2.LIB" )
#pragma Library( "Adac20b.lib" )

PROCEDURE AppSys
RETURN

PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oDlg
LOCAL aPos  := {50,100}
LOCAL aSize := {800+8,170}
LOCAL aTimeline[5][100]
LOCAL aRef  := {}
LOCAL oQB,i,j,nColor

   oDlg          := XbpDialog():new( ,,aPos, aSize,, .F. )
   oDlg:icon     :=  1
   oDlg:taskList := .T.
   oDlg:title    := "DevCon 2007"
   oDlg:border   := XBPDLG_NO_BORDER
   oDlg:create()
   oDlg:drawingArea:setFontCompoundName( FONT_DEFPROP_SMALL )
   oDlg:drawingArea:resize := {|mp1,mp2,obj| obj:childList()[1]:setSize(mp2) }

   FOR i = 1 TO 100
      AADD(aRef,i)
   NEXT
   i := 1
   FOR i = 1 TO 5
       AFILL(aTimeline[i]," ")
   NEXT

   oQB          := XbpQuickBrowse():new()
   oQB:dataLink := DacPagedDataStore():new( aTimeline,aRef )
   oQB:cursorMode := XBPBRW_CURSOR_CELL
   oQB:itemSelected := {| aRowCol, uNIL, self | Showme(aRowCol) }
   oQB:style   := XBP_STYLE_PLAIN
   //
   // work with Problems
   //
*   oQB:vScroll := .F.
*   oQB:hScroll := .F.
   //
   //  aPRES_PARAM1 does not work here ?
   //
   oQB:create(oDlg:drawingArea ,, {0,0}, aSize, aPRES_PARAM1)
   //
   // funktioniert erst hier
   //
   oQB:DataArea:SetPresParam(aPRES_PARAM1)

   TESTMARK(aTimeline,oQB)

   i := 1
   FOR i := 1 TO 5  // Row
      DO CASE
         CASE i = 1 ; nColor := GraMakeRGBColor({000,100,204})
         CASE i = 2 ; nColor := GraMakeRGBColor({025,138,255})
         CASE i = 3 ; nColor := GraMakeRGBColor({076,164,254})
         CASE i = 4 ; nColor := GraMakeRGBColor({153,203,255})
         CASE i = 5 ; nColor := GraMakeRGBColor({229,242,255})
      ENDCASE

      FOR j = 1 TO 100
         oQB:setColWidth(8,j)
         oQB:dataArea:setAlignment( j,XBPALIGN_HCENTER+XBPALIGN_VCENTER)
         oQB:dataArea:setCell( i, j, aTimeline[i,j])
         IF aTimeline[i,j] == "+"
            oQB:dataArea:setCellColor( i, j, NIL, nColor,.T.)
         ELSE
            oQB:dataArea:setCellColor( i, j, NIL, GRA_CLR_WHITE,.T.)
         ENDIF
      NEXT
   NEXT

   oDlg:show()
   oQB:show()
   Setappfocus(oQB)

   DO WHILE nEvent <> xbeP_Close
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      IF nEvent == xbeP_Keyboard .AND. mp1 = xbeK_ESC
         QUIT
      ENDIF
      oXbp:handleEvent( nEvent, mp1, mp2 )
   ENDDO
RETURN

PROCEDURE TESTMARK(aTimeline,oQB)
LOCAL aTOM := { {10,20},{30,55},{70,80},{99,100} }
LOCAL aJIM := { { 1, 8},{ 9,15},{17,28},{37,43},{47,58},{67,78},{81,88},{91,98} }
LOCAL aMAR := { {10,18},{27,48},{61,78},{87,98} }
LOCAL aHUB := { {10,19},{21,28},{31,48},{51,68},{81,88},{99,100} }
LOCAL aJAN := { {11,17},{25,32},{42,58},{67,88},{91,100} }
LOCAL aTXT, aALL := {}
LOCAL i,iMax,j
LOCAL k,nLen

   AADD(aALL,aTOM)
   AADD(aALL,aJIM)
   AADD(aALL,aMAR)
   AADD(aALL,aHUB)
   AADD(aALL,aJAN)

   i := j := k := 1
   nLen := LEN(aALL)
   FOR k = 1 TO nLen
      aTXT := {}
      i := 1
      iMax := LEN(aALL[k])
      FOR i = 1 TO iMax
         j := 1
         FOR j = aALL[k][i][1] TO aALL[k][i][2]
            AADD(aTXT,j)
            MARKFELD(aTimeline,aTXT,k,oQB)
         NEXT j
      NEXT i
   NEXT k

   oQB:refreshall()

RETURN

FUNCTION MARKFELD(aTimeline,aMark,nUser,oQB)
LOCAL j,nPosi
LOCAL nColor := GRA_CLR_RED

*   DO CASE
*      CASE nUser = 1 ; nColor := GraMakeRGBColor({000,100,204})
*      CASE nUser = 2 ; nColor := GraMakeRGBColor({025,138,255})
*      CASE nUser = 3 ; nColor := GraMakeRGBColor({076,164,254})
*      CASE nUser = 4 ; nColor := GraMakeRGBColor({153,203,255})
*      CASE nUser = 5 ; nColor := GraMakeRGBColor({229,242,255})
*   ENDCASE

   FOR j = 1 TO 100
       IF nPosi := ASCAN(aMark,j) > 0
          aTimeline[nUser][j] := "+"
//
// not work here ?
//
          oQB:dataArea:setCell( nUser, j, "+")
          oQB:dataArea:setCellColor( nUser, j, NIL, nColor)
       ENDIF
   NEXT

RETURN NIL

FUNCTION Showme(aRowCol)
LOCAL a := LTRIM(STR(aRowCol[1]))
LOCAL b := LTRIM(STR(aRowCol[2]))
   MSGBOX("Reihe "+a+" Spalte "+b )
RETURN NIL

*
* eof
*
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Beitrag von Rolf »

Hallo Jimmy

hab leider grad kaum Zeit

schau mal bitte unter :drawRow() oder in den Beispielen nach XbpColoredQuickBrowse().

Grüße Rolf
Antworten