problema con formularios que se llaman mutuamente
Hola gente tengo 3 formularios uno A, B y C. Cada uno de estos formularios tiene dos botones para llamar a los otros 2 formularios. Por ej, en A hay un boton para llamar a B y otro para C. Lo mismo en B y C. La llamada la hago de la siguiente manera
C:TFormularioC; begin C := TFormularioC.Create(A); C.showmodal; C.release; el problema que tengo es que si A llama a C, C llama a A, y esto lo hago 4 veces, cuando los empiezo a cerrar me da un error. Obviamente es algo que puede pasar rara vez porque de uno se llama a otro y a lo sumo una vez mas, pero alguien hace algo parecido de otra manera. Uso Delphi 5 e Interbase |
Cita:
|
Hola Patricio, primero que nada, no es una practica que recomiende que todos los formularios se llamen mutuamente, pero supongamos que es necesario para tu aplicación.
Lo que estas haciendo con tu codigo es creando un objeto de cada uno de tus formularios dinamicamente, posiblemente tu error provenga por ahi aunque con el codigo como lo presentas no deberia dar problemas. De igual mandera, podrias implementar fijandote en las opciones de tu proyecto que todos los formularios se creen automaticamente, menu Project/Options. Luego simplemente los vas llamando A.Show o A.Shomal, según necesites. De esta forma, vas llamando a los formularios para que aparescan en pantalla y no creando nuevas instancias de los mismos. Suerte. pd: si seguis con el error decinos cual es y que otra cosa estas haciendo |
ok
antes que todo gracias por las respuestas, el error era un error de windows con una ventana llena de cosas como para repetirla aca. Ahora, hay alguna forma de saber si un formulario ya esta creado?
por ejemplo antes de crear el formulario A ver si esta creado y si es asi hacer el Show o Showl, cual uso para que cosa de estos dos? |
mensaje de error
Ahi hice una prueba se crea el formulario A, de este llama a B y cuando B vuelve a llamar a A, puse A.Showmodal y me tiro el siguiente error:
EInvalidOperation. cannot make a visible window modal si pongo A.Show, lo muestra pero se congela, como que falta algo. y no responde mas |
Por que no haces un pequeño ejemplo con dos formularios que se llamen y que te genere el error y lo subes aca, xq yo lo probe y no tengo ningun problema.
|
Cita:
Saludos |
No es un Child
Gracias por las informaciones que van dando, es un formulario normal
El error ocurre en forma aleatoria y cuando se llaman entre 4/5 veces cada formulario, cosa q es medio dificil en la realidad, pero como el software corre en red capaz que despues cuando subo esta actualizacion me falla. El mensaje que aparece es este Proyect pepe.exe reaised exception class EaccessViolation with message ‘ Access violatio at address 004031D2 in module pepe.exe. Read of address FFFFFFD0. Process Stopped. Saludos |
No se si te servirá de algo este código, pero por si acaso te lo incluyo.
Yo generalmente n ocreo varias veces un formulario ( a no ser que sea necesario, claro ), sino lo que hago es saber desde donde se ha llamado por si hay que hacer diferentes acciones.
Un saludo |
Gracias
Lo voy a tener en cuenta. Gracias.
|
La franja horaria es GMT +2. Ahora son las 09:21:07. |
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