Re: Grid Control: trap event of checkbox change

new topic     » goto parent     » topic index » view thread      » older message » newer message

Phil,

Great!  I had a guess the EGW_CLICK message was involved, but I didn't know
how to use it.  Thanks!

Dan

----- Original Message -----
From: "Phil Russell" <pg_russell at lineone.net>
To: "EUforum" <EUforum at topica.com>
Subject: RE: Grid Control: trap event of checkbox change


>
> Dan,
>
> You have to trap the EGW_CLICK message.  I have amended the sample code
> to show this (it puts the clicked cell details in the window title).
>
> Regards,
>
> Phil
>
> Dan Moyer wrote:
> > Phil,
> >
> > If I have a column with checkboxes in it, how can I know that a user has
> > clicked on a checkbox, and which one?
> >
> > Dan Moyer
> >
>
> Code Follows:
>
> -- code generated by Win32Lib IDE v0.14.2
>
> include Win32lib.ew
> without warning
>
> --------------------------------------------------------------------------
--
>
> ----
> -- Window Window1
> constant Window1 = createEx( Window, "Grid Control with CheckBoxes", 0,
> Default, Default, 600, 300, 0, 0 )
> constant PushButton2 = createEx( PushButton, "Select File", Window1,
> 484,
> 20, 88, 28, 0, 0 )
> constant PushButton3 = createEx( PushButton, "Process Data", Window1,
> 484,
> 72, 88, 28, 0, 0 )
> ---------------------------------------------------------
> --------------------------------------------------------------------------
--
>
> ----
> include eugrid.ew
> atom void
>
> integer aGrid, colFileName, colCB1, colCB2, colFileDir
>
> -- Create grid, create parms=(parent, x, y, width, height, show_window)
> aGrid = EGW_CreateGrid( Window1, 10, 15, 450, 200, True )
>
> -- no row header
> void = EGW_SetGridProperty( aGrid, EGW_ROW_HEADER_WIDTH, 0)
>
> --***Phil: Make grid look a bit more like a list view
> void = EGW_SetGridProperty( aGrid, EGW_NULL_GRID_COLOR, BrightWhite)
> void = EGW_SetGridProperty( aGrid, EGW_LINE_COLOR, BrightWhite)
> void = EGW_SetGridProperty( aGrid, EGW_CELL_BORDER, False)
>
> -- Filename column
> -- ***Phil: Make this a protected edit field to get highlighting
> --colFileName = EGW_AddColumn( aGrid, "FileName", 200, EGW_LAST,
> EGW_STATIC, 1 )
> colFileName = EGW_AddColumn( aGrid, "FileName", 100, EGW_LAST, EGW_EDIT,
> 1 )
> --void = EGW_SetColumnProperty(aGrid, colFileName, EGW_COL_ALIGN,
> EGW_CENTER)
> void = EGW_SetColumnProperty(aGrid, colFileName, EGW_COL_EDITABLE,
> False)
> --void   = EGW_SetColumnProperty( aGrid, colFileName, EGW_COL_WIDTH, 75
> )
>
> -- checkbox columns:
> colCB1 = EGW_AddColumn(aGrid, "Action1", 60, EGW_LAST, EGW_CHECKBOX, 2 )
> void = EGW_SetColumnProperty(aGrid, colCB1, EGW_COL_ALIGN, EGW_CENTER)
> colCB2 = EGW_AddColumn(aGrid, "Action2", 60, EGW_LAST, EGW_CHECKBOX, 3 )
> void = EGW_SetColumnProperty(aGrid, colCB2, EGW_COL_ALIGN, EGW_CENTER)
>
> -- file directory column:
> colFileDir = EGW_AddColumn( aGrid, "FileDirectory", 226, EGW_LAST,
> EGW_STATIC, 4 )
> --void = EGW_SetColumnProperty(aGrid, colFileDir, EGW_COL_ALIGN,
> EGW_CENTER)
> --------------------------------------------------------------------------
--
>
> ----
> procedure PushButton2_onClick (integer self, integer event, sequence
> params)--params is ()
> seq fName, dirName, fullPathName, temp
> seq newRow
> int row, posBS -- posBS is position of back-slash in file name
>
> temp = {}
>
> -- get a file name
> fName = getOpenFileName( Window1, current_dir() & "\\", "" )
> -- entered a file name?
> if length( fName ) = 0 then
>      return
> end if
>
> -- separate filename from dirName:
> if find('\\',fName) then -- found back-slash
>      -- work from end, remove chars after last back-slash:
>      for n = length(fName) to 1 by -1do
>       if not equal('\\',fName[n]) then
>          temp = prepend(temp,fName[n])
>        else
>          posBS = n
>         exit
>       end if
>      end for
>
>      fullPathName = fName
>      dirName = fName[1..posBS -1]
>      fName = temp
>    else
>      dirName = ""
>    end if
>
> newRow = {fName,1,1,dirName }
>
> -- example relating to adding new row:
> --global constant EmptyGridRow = {"", 2, "", "", 0, True}
>
> -- Add new row to grid:
> row = EGW_AddDataRow(aGrid, newRow, EGW_LAST)
>
> --***Phil: Not necessary unless you are doing database manipulation ***
> --void = EGW_SetDataRowFlag(aGrid, row, EGW_ROW_NEW, True)
>
> -- Go to it?
> --***Phil: You can't use EGW_LAST here - use row number from
> EGW_AddDataRow instead
> -- void = EGW_ScrollToCell(aGrid, EGW_LAST, colFileName)
> --repaintWindow(Window1)
>
> --***Phil Start
> -- Repaint window to make sure new row is displayed
> repaintWindow(aGrid)
> -- Scroll to first column of new row
> void = EGW_ScrollToCell( aGrid, row, colFileName )
> --***Phil End
> end procedure
> setHandler( PushButton2, w32HClick, routine_id("PushButton2_onClick"))
> --------------------------------------------------------------------------
--
>
> ----
> procedure PushButton3_onClick (integer self, integer event, sequence
> params)--params is ()
> object result
> atom numOfRows
>
> numOfRows = EGW_GetRowCount ( aGrid )
>
> for n = 1 to numOfRows do
>     result = EGW_GetDataCellValue ( aGrid, n, 2 )
>     puts(1, sprint(result))
>     result = EGW_GetDataCellValue ( aGrid, n, 3 )
>     puts(1, sprint(result))
>     puts(1, "\n")
> end for
>
> end procedure
> setHandler( PushButton3, w32HClick, routine_id("PushButton3_onClick"))
> --*------------------------------------------------------*
> -- onGridEvent: Process messages for grid control
> --*------------------------------------------------------*
> procedure onGridEvent (atom self, atom event, sequence parms)
> atom msg, wParam, lParam
> sequence cell
>
> msg = parms[1]
> wParam = parms[2]
> lParam = parms[3]
>
> -- User has clicked on a cell
> if msg = EGW_CLICK then
> cell = EGW_GetCurrentCell( aGrid )
> setText( Window1, "Clicked on row number: " & sprint(cell[1]) & ",
> column id: " & sprint(cell[2]) )
> end if
>
> end procedure
> setHandler( aGrid, w32HEvent, routine_id("onGridEvent"))
>
> WinMain( Window1,Normal )
>
>
>
> TOPICA - Start your own email discussion group. FREE!
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu