block cells in a grid at runtime
Posted: Wed Dec 12, 2012 2:22 pm
Hola a todos,
La función indicada a continuación permite bloquear o desbloquear una celda ( o las que quiera ) de un grid para su edición.
Normalmente podemos bloquear la edición de las celdas en tiempo de diseño completando la propiedad ColumnWhen.
Con este procedimiento obtengo el array que contiene la definicion de la propiedad ColumnWhen del grid y simplemente cambio el bloque de código definido para la columna de acuerdo a la condición que se desee.
Para que funcione el bloqueo antes de que se edite yo lo puse en el evento On Change del Grid por lo tanto cada vez que navego por las filas del grid me cambia el estado automáticamente de acuerdo a la condición que espero se cumpla.
En este ejemplo tengo un grid con 3 datos que son Id, Rut, Nombre. y verifico que si la celda ID está en 0 el usuario puede ingresar datos en la celda Rut en caso contrario no permite hacerlo, solo la celda Nombre.
static procedure lock_cell
local i := GetControlIndex ( "grid_1" , "Form_1" )
_HMG_SYSDATA[ 40 ] [ i ] [ 6 ] [ 2 ] := if( form_1.grid_1.cell(form_1.grid_1.value,1 ) <> 0, { || .f. } , { || .t. } )
return
Espero les sea de utilidad
Saludos cordiales,
Luis Vasquez
English By Google Translator
Hi all,
The function shown below to lock or unlock a cell (or want) a grid for editing.
Normally we can block cell editing at design time completing ColumnWhen property.
With this procedure I get an array that contains the definition of the grid ColumnWhen property and simply change the code block defined for the column according to the desired condition.
To operate the lock releases before I put it in the Grid On Change event so every time I browse the rows of the grid changes my status automatically according to the condition that hope is fulfilled.
In this example I have a grid with 3 data are Id, Ruth, Name. and verify that if the cell ID is 0 the user can enter data in cell Rut otherwise not allowed to do so, only the cell name.
static procedure lock_cell
local i := GetControlIndex ( "grid_1" , "Form_1" )
_HMG_SYSDATA[ 40 ] [ i ] [ 6 ] [ 2 ] := if( form_1.grid_1.cell(form_1.grid_1.value,1 ) <> 0, { || .f. } , { || .t. } )
return
I hope this will be useful
Best regards,
Luis Vasquez
La función indicada a continuación permite bloquear o desbloquear una celda ( o las que quiera ) de un grid para su edición.
Normalmente podemos bloquear la edición de las celdas en tiempo de diseño completando la propiedad ColumnWhen.
Con este procedimiento obtengo el array que contiene la definicion de la propiedad ColumnWhen del grid y simplemente cambio el bloque de código definido para la columna de acuerdo a la condición que se desee.
Para que funcione el bloqueo antes de que se edite yo lo puse en el evento On Change del Grid por lo tanto cada vez que navego por las filas del grid me cambia el estado automáticamente de acuerdo a la condición que espero se cumpla.
En este ejemplo tengo un grid con 3 datos que son Id, Rut, Nombre. y verifico que si la celda ID está en 0 el usuario puede ingresar datos en la celda Rut en caso contrario no permite hacerlo, solo la celda Nombre.
static procedure lock_cell
local i := GetControlIndex ( "grid_1" , "Form_1" )
_HMG_SYSDATA[ 40 ] [ i ] [ 6 ] [ 2 ] := if( form_1.grid_1.cell(form_1.grid_1.value,1 ) <> 0, { || .f. } , { || .t. } )
return
Espero les sea de utilidad
Saludos cordiales,
Luis Vasquez
English By Google Translator
Hi all,
The function shown below to lock or unlock a cell (or want) a grid for editing.
Normally we can block cell editing at design time completing ColumnWhen property.
With this procedure I get an array that contains the definition of the grid ColumnWhen property and simply change the code block defined for the column according to the desired condition.
To operate the lock releases before I put it in the Grid On Change event so every time I browse the rows of the grid changes my status automatically according to the condition that hope is fulfilled.
In this example I have a grid with 3 data are Id, Ruth, Name. and verify that if the cell ID is 0 the user can enter data in cell Rut otherwise not allowed to do so, only the cell name.
static procedure lock_cell
local i := GetControlIndex ( "grid_1" , "Form_1" )
_HMG_SYSDATA[ 40 ] [ i ] [ 6 ] [ 2 ] := if( form_1.grid_1.cell(form_1.grid_1.value,1 ) <> 0, { || .f. } , { || .t. } )
return
I hope this will be useful
Best regards,
Luis Vasquez