Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   desactivar evento de dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=69757)

gonza_619 06-09-2010 22:16:36

desactivar evento de dbgrid
 
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:
Código Delphi [-]
  DBgrid.OnCellClick:= nil;

Para volver a asociarlo:
Código Delphi [-]
  DBGrid.OnCellClick:= GridOnCellClick; // (nombre de tu procedimiento)


Saludos.

Neftali [Germán.Estévez] 07-09-2010 12:13:14

Cita:

Empezado por gonza_619 (Mensaje 375684)
..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:

Código Delphi [-]
  if (Table1.State = dsEdit) then
    ...

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

Código Delphi [-]
type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, 
                              dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, 
                                  dsBlockRead, dsInternalCalc, dsOpening);


La franja horaria es GMT +2. Ahora son las 16:00:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi