[Lazarus-es] devolver valor de un form

Carlos German Tejero german_tejero en yahoo.com.ar
Sab Jun 13 15:24:44 CEST 2009


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>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
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>



-- 
Carlos Germán Tejero
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090613/f1a6bca7/attachment-0002.html>


More information about the Lazarus-es mailing list