RE: Grid Control: getting original checkbox state

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

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 )

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

Search



Quick Links

User menu

Not signed in.

Misc Menu