Page 1 of 1
Drop Down List Box
Posted: Thu Feb 02, 2012 11:59 am
by ivanvazan
I like using the DCCOMBOBOX in combination with an editable DCBROWSECOL where you use the EDITOR clause like so:
DCBROWSECOL ;
ELEMENT 4 ;
EDITOR 'idList'
@ NIL, NIL DCCOMBOBOX xNil ;
LIST aVals ;
TYPE XBPCOMBO_DROPDOWNLIST ;
IMMEDIATE ;
SIZE 20, 8 ;
ID 'idList'
Except - I would really like to be able to drop down a list that showed two or three columns. When the user selects the row, the value from the first column is selected. The other columns are there for description purpose only.
Any ideas how to achieve this would be appreciated.
Re: Drop Down List Box
Posted: Fri Feb 03, 2012 10:05 am
by rdonnay
Look at the "DropBrowse" sample in Sample Group 5 of the XDemo.Exe program.
Here is the source:
FUNCTION XSample_158()
Code: Select all
/* This example shows how to create a drop-down browse
from a POPUP button on a GET */
LOCAL GetList[0], cFile1, cFile2, cFile3, bPopUp, oStatic, nPopKey
STORE Space(30) TO cFile1, cFile2, cFile3
bPopUp := {|c,oGet|_PickFile(c,oGet,oStatic)}
@ 0,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 80,15 ;
OBJECT oStatic
DCSETPARENT oStatic
@ 1,1 DCSAY 'File Name 1' GET cFile1 POPUP bPopUp SAYSIZE 0
@ 3,1 DCSAY 'File Name 2' GET cFile2 POPUP bPopUp SAYSIZE 0
@ 5,1 DCSAY 'File Name 3' GET cFile3 POPUP bPopUp SAYSIZE 0
nPopKey := DC_SetPopKey(xbeK_SH_DOWN)
DCREAD GUI FIT ADDBUTTONS TITLE 'Enter File Names' ;
SETAPPWINDOW MODAL
DC_SetPopKey(nPopKey)
RETURN nil
* ------------
STATIC FUNCTION _PickFile( cFileName, oGet, oStatic )
LOCAL GetList[0], aDirectory, oBrowse, nPointer := 1, lStatus, ;
GetOptions, aPos, oDlg, oDlgArea, oParent
aDirectory := Directory()
oParent := AppDeskTop()
aPos := DC_CalcAbsolutePosition({0,0},oGet)
@ aPos[2]-113,aPos[1] ;
DCDIALOG oDlg DRAWINGAREA oDlgArea SIZE 350,113 ;
NOTITLEBAR PIXEL BORDER XBPDLG_NO_BORDER
@ 0,0 DCBROWSE oBrowse ;
SIZE 350,113 ;
PIXEL ;
FIT ;
PARENT oDlgArea ;
DATA aDirectory ;
PRESENTATION DC_BrowPres() ;
NOHSCROLL ;
POINTER nPointer ;
ITEMSELECTED {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
aDirectory := Directory()
DCBROWSECOL ELEMENT 1 WIDTH 10 PARENT oBrowse
DCBROWSECOL ELEMENT 2 WIDTH 6 PARENT oBrowse
DCBROWSECOL ELEMENT 3 WIDTH 6 PARENT oBrowse
DCBROWSECOL ELEMENT 4 WIDTH 6 PARENT oBrowse
DCGETOPTIONS NOTRANSLATE HIDE
DCREAD GUI ;
MODAL ;
OPTIONS GetOptions ;
HANDLER _pickHandler ;
PARENT oParent ;
TO lStatus ;
EVAL {|o|oDlg:setSize(oBrowse:currentSize()), ;
o:show(),;
SetAppFocus(oBrowse:getColumn(1))}
oDlg:destroy()
IF lStatus
RETURN aDirectory[nPointer,1]
ENDIF
RETURN cFileName
* -----------
STATIC FUNCTION _pickHandler( nEvent, mp1, mp2, oXbp )
IF nEvent == xbeM_LbDown .AND. ;
!(oXbp:isDerivedFrom('XbpCellGroup') .OR. ;
oXbp:isDerivedFrom('XbpScrollBar'))
RETURN DCGUI_EXIT_ABORT
ENDIF
RETURN DCGUI_NONE
*** END OF EXAMPLE ***