| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Lun 15 Mar, 2004 1:44 pm Asunto: Focus en ventanas MDIChild |
|
|
Hola a todos
Tengo una aplicación MDI que tiene en la ventana principal un TStringGrid. También tengo una ventana hija con un TStringGrid. Los elementos de la rejilla de la ventana principal pueden arrastrarse (drag & drop) a la rejilla de la ventana hija. Hasta ahí todo bien.
El problema viene de que, tras arrastrar un objeto, quiero que la ventana hija responda a los eventos de teclado. Simplemente con hacer clic sobre la ventana hija no retiene el foco y al pulsar una tecla la captura la pantalla principal. Sólo cuando hago doble clic sobre la rejilla de la ventana hija obtiene ésta el foco.
Me gustaría que sólo con pulsar con el ratón sobre la ventana hija ya retuviera el foco porque lo del doble clic es un poco antinatural.
He intentado jugar con setFocus pero aunque la ventana hija dice que ella es la que tiene el foco, sigue sin hacer caso al teclado.
¿Alguna idea? Muchas gracias a todos por anticipado. |
|
| Volver arriba |
|
 |
jean gray Invitado
|
Publicado: Mie 17 Mar, 2004 10:46 am Asunto: Focus en ventanas MDIChild |
|
|
Prueba con el método : BringToFront()
Un saludo |
|
| Volver arriba |
|
 |
masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Mie 17 Mar, 2004 11:05 am Asunto: |
|
|
Muchas gracias Jean.
Probé lo q me dices pero sigue sin tirar, aunque tal vez sea que no lo estoy aplicando bien.
Lo que estoy haciendo es en el evento OnMouseDown de la rejilla de la ventana hija he añadido:
| Código: |
if (Button == mbLeft)
this->BringToFront();
|
Es así o debería usarlo de otra manera? |
|
| Volver arriba |
|
 |
masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Mie 30 Jun, 2004 6:57 pm Asunto: |
|
|
Hola.
Sigo teniendo este mismo problema. Lo había dejado aparcado porque era una cosa secundaria, pero ahora quiero resolverlo. Ya he probado el BringToFront() y el SetFocus() es sus diferentes vertientes.
¿Hay alguien que tenga alguna otra idea de cómo resolverlo? |
|
| Volver arriba |
|
 |
masBecas Lt

Registrado: 23 Oct 2003Mensajes: 98Ubicación: La Laguna, Tenerife
|
Publicado: Mar 06 Jul, 2004 12:31 pm Asunto: |
|
|
Pues nada... ya me lo arreglé con un gran trapiche. Lo que hice fue añadir al comienzo del evento OnMouseDown del StringGrid del form hijo dos líneas
| Código: |
FocusControl(panBotones); // Aquí vale cualquier otro control
FocusControl(grdInstrucciones);
|
Como sólo me pasaba con el StringGrid el truco es establecer primero el foco en otro control cualquiera del formulario hijo (en este caso puse un panel) e inmediatamente ponérselo al grid.
Pues si alguien descubre una forma menos trapichosa de hacerlo que me lo ponga por aquí, y si no, aprovéchense de esta si se encuentran en una situación similar. |
|
| Volver arriba |
|
 |
|