PDA

Ver la Versión Completa : desactivar evento de dbgrid


gonza_619
06-09-2010, 22:16:36
Hola q tal, bueno el problema es que en un dbgrid necesito seleccionar un registro para luego guardarlo en una variable, pero tambien tengo la opcion de crear un nuevo registro de la tabla a traves del mismo dbgrid, pero caundo estoy creando y hago click en una celda, me salta el mensaje , de 'selecciono registro' que puse. entonces cuando presiono el boton NUEVO PLAN, y haga click en una celda del grid no me tire el mensaje q puse.
entonces supuse que si presiono en el boton se tednria q desactivar el evento oncellclick del grid, que fue donde puse el mensaje, para que no me tire el mensaje cada vez q me desplazo sobre las columnas para agregar el nuevo registro , como podria hacer.
sino me qedaria por usar 2 dbgrid una para crear nuevo registro y otra para seleccionar registros.
bueno gracias

ecfisa
06-09-2010, 22:52:01
Hola Gonza.

Para desasociar el procedimiento del evento:

DBgrid.OnCellClick:= nil;


Para volver a asociarlo:

DBGrid.OnCellClick:= GridOnCellClick; // (nombre de tu procedimiento)



Saludos.

Neftali [Germán.Estévez]
07-09-2010, 12:13:14
..necesito seleccionar un registro para luego guardarlo en una variable, pero tambien tengo la opcion de crear un nuevo registro de la tabla a traves del mismo dbgrid, pero caundo estoy creando y hago click en una celda, me salta el mensaje , de 'selecciono registro' que puse. entonces cuando presiono el boton NUEVO PLAN, y haga click en una celda del grid no me tire el mensaje q puse.

Creo que puedes distinguir ambas situaciones utilizando la propiedad State del DataSet asociado al Grid (Tabla o Query).
Seguramente en las dos situaciones que comentas tenga diferente valor y te servirá para distinguir cuando muestras o no el mensaje:


if (Table1.State = dsEdit) then
...


Te pongo el dsEdit como ejemplo, pero deberás comprobar qué valor concreto tiene en cada momento.


type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue,
dsBlockRead, dsInternalCalc, dsOpening);