FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Formulario Auxiliar
Hola a tod@s,
Veamos, tengo el siguiente problemilla. Quiero crear un formulario auxiliar cuando pulso un determinado botón en mi aplicación. Lo hago de la siguiente manera: Código:
Try Application.CreateForm(TForm3histor,Faux); Faux.ShowModal; Finally Faux.Free; End; Cita:
He seguido paso a paso el proceso y el error se produce cuando va a ejecutar la linea Faux.Showmodal, porque en el paso anterior que es donde crea el formulario con sus tablas y demás no existe/generá ningún error. ¿Se os ocurre algo? |
#2
|
||||
|
||||
¿Tienes definido código en los eventos Create o Show del formulario auxiliar?
Si lo tienes ¿Qué codigo tienes colocado? En principio el trozo de código que colocas es correcto, así sólo con eso no debería fallar. ¿Tienes algun componente no estandard en ese formulario? (que te pueda provocar ese error). Prueba a eliminar código y componentes a ver si te sigue dando.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Voy a hacer las comprobaciones que me indicas y luego te cuento, porque tengo lineas de código en el Create del formulario lo que ocurre es que como realiza todos los pasos que hay en ese evento correctamente creía que el problemas derivaba del Showmodal que es donde me mete el petardazo.
|
#4
|
||||
|
||||
He comentado todas las lineas de programación incluidas en los eventos;
OnCreate, OnClose y OnCloseQuery Y sin embargo el problemas persiste y no utilizo ningún objeto que no sea standard. ¿se os ocurre algo?, gracias. |
#5
|
||||
|
||||
Código:
Try Application.CreateForm(TForm3histor,Faux); Faux.ShowModal; Finally Faux.Free; Faux := nil; End; Si te da error, entonces probaría esto otro: Código:
Faux := TForm3historic.Create(nil); Try Faux.ShowModal; Finally Faux.Free; Faux := nil; End; Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
No me ha funcionado pero te agradecería que me explicases el por qué, ah y darte las gracias.
|
#7
|
||||
|
||||
¿Quién es FAux? Es decir, ¿dónde está declarado?
No sé a qué diferencia se refiere Lepe ya que hay dos diferencias. La sustancial, desde mi punto de vista, es sacar la creación del formulario del bloque try-except. Si hubiera alguna excepción al momento de crear el formulario, se estaría intentando liberar un objeto que nunca terminó de construirse totalmente. // Saludos |
#8
|
||||
|
||||
Faux, es una variable declarada de la siguiente manera:
Código:
procedure Programa1.SpeedButton1Click(Sender: TObject); var Faux: TForm3histor; begin Try Application.CreateForm(TForm3histor,Faux); Faux.ShowModal; Finally Faux.Free; End;End |
#9
|
||||
|
||||
La explicación ya la dió roman, además como no sabía donde estaba declarada la variable Faux, lo que hago es asignarle nil despues de liberarla.
jzk creo que hay "algo más" que no nos cuentas, quizás porque has creido que no tiene importancia. La verdad, todos los códigos propuestos funcionan a la perfección. La ventana es de tipo mdiChild? Hay más código en el SpeedButton ?? Dentro de la ventana Faux, llamas a algún evento, propiedad o método de la ventana Programa 1 ?? Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|