i comeback with new change to xbrowse, i will wait for suggestions and opinions
it 's a prototipe, i do not show code yet
we can show images on cell without added array, no need methods
METHOD AddResource( cRes )
METHOD AddBmpFile( cFile )
METHOD AddBmpHandle( hBmp )
New DATA bStrImage // String data codeblock (returns a string with imagen name)
New nEditType
#define TYPE_IMAGE -1
we can select the image in 2 ways using the bStrImage data or putting the image name in the cell, this cell in not editable, only show image
it is a sample
The first column contains the Image, do click rigth button mouse open a popmenu, the second column we can select image with cGetFile()
http://www.sitasoft.com/fivewin/test/xbimg.rar
- Code: Select all Expand view
- #include "FiveWin.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
static hLib
function main()
local oDlg
local oBrw
local nI
local hBitMap1, hBitMap2, hBitMap3, hBitMap4
local aArray:={}
for nI = 1 to 5
aadd( aArray, { "", space( 255 ) } )
next
DEFINE DIALOG oDlg title "TEST" size 800,600
@ 0,0 XBROWSE oBrw OF oDlg columns {1,2};
Array aArray sizes {100,300} LINES CELL autocols
oBrw:nMarqueeStyle := 1
oBrw:nRowHeight := 33
oBrw:lAdjustLastCol := .t.
oBrw:aCols[ 1 ]:nEditType := TYPE_IMAGE
oBrw:aCols[ 1 ]:lBmpStretch := .t.
oBrw:aCols[ 1 ]:lBmpTransparent := .t.
oBrw:aCols[ 1 ]:bStrImage := {|oCol, oBrw| oBrw:aRow[ 2 ] }
oBrw:aCols[ 1 ]:nDataBmpAlign := AL_CENTER
oBrw:aCols[ 1 ]:bPopUp := { |o| ColMenu( o ) }
oBrw:aCols[ 2 ]:nEditType := EDIT_BUTTON
oBrw:aCols[ 2 ]:bEditBlock := {|nRow, nCol, oCol| oCol:Value := cGetFile( "*.*", "Select a file" ) }
oDlg:oClient := oBrw
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED ON INIT oDlg:Resize()
return nil
static function ColMenu( ocol )
local oPop
MENU oPop POPUP 2007
MENUITEM "Left Align" WHEN oCol:nDataBmpAlign > 0 ;
ACTION ( oCol:nDataBmpAlign:= AL_LEFT, oCol:oBrw:Refresh() )
MENUITEM "Center Align" WHEN oCol:nDataBmpAlign != AL_CENTER ;
ACTION ( oCol:nDataBmpAlign := AL_CENTER, oCol:oBrw:Refresh() )
MENUITEM "Right Align" WHEN oCol:nDataBmpAlign != AL_RIGHT ;
ACTION ( oCol:nDataBmpAlign := AL_RIGHT , oCol:oBrw:Refresh() )
MenuAddItem( "Transparent", ,oCol:lBmpTransparent, .t., ;
{ |oItem| oCol:lBmpTransparent := !oCol:lBmpTransparent, ;
oItem:SetCheck( oCol:lBmpTransparent ), ;
oCol:oBrw:refresh() } )
MenuAddItem( "Stretch", ,oCol:lBmpStretch, .t., ;
{ |oItem| oCol:lBmpStretch := !oCol:lBmpStretch, ;
oItem:SetCheck( oCol:lBmpStretch ), ;
oCol:oBrw:refresh() } )
ENDMENU
return oPop
//----------------------------------------------------------------------------//