FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Devolver foco desde Form No Modal al control llamante
Hola Amigos !
Intento devolver el foco desde un Form No Modal en el momento de cerrarlo al control y form que lo llamaron, y a la vez liberarlo y cerrarlo correctamente. Pero mi problema aparece que cuando intento hacer esto en el form no modal : antes de la terminación del evento FormClose me devuelve de hecho el foco al control que lo llamó (utilizo dos variables auxiliares, Focus_Form y Focus_Control), pero prosigue la ejecución en el otro form y no puedo cerrar y liberar F_ClientSearch. Gracias por vuestra ayuda.
__________________
Piensa siempre en positivo ! |
#2
|
||||
|
||||
A ver, estoy algo confundido con el asunto, pero tratare de contarte lo que entendí:
Tienes un TForm digamos que se llama Form1, en Form1 tienes un TWinControl con el que abres un Form2 y quieres cerciorarte de que cuando este ultimo se cierre, el TWinControl del Form1 tenga el foco. Si la cosa es asi; yo sugeriría lo siguiente, en el Form1 llamar al Form2 desde el TWinControl pasándole como padre al Form2 el TWinControl... Suponiendo que el TWinControl fuera un TEdit(Edit1) la idea de llamarlo es algo asi:
y luego en el OnClose del Form2 hacer algo asi:
Bueno, esa es la idea que se me ocurre según lo que te entendi . Espero que esta vez si le atine a lo que necesitas .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Gracias Jhonny una vez más.
Sí, algo así es. Si hasta ahí todo bien, tal y como expliqué yo también anteriormente. Me devuelve el foco correctamente y como yo quiero. Pero el problema es liberar el Form2. Doy detalles concretos. El Form1 no puede recibir foco mientras exista Form2. Por lo tanto, en el OnActivate del Form1 compruebo si existe Form2, y si es así devuelvo el Foco al Form2. Es por ello que necesito utilizar el evento OnActivate del Form1. Pero claro, si ahora, antes de cerrar y liberar el Form2, en algún momento devuelve el foco al control del Form1 que estaba activo antes de llamar al Form2, mediante por ejemplo Focus_Form.SetFocusedControl(Focus_Control); entonces salta el evento OnActivate del Form1 y prosigue ahí con la ejecución del programa ! Cuando libero Form2 ? Si lo libero en alguna parte posterior del Form1.OnActivate entonces al terminar cualquier procedimiento concreto, vuelve a la línea del Form2 donde ejecuté el traspaso de foco, y al estar supuestamente liberado el Form2, salta un error. Si sigo sin más, no libero el Form2 en ningún lado, y claro, otros tantos problemas más gordos todavía. Por más vueltas que le doy, no logro aclararme. A lo mejor es una tontería, pero no doy con la solución.
__________________
Piensa siempre en positivo ! |
#4
|
||||
|
||||
Bueno, Y ¿Porque no hace que el Form2 se vuelva Modal para que no activen el Form1, Así sea en tiempo de ejecución?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
||||
|
||||
Aaaaamigo !!!!
Eso es lo que tenía antes !! Y después me dí cuenta que no cumplía con lo que quería hacer. Detallo más : Programa de reservas de Hotel. MDI. Puedo abrir cuentas reservas quieras en Forms MDI Child. El famoso Form2 sería búsqueda de clientes. Si en una reserva busco un cliente, abro desde Form1 al Form2. Peeeeeero ahora resulta que en el Form2 de búsqueda de clientes, muestro para cada cliente las reservas anteriores que tiene ese cliente. Y quiero poder hacer click en el listado y que se me abra cualquier reserva anterior en una nueva ventana MDI. Además de tener total operatividad sobre la ventana de la reserva que acabo de abrir. Claro, si Form2 es Modal, no puedo moverme por la reserva que acabo de abrir desde el listado de reservas anteriores de clientes en el Form2 de búsqueda de clientes. Por eso me dí cuenta hoy que necesito que Form2 se abra No Modal para que tenga esa operativa. Pero por otro lado, si elijo un cliente de la lista abierta en el Form2 de búsqueda de clientes, tengo que actualizar los datos de ese cliente única y exclusivamente en el Form1 de la reserva que llamó a la búsqueda de clientes, y en ningún otro. Y además, si elijo el cliente del listado, se debe de cerrar Form2 y volver el foco al Form1 correspondiente a la reserva concreta que llamó a la búsqueda. Ese es el problema ! Form2 lo tenía modal, pero hoy avancé con otras cosas y precisamente me dí cuenta que no podía ser modal. No sé si esto aclara un poco las cosas, o por el contrario, lo he liado más aún.
__________________
Piensa siempre en positivo ! |
#6
|
||||
|
||||
Añado algo más : Lo que decía antes de poder salir del Form2 de búsqueda.
Si pincho en cualquiera de los datos de una reserva que acabo de abrir desde la búsqueda, ese Form tiene que obtener el foco de manera normal y permitirme total operatividad. Pero no debo de dejar volver a la reserva 'principal' que llamó originalmente al Form2 de búsqueda, si no se dá uno de los dos siguientes casos : que se cierre el Form2 y no se desee elegir ningún cliente, o que se elija un cliente en concreto para actualizarlo en el Form1 'llamante'.
__________________
Piensa siempre en positivo ! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cambiar foco desde otro form | Sandy656 | Varios | 3 | 25-08-2006 14:29:41 |
Form modal deja que el form llamante tome el foco | tata | Varios | 6 | 17-05-2006 11:51:37 |
Acceder a form modal desde módulo de datos | jcheco | Varios | 3 | 31-01-2006 17:18:22 |
Devolver el foco a aplicacion | Coco_jac | Varios | 2 | 13-10-2005 16:38:33 |
Saber si una Form es modal | Delfino | Varios | 3 | 18-09-2005 04:12:14 |
|