[Lazarus-es] devolver valor de un form

Eduardo Lopez dar_alle en yahoo.com.ar
Dom Jun 14 03:24:44 CEST 2009


Muchas gracias por los apuntes.
Me queda una duda. ¿Cuáles serían los riesgos  de declarar atributos 
públicos en una clase?
Desde ya, muchas gracias.
Eduardo.
Carlos German Tejero escribió:
> Buenas a todos, si se me permite quiciera hacer un par de comentarios 
> con respecto a esta solucion, espero sumar y no incomodar:
>
> 1.- Cuando usamos formularios modales y necesitamos retornar un valor 
> sobre la eleccion del usuario, tenemos a nuestra disposicion la 
> propiedad ModalResult. Por ejemplo, le ponemos al form dos TBitBtn uno 
> con ModalResult = mrYes y el otro con ModalResult = mrCancel, entoces 
> hacemos:
> Form := TForm.Create(nil);
> if(Form.ShowModal = mrYes)then
>   Algo
> else
>   OtraCosa
>
> 2.- Nunca olvidemos que estamos usando ObjectPascal que es progrmacion 
> orientada a objetos hibrida, no es una buena practica declarar un 
> atributo publico en una clase, para tener el control total deberiamos 
> hacer lo siguiente:
> private
>   ...
>   FArtId:integer;
>   ...
> pubblished
>   ...
>   property ArtId:integer read FArtId; //Solo lectura desde afuera
>   ...
>  
> 3.- Y por ultimo esta es mas personal que otra cosa mucho, 
> personamente nunca uso Objecto.Free para liberar un objeto, siempre 
> uso FreeAndNil(Objeto). La razon de eso es que en realidad, y 
> dependiendo del memory manager que estemos usando, cuando liberamos la 
> memoria esta solo es marcada como libre, pero nuestro puntero o 
> referencia sigue apuntando alli, lo que puede producir que en 
> ocasiones el siguiente codigo erroneo funcione y pase desapercibido:
> ...
> Obj  := TObj.Create;
> ...
> Obj.Free;
> ...
> Obj.Algo;
> ...
>
> Si utilizamos FreeAndNil este codigo jamas podria pasar funcionar.
> Saludos.
>
> El 12 de junio de 2009 22:06, Eduardo Lopez <dar_alle en yahoo.com.ar 
> <mailto:dar_alle en yahoo.com.ar>> escribió:
>
>     Hola... así lo resolví yo, quizás haya alguna forma mejor, pero
>     esto es lo que hice:
>
>     En el botón que llama al Formulario de búsquedas tengo lo siguiente:
>
>     procedure TFormMovStock.BotonBuscaArticuloClick(Sender: TObject);
>     begin
>        FormBuscaArticulo := TFormBuscaArticulo.Create(nil);
>         try
>           FormBuscaArticulo.ShowModal;
>         finally
>           begin
>             if FormBuscaArticulo.pAceptoForm then
>                Spin_ART_ID.Value:=FormBuscaArticulo.pART_ID
>             else Spin_ART_ID.Value:=0;
>             FormBuscaArticulo.Free;
>             Spin_ART_ID.SetFocus;
>            end
>         end;
>     end;
>
>     En el formulario de búsqueda propiamente habilité dos propiedades
>     públicas para llenarlas con la respuesta y poder "retornarlas" al
>     llamador:
>
>
>      procedure FormShow(Sender: TObject);
>      private
>       { private declarations }
>      public
>       pART_ID : Integer;
>       pAceptoForm : Boolean;
>
>       { public declarations }
>
>
>
>     Obviamente en botón Seleccionar del Formulario de búsqueda indico
>     el pART_ID marcado y pongo pAceptoForm en verdadero y cierro el
>     formulario.
>     El proceso llamador pregunta por los valores y finalmente destruye
>     el formulario de búsqueda.
>
>     Saludos.
>     Eduardo
>
>
>     Paola Bruccoleri escribió:
>
>         Hola...
>
>         tengo un form con la lista de clientes; Quiero que se devuelva
>         el numero de cliente cuando se salga de ese form
>         Ese form va a ser usado desde otros forms, donde se pida como
>         dato el cliente y haya que buscarlo. Uso para eso un
>         editbutton, de tal forma que al hacer clic en el botoncito
>         aparezca la ventana de busqueda, y cuando retorne, tenga el
>         código ya escrito en el campo.
>         En algunas épocas use una variable global con el codigo
>         elegido, pero no me gusta nada ese sistema.
>         He pensado en usar una variable publica de la clase
>         TListaClientes, pero no tengo todavía muy claro como hacerlo.
>         Alguna idea??
>         chauuuuuuuuuuuuuu
>
>         =======================
>         A/P Paola Bruccoleri Arrambide
>         San José de Mayo - San José - URUGUAY
>
>         Blog: http://paolabruccoleri.reducativa.com
>         Portal Educativo: http://www.reducativa.com.uy
>         Wiki: http://wiki.reducativa.com
>         Material sobre las XO:
>         http://www.reducativa.com/wiki/index.php?title=Proyecto_OLPC_-_Plan_Ceibal
>
>         Cartillas XO Sugar 8.2:
>         http://www.reducativa.com/wiki/index.php?title=Cartillas_sobre_uso_de_la_XO
>
>
>
>         _______________________________________________
>         Lazarus-es mailing list
>         Lazarus-es en lists.lazarus.freepascal.org
>         <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>         http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> -- 
> Carlos Germán Tejero
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>   





More information about the Lazarus-es mailing list