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
Saludos,
Tengo un formulario auxiliar que generó en modo ejecución y utilizo para establecer unos filtros previos a un listado. Una vez fijados estos valores y regresar al principal, no puedo recuperar los valores del form.auxiliar. El código que utilizo es el siguiente: Código:
TFauxiliar = class(TForm) public Propiedad: String; end; ..................... //en el evento FormClose del auxiliar if ModalResult = mrOk then Propiedad := el valor que necesitas; ....................... //Formulario principal llamará así a auxiliar with TFauxiliar.Create(nil) do begin if ShowModal = ID_OK then Edit1.Text := Propiedad; Free; end; He seguido el hilo de roman pero sin tener éxito. http://www.clubdelphi.com/foros/show...ecucion+create Alguna sugerencia??? |
#2
|
|||
|
|||
Prueba esto en la llamada:
Código:
//Formulario principal llamará así a auxiliar with TFauxiliar.Create(Self) do begin if ShowModal = mrOK then Edit1.Text := Propiedad; Free; end; |
#3
|
||||
|
||||
Acabo de probarlo y a mí me funciona correctamente. Para terminar de probarlo he puesto un TButton en el TFauxiliar asignándole "mrOk" en la propiedad "ModalResult" del TButton.
|
#4
|
|||
|
|||
Prueba a crear el formulario auxiliar con Application.CreateForm(TFauxiliar, Fauxiliar);
Código:
TFauxiliar = class(TForm) public Propiedad: String; end; ..................... //en el evento FormClose del auxiliar if ModalResult = mrOk then Propiedad := el valor que necesitas; ....................... Application.CreateForm(TFauxiliar, Fauxiliar); //Formulario principal llamará así a auxiliar with Fauxiliar do begin if ShowModal = ID_OK then Edit1.Text := Propiedad; Free; end; Salu2 Er_Manué |
#5
|
||||
|
||||
¿Exactamente en qué línea te da el error? ¿Lo has "debuggado" (...ufff que mal suena esto...)? ¿No estarás liberando el form auxiliar en el OnDestroy con caFree?
El código en sí no parece tener errores; ¿Tienes algo més puesto en los eventos de Close/destroy?
__________________
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. |
#6
|
||||
|
||||
He probado con vuestros consejos y he de comunicaros que el ganador ha sido ...... Er_Manué (es broma)
Haciendo Application.CreateForm(TFauxiliar, Fauxiliar) puedo recuperar los valores sin ningún problema, aunque sigo mosqueadillo de porque no ha funcionado con TFauxiliar.Create([nil,self]) porque la única programación que tengo en el auxiliar es la de asignar a la variable pública el valor del objeto. En fín, Muchiiiiiiiiiiiisimas Gracias a tod@s |
#7
|
|||
|
|||
weeeeeeee!! gracias!! plas plas muchas gracias!! nunca espere esto!! sniff....
A mi me pasaba lo mismo si no ponia los formularios en auto-create Forms, que no es más que Application.CreateForm(..,..); pero no tengo demasiado claro el por qué, pero funciona Salu2 |
#8
|
||||
|
||||
Una crítica constructiva:
La programación no es cosa de suerte. Antes de adoptar una "solución" porque quien-sabe-por-qué-pero-así-me-ha-funcionado es recomendable revisar y entender el porque de las cosas. En este caso, por ejemplo, se termina por utilizar algo que por regla general se contra recomienda: dejar los formularios en el AutoCreate o acceder directamente a las variables globales que Delphi declara, y todo cuando la técnica original debe funcionar correctamente pero alguna otra cosa nos está estorbando. Quizá, como dice Neftali, se pone Action := caFree en el evento OnClose del formulario auxiliar. // Saludos |
#9
|
|||
|
|||
Estoy totalmente de acuerdo contigo Roman, lo que sucede que normalmente debido a esos "maravillosos plazos de entrega" que tan holgadamente nos "proponen" nuestros "queridos" jefes si algo funciona, ¡ ni lo toques ! por que no hay más tiempo pero realmente eso únicamente provoca arrastrar cada vez más errores, como una bonita bola de bugs...digo de nieve
Salu2 |
|
|
|