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
![Sad :(](./images/smilies/sad.gif)
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)
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
*