[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