PDA

Ver la Versión Completa : Desabilitar Insertar en DbGrid


Kenobi
18-09-2007, 14:25:47
Buenas amigo, de nuevo aca (es que estaba de vacaciones)

Tengo un DbGrid (el normal que viene con Delphi), y cuando se navega hasta el ultimo registro y se le da al cursor del teclado pues inserta un registro nuevo, esa funcionalidad deseo "BLOQUEARLA" ya que ese dbgrid enlaza a una tabla cuyos registros son de solo update por eso no puedo ponerlos de solo lectura...

me imagino que esto es tan basico que me da pena preguntar pero es que no me acuerdo, tengo las neuronas dormidas....


Gracias por su ayuda....

paldave
18-09-2007, 14:32:46
Puedes anular la inserción del registro en el evento BeforeInsert de tu dataset:

procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
if DataSet.RecNo=DataSet.RecordCount then
abort;
end;

Neftali [Germán.Estévez]
18-09-2007, 14:36:12
¿Has probado con el DataSet asociado?
Se me ocurre que el dataset sí tiene eventos que marcan el antes y después de una inserción, borrado, modificación,...

;-( Se me adelantaron...

Kenobi
18-09-2007, 14:42:46
eso pense, sin embargo lo que crei que se podria hacer era sobre el control, asi como en otros controles Dbgrid mas avanzados que tienen propiedades con las cuales deshabilitar estas funciones....


Gracias por sus Respuestas...

MON___
18-09-2007, 20:49:29
¿Has probado en la propiedad OPTIONS del TDBGrid asignar el valor "dgEditing = false?

O bien, el siguiente código:

DBGrid1.options := DBGrid1.options - [dgEditing];

Neftali [Germán.Estévez]
19-09-2007, 10:21:23
DBGrid1.options := DBGrid1.options - [dgEditing];



¿Pero eso deshabilitaría todo no?
Y él sólo quiere que se deje de INSERTAR; No dice nada de poder modificar las existentes.

MON___
19-09-2007, 14:46:13
Tienes razón; la solución que te di inhabilita la edición del registro. Así pues podrías probar con el siguiente código que deberías asociar al evento "onBeforeInsert" de TTable o TQuery

if DBGrid1.Focused then //comprobamos que el DBGRID tiene foco
if dataSet.eof then // comprobamos que estamos en el último registro
abort; // al pulsar TAB se ha insertado nuevo registro. Pero abortamos la inserción