Drop Down List Box

This forum is for eXpress++ general support.
Post Reply
Message
Author
ivanvazan
Posts: 21
Joined: Tue May 18, 2010 5:57 am

Drop Down List Box

#1 Post 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.

User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Drop Down List Box

#2 Post 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 ***
The eXpress train is coming - and it has more cars.

Post Reply