Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Tabla no reconoce comandos (https://www.clubdelphi.com/foros/showthread.php?t=75236)

cheche358 06-08-2011 23:38:38

Tabla no reconoce comandos
 
Rompiendome la cabeza de nuevo...

El asunto es que tengo un formulario de edicion de datos y un secundario de busqueda de esa tabla de datos donde estan listados los registros de esa misma tabla, hasta ahi bien...

Para el segundo formulario tengo activado el evento OnKeyDown con la tecla ESC para que al presionarla se vaya a Form.Close y vuelvo a la ventana 1, hasta ahi tambien vamos bien...

En el Evento OnClose del Form2 hay algo asi como:

Código:

Form2.Release;
Form1.Enabled := True;
Form1.tbl1.Cancel;
Form6.tbl1.Append;

Para cancelar cualquier cambio y dejar la tabla lista para nuevamente introducir datos, hasta ahi tambien vamos bien...

El en Form2 hay solo 2 objetos: Un Edit para escribir busquedas y un Grid para listar el contenido de la tabla segun filtro

El asunto es que el codigo del Close del Form trabaja bien solo si la tecla ESC es presionada con el foco puesto en el Edit, si la tecla ESC es pulsada desde el Grid tbl1 se me queda en el ultimo registro de la tabla, es decir no me esta respondiendo al comando Append

Que pudiera estar pasando ?

Estoy usando el TJvDBGrid de Jedi, probe con TDBGrid de DataWare y me pasa lo mismo, en ultima instancia probe con el TDBAdvGrid de TMS y si ejecuta el comando pero este se comporta muy lento para desplegar los datos de la busqueda.

Quiero seguir trabajando con el Grid de Jedi porque es mas rapido ademas de lo gratuito, asi que agradeceria cualquier idea que no sea cambiar de componente...

ecfisa 07-08-2011 00:48:53

Hola cheche358.

Quitá la verificación de los eventos OnKeyDown del TEdit y de cualquier otro control que lo tuviera asignado y hacé lo siguiente:
Código Delphi [-]
...
procedure TForm1.FormShow(Sender: TObject);
begin
  KeyPreview:= True;
end;
...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = VK_ESCAPE then
    Close;
end;
...
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // Tu código
end;
Nota: La propiedad KeyPreview del form la podes ajustar en tiempo de diseño.

Un saludo.

cheche358 07-08-2011 04:11:56

Nadie mas en el Form2 tiene asignada instrucciones en el OnKeyDown, ambos objetos estan respondiendo a este evento porque le pertenece al Form...

Que diferencia podria haber en ajustar el Key Preview en tiempo de ejecucion en vez de pre-asignarlo ? :confused:

La gran pregunta es porque el codigo corre como deberia en un componente si y en el otro no ?

ecfisa 07-08-2011 06:35:33

Hola.

Cita:

Que diferencia podria haber en ajustar el Key Preview en tiempo de ejecucion en vez de pre-asignarlo ?
Ninguna como ya puse en mi mensaje:
Cita:

Nota: La propiedad KeyPreview del form la podes ajustar en tiempo de diseño.
Es que entendí que no te funcionaba la captura desde el DBGrid, pero ahora veo que ese no es el problema...

Te hago unas consultas por que este código me confunde:
Código Delphi [-]
  ...
  Form1.tbl1.Cancel;
  Form6.tbl1.Append;
¿ Estamos hablando de la misma tabla ( tbl1 ) ?
De ser así:
¿ Por que está en Form1 y Form6 ?
¿ A cuál DataSource esta asociado el DBgrid que te dá el problema ?
El DataSource asociado al DBGrid, ¿ A que tabla esta asociado ?


Saludos.

cheche358 07-08-2011 07:58:30

Si lo copie mal, pero es el mismo Form:

Código:

Form2.Release;
Form1.Enabled := True;
Form1.tbl1.Cancel;
Form1.tbl1.Append;

* Es la misma tabla, de hecho la unica tabla que hay en los 2 Form.

* El DBGrid del Form2 esta asociado al DataSource1 de la misma Tbl1 del Form1.

* Ya probe pegandole un DataSource en el Form2 enlazado al Tbl1 del Form1 y tampoco funciona.

* Ya probe desactivando el Key Preview del Form2 y llamando el procedimiento por el OnKeyDown de cada uno de los objetos y sigue igual: Funciona con el Edit pero no con el DBGrid

* Insisto en que me parece muy extraño que exactamente el mismo codigo y procedimiento funciona con el DBGrid de los commponentes de TMS y con los otros no

cheche358 08-08-2011 15:05:42

Refresco el hilo a ver si alguien lo ve...

No puede ser que yo este descubriendo el agua tibia !! A alguien mas debe haberle ocurrido !?!?! :(


La franja horaria es GMT +2. Ahora son las 11:43:17.

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