Re: EuGrid: How to use onGotFocus for a "cell"?

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

Rad wrote:
> I have one more question.
> 
> How can I trap w32HChange and w32HLostFocus for EGW_EDIT cells?

I use the following:

if msg=EGW_KEYCHAR then
            
        -- Get the field type information for this column
        col_index = find(cur_cell[2], fe_gridcolumns)
        if col_index then
            
            -- Don't allow a numeric field to go over it's maximum size
            if fe_columns[col_index][fe_precision] then
                rtn_value = validNumberKey(cur_cell[1], cur_cell[2], wParam)
            else
                rtn_value = 0
            end if
            
            -- Enable the save button for valid keys
            if rtn_value = 0 then
                setEnable(FESavePB, True)
            end if
            
        -- This should never happen, but just in case, don't allow the key
        else
            returnValue(1)
        end if


The validNumber routine gets the value of the edit cell.  This is accomplished
with a new routine I added to eugrid (right before EGW_GetCurrentCell):

--*------------------------------------------------------*
-- EGW_GetCurrentCellValue - Get the value in the cell's edit control
--*------------------------------------------------------*
function EGW_GetCurrentCellValue ( integer grid, sequence cell )
    integer control, col, datacol, index

    -- Get index for column id in cell
    col = EGW_GetColumnIndex( grid, cell[COL_ID])

    -- If a valid cell then save changes
    if length(GridData[grid])>0 and cell[ROW]>0 and col>0 then

        -- Get underlying data column for grid column
        datacol = GridCol[grid][col][EGW_COL_DATACOL]

        -- Get edit control for column
        control = EGW_GetEditControlForCell ( grid, cell )

        if datacol > 0 and control > 0 then
            return EGW_GetText( GridControl[grid][control][HWND] )
        end if
        
    end if

    return 0

end function


The above routine gets the cell's value BEFORE it's saved to the underlying
dataset.  My validNumberKey routine returns 0 if the key should be allowed.

> Like EGW_SaveCellData(), can there be EGW_LoadCellData() in future verion of
> EuGrid
> for loading individual cell data instead of entire grid?

You can do this via the EuGrid routine:

boolean = EGW_SetDataCellValue ( integer id, atom row, atom datacol, object
value )

Jonas Temple
http://www.innovativesys.net

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

Search



Quick Links

User menu

Not signed in.

Misc Menu