FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problemas con la propiedad Parent
Saludos al Foro.
Cuando creo una ventana con la propiedad parent = self, es decir Self -> ventana con estilo fsNormal MiVentana:=TForm.create(self); MiVentana.parent:=self; MiVentana.show; la nueva ventana aparece, pero sin tomar el foco adema los controles TEdits están inoperaivo. Me he dado cuenta tambien que el evento OnActivate no entra. Esto no ocurre si no asigno nada a parent. Creo que alguien me dirá : Utiliza mdiForm/mdiChild, pero lo he estado probando y me da muchas pegas, entre las que destaco: el poder pintar un fondo de escritorio en el mdiForm o no poder controlar la presentacion de las ventanas activas mediante la pulsación de ctrl*tab. Bueno espero de no haber liado mucho la perdiz. Saludos |
#2
|
||||
|
||||
Hola,
No he comprobado lo que dices, pero, tal vez te resultara interesante (si es que te es menester) crear el formulario mediante el constructor "CreateParented" (o algo así). Es posible que a partir de ahí no tengas los problemas que mencionas, por otro lado, raros, raros, raros, me parece a mí, vamos. |
#3
|
||||
|
||||
Parent
Gracias por tu interes.
Antes de nada...¿Qué es lo raro?, el problema del parent o mis problemas con las ventanas mdi. Sobre CreateParented, lo voy haber. Chao |
#4
|
||||
|
||||
Hola,
Cita:
Claro que cosas más raras se habrán visto. |
#5
|
||||
|
||||
parent
Con la pregunta ¿Qué es lo raro?. Sólo quería saber si te referias a la pregunta en sí o a mis problemas con los mdi.
Efectivamente, como tú bien dices todo el mundo ha creado alguna vez, una ventana desde otra. Hasta yo . Pero nunca he utilizado el parent. y ahora que lo he utilizado me ha pasado ésto. El objetivo que andaba buscando era que la ventana creada estuviera delimitada en movimiento y espacio a su ventana padre.(Estilo mdi) Chao |
#6
|
||||
|
||||
Hola,
Cita:
¿Porqué no haces una cosa? Inicia un nuevo proyecto a modo de prueba, y ahí trata de crear un formulario dentro de otro. Que el primero tenga componentes "TEdit" y demás, y pruebas a ver qué ocurre. Si te funcionase (como lo espero) habría que pensar más bien en que algo en tu proyecto está influyendo en los problemas que te surgen... a ver cómo salimos de ahí entonces... |
#7
|
||||
|
||||
parent
Como una imagen vale más que mil palabras...
Haber si ha suerte y me dices dónde me he equivocado. Adjunto el ejemplo, que por cierto me da un error al compilar, me sale la ventana CPU y no lo sé interpretar. Saludos Última edición por dec fecha: 10-08-2006 a las 14:14:51. |
#8
|
||||
|
||||
Hola,
Bueno. El código fuente es correcto (creo yo). Y según la ayuda de Delphi la propiedad "Parent" puede usarse para lo que quieres. Empero, la única forma (en las pruebas que he hecho) de que la cosa funcione tal como esperas, es cambiar la propiedad "BorderStyle" del "segundo formulario" por "bsNone". Con el resto de valores posibles para esta propiedad, efectivamente, ocurre lo que dices, y,... ahora mismo no sé porqué. Pero, prueba a ver cambiando esa propiedad que te comento: a lo mejor te es bastante para conseguir lo que quieres. Edito: Cita:
|
#9
|
||||
|
||||
parent
Gracias Dec, por tú interés .
Chao |
#10
|
||||
|
||||
Hola,
Cita:
|
#11
|
||||
|
||||
parent
No Efectivamente, la ventana con el borderstyle bsNone, si queda en el formulario padre, pero..., por ejemplo el evento OnActivate no entra, y es en este evento, donde inicializo mis variables, ademas hay controles que no se inicializan bien, por ejemplo un componente heredado de stringGrid, no se pinta adecuadamente (se queda toda la rejilla en negro), en fin..... Seguiré buscando. Aprovecho tu interes, para comentarte lo que estoy buscando. Partimos de un formulario principal que funciona como fondo de escritorio,con menu principal y barra de herramientas,la imagende fondo generalmente en diseño es una foto de Angelina jolie . desde esta ventana principal se pueden ir activando distintas ventanas de gestión, las cuales el usuario las puede ir manejando a su inters etc. Hasta aquí todo va bien. El problema básicamente radica en el diseño. Quiero que una/s determinada/s ventanas con una funcion determinada (TPV), abarque todo el area cliente de la ventana principal, sin que por ello afecte al resto de ventanas de gestión que se podrán seguir manejando ( obviamente estarán superpuestas a las ventanas TPV) Espero no haber liado mucho el tema. Saludos |
#12
|
||||
|
||||
Hola,
Cita:
Por otro lado, tal vez sea la respuesta más fácil, y además, si ya te has liado haciéndolo como dices... no sé yo, pero, ¿te planteaste que la aplicación fuera de tipo MDI? Ahora mismo no se me ocurre otra cosa... y lo lamento. |
#13
|
||||
|
||||
parent
Gracias de nuevo.
Como dicen en una pelicula...... Cita:
|
#14
|
||||
|
||||
Entiendo lo que quieres hacer, pero no comparto el método...
Si el usuario tiene la ventana del TPV por detras y quiere mover una de las ventanas al frente, puede cometer el fallo de activar tal o cual botón del TPV, por ello, no veo una alternativa lo que estas planteando. Si la ventana TPV no es muy grande, podrías acoplarla a la ventana MDI, o incluso dividir esa ventana de TPV en varios paneles con la funcionalidad Dock, es decir, que el usuario arrastre el panel que quiera y lo adose a los bordes del MDI. Si no te sirve... pues a cambiar de diseño, nos olvidamos de ventanas MDI y simulamos el IDE de delphi 6/7, donde el menú es una ventana y se pueden abrir otras ventanas por todos los sitios. En este caso, puedes hacer un control al abrir las ventanas de forma que cada una se sitúe donde te apetezca, según el tipo de ventana. Controlando las propiedades "Constraint" de cada ventana podrás conseguir lo que quieres. Incluso... podrías crear una ventana sin nada dentro y sin bordes, para que simule el fondo de una ventana MDI, usando los mensajes WM_WINDOWSPOSCHANGING de la ventana del menú puedes modificar el tamaño de esta nueva ventana. A ver si entre todos te podemos dar más ideas, dicen que cuatro ojos ven más que dos Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#15
|
||||
|
||||
Estube jugando con ese codigo y con otros nuevos para descartar alguna propiedad modificada. y si cuando mustro el form con la propiedad PArent:=form1; tengo el mismo resultado qu evos
pero lo que podes hacer es mostrarlo como modal. es decir y sino como dijo lepe TRabajar con Forms MDI |
#16
|
||||
|
||||
parent
La verdad que se agradece la ayuda que se recibe.
Ante de descartar MDI. he tenido muchos contratiempos. Creo que en la fase en la que me encuentro todavía estoy a tiempo de volver. Os enumero los problemas.
Sobre hacer la ventana modal, no creo que sea una solución, pues me obliga a tener que cerrarla para abrir cualquier otra ventana de gestión. Cita:
Gracias Compissss P.D. Si me solucionáis las pegas hasta me planteo volver con los MDIs |
#17
|
||||
|
||||
Bueno, si es requisito imprescindible que la ventana del TPV se quede por detrás de las demás ventanas, no recomendaría trabajar con MDI.
Los problemas que te has encontrado son inherentes a los MDI, para solucionarlos hay que zambullirse en la VCL, derivar de TCustomForm haciendo tu propio MDI y modificando el comportamiento. Para la imagen de fondo hay por ahí un código, pero la verdad, despues de usarlo y ver lo incomodo que era activar la imagen de fondo y desactivarla, dejé de usarla. Para lo de maximizar.... bastante curioso, de hecho mirad el comentario que los hombres de borland añadieron al respecto: (consideresé que Borland no añade casi comentarios a los fuentes, si en este caso lo hacen... por algo será )
Para CTRL + TAB (me picó la curiosidad ):
Puesto que tendríamos que sobreescribir (override) este método, lo más oportuno me parece crear una lista de Objetos con varias propiedades, de tal forma que el usuario de la forma MDI añade en esa lista las ventanas que no se desea el foco. Justo en el código de color rojo, tendríamos que comparar si la forma hija es una de las que hay en la "lista negra" y si está, pasar a otra ventana hija. Por supuesto el derivar de esta clase y modificar su comportamiento, puede traer efectos colaterales no deseados, y solo haciendo el cambio podrás averiguar si tienes esos efectos o no. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#18
|
||||
|
||||
Cita:
pd: En una aplicación mdi, los formularios hijos, o todos están maximizados o ninguno lo está. No lo juro pero creo que éste es el comportamiento "normal" de Windows y va más allá de la VCL. // Saludos |
#19
|
||||
|
||||
parent
Definitivamente, para este proyecto dejo el MDI.
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
QReport has no parent window | david duarte | Impresión | 1 | 19-01-2006 15:06:07 |
TreeView parent | Caro | OOP | 4 | 09-11-2005 17:37:45 |
error : has no parent windows | jorodgar | Varios | 5 | 23-05-2005 21:49:48 |
TTabSheet - TForm - Parent | neon | OOP | 0 | 11-01-2005 16:34:03 |
Opciones de Parent | pepelu1975 | OOP | 7 | 26-05-2004 18:35:36 |
|