Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2004
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 21
bbjb Va por buen camino
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;
Me provoca un error de "Violación de acceso a la dirección ...."

He seguido el hilo de roman pero sin tener éxito.
http://www.clubdelphi.com/foros/show...ecucion+create

Alguna sugerencia???
Responder Con Cita
  #2  
Antiguo 01-12-2004
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 01-12-2004
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 01-12-2004
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
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;
A ver si asi hay suertecilla y funciona

Salu2
Er_Manué
Responder Con Cita
  #5  
Antiguo 01-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿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.
Responder Con Cita
  #6  
Antiguo 01-12-2004
Avatar de bbjb
bbjb bbjb is offline
Miembro
 
Registrado: jul 2003
Posts: 97
Poder: 21
bbjb Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 01-12-2004
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 01-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #9  
Antiguo 01-12-2004
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 22
Er_Manué Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:02:47.


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
Copyright 1996-2007 Club Delphi