[Lazarus-es] devolver valor de un form

JoshyFun joshyfun en gmail.com
Dom Jun 14 13:46:52 CEST 2009


Hello Paola,

Sunday, June 14, 2009, 2:11:33 AM, you wrote:

PB> gracias por todos los mails..  he estado tb
PB> leyendo la biblia de delphi7 sobre este aspecto, 
PB> y tiene razón Carlos acerca del uso de
[...]
PB> en el frmlistaclientes, donde estoy haciendo la busqueda, defino esto:
[...]
PB> en el otro form donde necesito el código del cliente buscado:
PB> procedure Tfrmfacturacion.codcli_edtButtonClick(Sender: TObject);
PB> var
PB>     f: Tform;
PB> begin
PB>    f:= Tfrmlistaclientes.Create(nil);
PB>    try
PB>       if(f.ShowModal = mrOK) then
PB>         codcli_edt.Text:= f.FCliId();
PB>       else
PB>       end;
PB>    finally
PB>       FreeAndNil(f);
PB> end;

         codcli_edt.Text:= Tfrmlistaclientes(f).FCliId();

El método FCliID no forma parte de TForm (tal y como has declarado la
variable) por lo tanto no lo encuentra. Haciendo el "casting" fuerzas
al compilador a usar f como un TfrmListaClientes.

Por el estilo de código da la sensación de que has pasado mucho tiempo
con Visual Basic :) El "descubrimiento" automático de métodos al
estilo de VB se podría hacer en pascal pero sería "un paso atrás", ya
que para empezar te obligaría a usar "Published" en todos esos métodos
y propiedades cosa que por otra parte no es interesante si se puede
evitar (engorda el EXE inútilmente en este caso). Así que para empezar
pon el FCliID en "Public" no en "Published" para que no añada el
compilador la información RTTI de la clase.

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list