Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con el Focus de un Form MDI Child -Delphi 201'0 (https://www.clubdelphi.com/foros/showthread.php?t=84353)

Neeruu 09-10-2013 00:06:28

Problemas con el Focus de un Form MDI Child -Delphi 201'0
 
¿Donde esta el Focus?

Les comento el siguiente caso haber si a alguien mas le paso y si se les ocurre como puedo solucionarlo...

Tengo una grilla en un formulario, (yo utilizo la cxGrid), en esta grilla yo cargo datos, cuando hago con la flecha del teclado para abajo, se graba el registro y automáticamente se hace el append para que pueda seguir cargando una nueva linea....

Aveces, según los valores ingresados en la grilla, en el beforePost de mi query, se ejecuta una validación que muestra un messageDlg...
el usuario hace click en aceptar y sigue.

Este proceso lo tenia funcionando en delphi 7, tal cual lo comento sin ningún problema.... ahora lo estoy migrando a delphi 2010 y me encuentro con el siguiente problema:

Resulta que cuando se me muestra le messagedlg, el foco no vuelve a la grilla... esto solo pasa si el formulario que contiene la grilla es un mdichild....
Si es un formulario común el foco vuelve a la grilla, que quedo en estado de append esperando para cargar...

Si alguien quiere reproducir el ejemplo describo los pasos a seguir según yo para poder ver la anomalía:

Crear un proyecto nuevo, al formulario de inicio ponerlo como MDIForm, agregar un Menú y hacer que desde el menú se abra un segundo formulario que es el que contendrá la cxgrid...
En se segundo formulario, agregar una cxgrid, enlazarla a alguna fuente de datos (Puede ser a una cxMemData) y en el evento BeforePost agregar un messagedlg o showmessage...

Y verán que cuando graban la, grilla, queda sin el foco...

Neeruu 09-10-2013 00:22:45

Adjunto algunas pruebas...
Pruebas

He llegado a determinar que el caso se da, cuando ejecuto un exe creado en 2010 en Windows Seven.

Exe Creado en: WinXP WinSeven
Delphi 7 OK OK
Delphi 2010 OK FAIL

Alguna idea?

Aclaro que para generar los exe se utilizo los mismos fuentes, con la misma versión de devExpress.

Neeruu 09-10-2013 00:45:29

Agrego un tercer ejemplo, en este caso abro un ventana, simuladora de un messagedlg y el foco es recobrado por la grilla perfectamente....

Sigo sin entender porque con un ShowMessage o un MessageDlg el foco no vuelve a la cxGrid

Otro Ejemplo

ecfisa 09-10-2013 03:20:54

Hola Neeruu.

No tengo Delphi 2010 ni los componentes que usas, pero mirando tu código te sugiero que pruebes agregando la siguiente lína al finalizar el evento OnNewRecord:
Código Delphi [-]
...
  RxDBGrid1.SetFocus;
end;

Saludos :)

Neeruu 09-10-2013 15:38:29

Lo que pasa que la parte de datos lo tengo en un datamain, y los datos enlazados a la grilla no siempre se cargan en la grilla... por eso no puedo llamar desde mi modulo de datos al setfocus de la grilla....

En los rar que comparti estan los exe... les sucede lo mismo en win seven?


La franja horaria es GMT +2. Ahora son las 09:19:10.

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