Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dbgrid en isert o edit que no cambie de fila (https://www.clubdelphi.com/foros/showthread.php?t=93069)

José Luis Garcí 08-05-2018 21:19:25

Dbgrid en isert o edit que no cambie de fila
 
Buenos días compañeros, después de mucho tiempo me he puesto a programar nuevamente y tengo un problema con un dbgrid.

El tema es que necesito que por mucho que se quiera no permita irse a otra linea, mientras este en edición o inserción, hasta que grabemos y creemos una nueva.

Un saludo a todos

ecfisa 08-05-2018 21:47:46

¡ Hola gusto en verte nuevamente por aquí !

Fijate si te sirve esto: Desabilitar auto post al cambiar de renglon en grid

Saludos :)

José Luis Garcí 08-05-2018 22:35:08

Mucho gusto en saludarte ecfisa, en este caso no me vale, ya que lo controlo mediante un datasource y no puedo poner el ibdataset en el evento DataSetBeforePost y no quiero tocar este ya que desde otro formulario debe funcionar normal.

Pensaba que usado el Eveto KeyDow y controlando el up y Down me bastaría pero no, ya que uso varias listas y otros en dbgrid y como me descuide me crea un nuevo registro que es lo que no quiero, por eso es obligar a crear/editar/grabar o cancelarlo mediante botones

De todas maneras gracias

Casimiro Notevi 08-05-2018 22:58:19

Como indica ecfisa, al cambiar de línea en el dbgrid se realiza un "autopost", por lo que se lanzará el evento beforepost. Ahí puedes controlar lo que quieras hacer.

José Luis Garcí 08-05-2018 23:10:03

Okey, lo probare y buscare como anular el movimiento

ecfisa 09-05-2018 13:16:58

Hola.
Cita:

Empezado por José Luis Garcí (Mensaje 526119)
Mucho gusto en saludarte ecfisa, en este caso no me vale, ya que lo controlo mediante un datasource y no puedo poner el ibdataset en el evento DataSetBeforePost y no quiero tocar este ya que desde otro formulario debe funcionar normal.

Pero no es necesario dejar el evento asignado, podes asignar el evento al entrar al form y liberarlo al salir, v.gr.:
Código Delphi [-]
// incluye DB (por TDataSet)
...
type
 TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    //...
    procedure FormDestroy(Sender: TObject);
  private
    procedure DataSetBeforePost(DataSet: TDataSet);
  public
  end;
...
implementation
  
uses DataModule1; // (podrías asignar el evento desde el mismo dataset)

var
  PostEnabled: Boolean = False;

procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
begin
 if not PostEnabled then
    Abort;
  PostEnabled:= False
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DBGrid1.DataSource.DataSet.Open;
  DBGrid1.DataSource.DataSet.BeforePost := DataSetBeforePost;
end;

//----

procedure TForm1.FormDestroy(Sender: TObject);
begin
   DBGrid1.DataSource.DataSet.BeforePost := nil;
end;

(*   En algún sitio al guardar...  *)
...
begin
  PostEnabled:= True;
  DBGrid1.SetFocus
end;

end.

Saludos :)


La franja horaria es GMT +2. Ahora son las 09:12:51.

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