You have to program it
This is what i do in one of my programs,
Hth
Richard
BMPADDCOL(oBrw:aCols[01])
oBrw:aCols[01]:bBmpData := { || PROTABLE(ATABLE) }
oBRW:blDblClick := { | nRow, nCol, nKey |CHECKTAB(@ATABLE,OBRW) }
FUNCTION BMPADDCOL(OCOL)
oCol:AddBmpFile( DIRAPPLI() + "BMP\BLEU.BMP" ,1, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\VERT.BMP" ,2, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\JAUNE.BMP", 3, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\ROUGE.BMP",4 , .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\CYAN.BMP" ,5, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\BLANC.BMP" ,6, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\CHECKON.BMP" ,7, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\FINGER.BMP" ,8, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\CHECKOFF.BMP" ,9, .T. )
oCol:AddBmpFile( DIRAPPLI() + "BMP\CROIX.BMP" ,10, .T. )
RETURN NIL
FUNCTION PROTABLE(ATABLE)
LOCAL I := 0
IF LEN(ATABLE) = 0
RETURN 9 // checkoff
ENDIF
FOR I = 1 TO LEN(ATABLE)
IF ATABLE[I] = the id you need to store
RETURN 7 // checkon
ENDIF
NEXT
RETURN 9 // checkoff
STATIC FUNCTION CHECKTAB(ATABLE,OBRW)
LOCAL I := 0, ;
IDEL := .F.
FOR I = 1 TO LEN(ATABLE)
IF ATABLE[I] = the id you need to store
ATABLE[I] := 0
IDEL := .T.
I := LEN(ATABLE) + 1
ENDIF
NEXT
IF ! IDEL
AADD(ATABLE,the id you need to store)
ENDIF
OBRW:REFRESHCURRENT()
RETURN NIL