Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   valida celda dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=73391)

eldonfsr 18-04-2011 04:38:51

valida celda dbgrid
 
Saludos a todos buena tengo una duda y estoy algo enredado con el problemita tengo que hacer que en un dbgrid en cada celda que capture el usuario validar la informacion que capturo para tomar ciertas acciones como brincar o dar el foco a cierta celda asi como validar si la informacion de capturo existe en una tabla de la base de datos algo asi como la captura de una factura con detalle que se valide si el articulo existe si no, he buscado algo parecido e intentado con varias formas con el control de los eventos ma no logro hacer que funcione alguien tiene algun ejemplo gracias.

fernado sandoval

oscarac 18-04-2011 04:46:15

Buenas noches Fernando

podrias colocar algo de codigo?

pero me parece que hay un evento que se activa cuando se sale de una columna del dbgrid
OncolExit

newtron 18-04-2011 09:01:40

Efectivamente.

Como dice el amigo oscarac tienes que capturar el evento ColExit del Dbgrid. Por ese evento pasa cada vez que sales de una columna del grid y puedes saber qué columna has editado con la propiedad SelectedIndex.

ejemplo:

Código Delphi [-]
procedure Form.DBGrid1ColExit(Sender: TObject);
begin
  if DBGrid1.SelectedIndex = 0 then begin
     ShowMessage('Salgo de columna 0');
     // pongo el foco en la columna 5
     DBGrid1.Columns[5].Field.FocusControl;
  end;
end;

Saludos

eldonfsr 20-04-2011 03:06:28

validar celda
 
Gracias por responder perdon por no poner algun codigo , aqui esta algo de lo que he conseguido hacer hasta ahora tratare de explicar lo que he entendido y espero me corrigan en lo que estoy mal.

1.- Si hago referencia al compo de esta manera en el evendo oncolexit del dbgrid.
showmessage(DBGQcRep.DataSource.DataSet.FieldByName('DgwCode').AsString);

ma aparece el mensaje sin valor ya que el valor esta en el buffer del dbgrid creo yo.

2.- El DbGird tiene la colletion TColumn que es donde tiene el titulo de la columana pero no veo propiedad donde este el valor actual.

3.- Al momendo de la edicion del la celda se hace en el buffer del dbgrid o del dataset del dbgrid?
Código Delphi [-]
procedure TFormQcRep.DBGQcRepColExit(Sender: TObject);
begin
   if DBGQcRep.SelectedIndex = 1 then begin

     ShowMessage(DbgQcRep.SelectedColumn.Collection.ToString);
     DBGQcRep.Columns[3].Field.FocusControl;
     showmessage(DBGQcRep.Columns[3].PickList.ValueFromIndex[1]);
  end;

   showmessage(sender.ToString);
            showmessage(DBGQcRep.DataSource.DataSet.FieldByName('DgwCode').AsString);


end;

saludo y gracias.

newtron 20-04-2011 09:00:09

Hola.

Cuando vas navegando por el dbgrid si consultas el campo de la tabla te tiene que dar el valor del campo del registro en el que esté situado el foco del dbgrid en ese momento así que asegurate de que cuando haces el showmessage del campo de la tabla el foco del dbgrid apunte a algún registro y no estés en una linea nueva.

Por otro lado la actualización del campo en el grid actualiza el campo de la tabla de forma automática.

Saludos


La franja horaria es GMT +2. Ahora son las 14:37:35.

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