Re: Grid Control: Check box state reverse reported?

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

Phil,

The new message & the demo using it works fine!  Could be helpful to include
the demo with your control's distribution.

Dan

----- Original Message -----
From: "Phil Russell" <pg_russell at lineone.net>
To: "EUforum" <EUforum at topica.com>
Subject: RE: Grid Control: Check box state reverse reported?


>
> Dan,
>
> Just sent the fixed version to Rob (see my previous post).  Amended
> example code showing (hopefully) the correct checkbox state is attached
> below.
>
> Let me know if it is OK.
>
> Ta,
>
> Phil
>
> Dan Moyer wrote:
> > Oops, you're right, there's no good work around, can't use an onClick
> > the
> > grid (mouse down) & then test inside the event for state of checkbox
> > when it
> > doesn't change until mouse up.  Will wait until you post fix.
> >
> > Dan
> >
>
> 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_AddDataRowinstead
> -- 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
> object cbState
>
> msg = parms[1]
> wParam = parms[2]
> lParam = parms[3]
>
> -- User has clicked on a cell
> if msg = EGW_LEFTBUTTONUP then
>    cell = EGW_GetCurrentCell( aGrid )
>
>    -- get state of clicked checkbox:
>    cbState = EGW_GetDataCellValue ( aGrid, cell[1], cell[2] )
>    if cell[1]>0 and (cell[2] = colCB1 or cell[2] = colCB2) then -- is a
> checkbox column
>
>          setText( Window1, "Clicked on row number: " & sprint(cell[1])
>                        & ", column id: " & sprint(cell[2])
>                        & " , state: " & sprint(cbState) )
>    end if
> 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