PDA

Ver la Versión Completa : Ayuda para solventar un error de diseño


Willo
29-04-2012, 21:24:38
Buen dia a todos, tengo un error de concepto en mi aplicacion pero quisiera que me dieran alguna sugerencia de como solventarlo.

Tengo una pantalla de captura que en la parte superior tiene una Toolbar con botones y esta el area de captura con varios campos. Algunos de ellos tienen definidos eventos OnEnter y OnExit que realizan ciertas validaciones y calculos.

El detalle es el siguiente, al cambiar el contenido de un campo X e inmediatamente darle click al boton del Toolbar de grabar la informacion, el evento OnExit de ese campo no se ejecuta antes del evento Onclick del boton sino despues. Por lo que los calculos o validaciones del campo no se realizan sino hasta despues de haberse grabado la informacion.

Alguna sugerencia que me permita mantener el esquema de mi pantalla y al mismo tiempo asegurarme de que todos la informacion esta lista para ser grabada?

De antemano, gracias!

marcoszorrilla
29-04-2012, 21:31:42
Mi pregunta es, no estarás utilizando SpeedButton en esa barra, porque no hace mucho me lleve una sorpresa al ver que el evento OnExit de un campo no se ejecutaba cuando el usaurio pulsaba sobre un SpeedButton, supongo que se deba a que no tienen Foco estos botones, comprobé que utilizando un Bitbtn toda funcionaba corréctamente, haz la prueba y nos cuentas.

Un Saludo.

Willo
29-04-2012, 21:35:27
Pues estoy utilizando los ToolButtons, no sabia que la toolbar se podian usar de otros botones, lo intentare!.

Willo
29-04-2012, 21:37:34
Pues estoy utilizando los ToolButtons, no sabia que la toolbar se podian usar de otros botones, lo intentare!.

Comprobado, no se puede... :mad:

Willo
29-04-2012, 21:49:02
San Google me ayudo a encontrar este procedimiento....


procedure Form1.SpeedButton1Click(Sender: TObject);
var
hOldControl : TWinControl;
begin
hOldControl := ActiveControl;
ActiveControl := nil;
ActiveControl := hOldControl;
// further processing
end;


probando...

Willo
29-04-2012, 21:57:37
Con un simple: ActiveControl := nil; es mas que suficiente!! :)