FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
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 |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
Hola
Hace tiempo en estos mismos foros me dieron esta solución:
En el evento Deactivate de los formularios hijos pones:
Espero esto te funciones. Saludos
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
#8
|
||||
|
||||
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 |
|
|
|