RE: Grid Control: getting original checkbox state
- Posted by Phil Russell <pg_russell at lineone.net> Feb 11, 2003
- 438 views
Dan, Dan Moyer wrote: > Phil, > > Well, I guess you're right, I must have been thinking of ComboBoxes, > (rather > than simple lists), which have a drop-down list which can *momentarily* > obscure controls below it, but then disappear when an item in it is > selected. Those drop-down lists seem to be able to be made to show only > as > much as is needed, up to the height of the default size of the control. > But > I don't need that ability, and I can use the Grid Control just fine as > it > is, so it would appear to be a not so good suggestion. > Oh I see. EuGrid doesn't behave like a combo box because it is designed to display multiple items whereas a combo box is designed to display/select only a single item. You *can* however have combo boxes within a grid (see the cell types tab in styles.exw), which could be an alternative to multiple checkboxes if the checkbox options are mutually exclusive. > Did you find anything in my demo that should have been done differently > or > better? The only thing that I fixed was the scroll to new cell code. I also made a few tweaks to make it look more like a list view window - feel free to ignore what you don't like! Any substantive changes are prefixed with a '***Phil:' comment line. Let me know if I can do anything else to help. Regards, Phil 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_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")) WinMain( Window1,Normal )