Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Problema con Aplicacion MDI

Muy buenas.
Veréis, tengo una aplicacion MDI en la que hay abierta una ventana hija con una rejilla de datos. He colocado un combobox en un toolbar que tengo en la cabecera a fin de controlar el cambio de un parámetro en la consulta que se utiliza para mostrar los datos en la rejilla, pero el caso es que cuando hago click en ese combo la rejilla de datos se queda bloqueada y no puedo cambiar el registro activo.
Desbloquearlo es tan fácil como hacer click en otra ventaja hija y luego volver a la primera o hacer click por ejemplo en el escritorio y luego volver a la ventana, pero como os podéis imaginar esto es un engorro.
Agradecería que me indicárais como corregir este efecto desagradable.

Muchas gracias y un saludo
Responder Con Cita
  #2  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si cambias un parámetro de la consulta, tendrás que cerrar y abrir de nuevo la consulta para que se actualice el Grid.

Que tal hacer eso en el OnChange o en el Onclick del TcomboBox?

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 18-08-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Ante todo gracias por responder.
El problema no es el cambio del parámetro de la consulta en si, pues esto lo hace bien, el problema es que el grid tras el cambio se queda bloqueado.
De hecho si el combo está vacío y no se utiliza ningún evento del mismo se sigue bloqueando el dbgrid justo después de hacer click en él. Yo creo que se debe tratar de algún problema con las aplicaciones MDI y los controles editables que se ponen en el MDIForm. He probado a cambiar el el ComboBox por un DBEdit y sigue pasando lo mismo: con sólo hacer click en el control ya no puedo volver a la ventana hija normalmente (no puedo moverme por sus registros).
De nuevo pido ayuda por si a alguien más le ha pasado lo mismo y me puede indicar alguna manera de evitar el problema.

Un saludo
Thales
Responder Con Cita
  #4  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si el Tcombobox es para una ventana determinada, debería estar en la ventana hija, no en el MDIForm.

Más bien me inclino a que sea un efecto colateral de tu programa. Dificil de encontrar.... Por supuesto.

Así es imposible encontrar cual es el fallo. Esperemos que alguien entienda bien lo que te sucede y pueda ayudarte.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 18-08-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
He generado una aplicación con los mínimos elementos posibles y que muestran el mal comportamiento que describo. Más abajo pongo un enlace para descargarla, el fichero sólo ocupa 9,55 KB. No puedo poner aquí ningún código pues los componentes van sin código alguno.

http://personales.ya.com/jondalar/mdi.zip

En lo que respecta a la razón para incluir el combo en la cabecera y no en las ventanas hijas, es porque el mismo lo utilizan todas las ventanas hijas (unas 10 en total en el programa original)

Un saludo
Thales
Responder Con Cita
  #6  
Antiguo 19-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Es curioso el comportamiento, solo se puede volver al Grid, minimizando la ventana hija y despues restaurandola.

Parece que ocurre cuando el control adquiere el foco y lo mantiene, por eso da lo mismo que sea un Tcombobox, TEdit, TButton.

Como son 10 ventanas hijas, quizás no te valga, pero usando TActionCoolbar, y poniendo el combo en la ventana hija, al maximizar la ventana hija, el ActionCoolbar se fusiona con el existente en la ventana padre, y no tiene tal efecto.

De hecho, poniendo el combo en la ventan hija no tiene el efecto raro.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 19-08-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola

Hace tiempo en estos mismos foros me dieron esta solución:

En el evento Deactivate de los formularios hijos pones:

Código Delphi [-]
  DefocusControl(DBGrid1,false)

Espero esto te funciones.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #8  
Antiguo 19-08-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Acababa de dar con la misma solución que me indicas tras mucho investigar en la ayuda de delphi: y consistia en quitar el foco y luego volvérselo a dar al dbgrid de la ventaja hija desde el evento closeup del combo, pero la solución que me das de quitar el foco al grid desde el evento ondeactivate me parece mejor. Muchas gracias. En efecto funciona.

Un saludo
Thales
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:08:00.


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
Copyright 1996-2007 Club Delphi