Buenas a todos, si se me permite quiciera hacer un par de comentarios con respecto a esta solucion, espero sumar y no incomodar:<br>
<br>
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:<br>
Form := TForm.Create(nil);<br>
if(Form.ShowModal = mrYes)then<br>
Algo<br>
else<br>
OtraCosa<br>
<br>
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:<br>
private<br>
...<br>
FArtId:integer;<br>
...<br>
pubblished<br>
...<br>
property ArtId:integer read FArtId; //Solo lectura desde afuera<br>
...<br>
<br>
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:<br>
...<br>
Obj := TObj.Create;<br>
...<br>
Obj.Free;<br>
...<br>
Obj.Algo;<br>
...<br>
<br>
Si utilizamos FreeAndNil este codigo jamas podria pasar funcionar.<br>
Saludos.<br><br><div class="gmail_quote">El 12 de junio de 2009 22:06, Eduardo Lopez <span dir="ltr"><<a href="mailto:dar_alle@yahoo.com.ar">dar_alle@yahoo.com.ar</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola... así lo resolví yo, quizás haya alguna forma mejor, pero esto es lo que hice:<br>
<br>
En el botón que llama al Formulario de búsquedas tengo lo siguiente:<br>
<br>
procedure TFormMovStock.BotonBuscaArticuloClick(Sender: TObject);<br>
begin<br>
FormBuscaArticulo := TFormBuscaArticulo.Create(nil);<br>
try<br>
FormBuscaArticulo.ShowModal;<br>
finally<br>
begin<br>
if FormBuscaArticulo.pAceptoForm then<br>
Spin_ART_ID.Value:=FormBuscaArticulo.pART_ID<br>
else Spin_ART_ID.Value:=0;<br>
FormBuscaArticulo.Free;<br>
Spin_ART_ID.SetFocus;<br>
end<br>
end;<br>
end;<br>
<br>
En el formulario de búsqueda propiamente habilité dos propiedades públicas para llenarlas con la respuesta y poder "retornarlas" al llamador:<br>
<br>
<br>
procedure FormShow(Sender: TObject);<br>
private<br>
{ private declarations }<br>
public<br>
pART_ID : Integer;<br>
pAceptoForm : Boolean;<br>
<br>
{ public declarations }</blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
Obviamente en botón Seleccionar del Formulario de búsqueda indico el pART_ID marcado y pongo pAceptoForm en verdadero y cierro el formulario.<br>
El proceso llamador pregunta por los valores y finalmente destruye el formulario de búsqueda.<br>
<br>
Saludos.<br>
Eduardo<br>
<br>
<br>
Paola Bruccoleri escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
Hola...<br>
<br>
tengo un form con la lista de clientes; Quiero que se devuelva el numero de cliente cuando se salga de ese form<br>
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.<br>
En algunas épocas use una variable global con el codigo elegido, pero no me gusta nada ese sistema.<br>
He pensado en usar una variable publica de la clase TListaClientes, pero no tengo todavía muy claro como hacerlo.<br>
Alguna idea??<br>
chauuuuuuuuuuuuuu<br>
<br>
=======================<br></div><div class="im">
A/P Paola Bruccoleri Arrambide<br>
San José de Mayo - San José - URUGUAY<br>
<br>
Blog: <a href="http://paolabruccoleri.reducativa.com" target="_blank">http://paolabruccoleri.reducativa.com</a><br>
Portal Educativo: <a href="http://www.reducativa.com.uy" target="_blank">http://www.reducativa.com.uy</a><br>
Wiki: <a href="http://wiki.reducativa.com" target="_blank">http://wiki.reducativa.com</a><br>
Material sobre las XO: <a href="http://www.reducativa.com/wiki/index.php?title=Proyecto_OLPC_-_Plan_Ceibal" target="_blank">http://www.reducativa.com/wiki/index.php?title=Proyecto_OLPC_-_Plan_Ceibal</a> <br>
Cartillas XO Sugar 8.2: <a href="http://www.reducativa.com/wiki/index.php?title=Cartillas_sobre_uso_de_la_XO" target="_blank">http://www.reducativa.com/wiki/index.php?title=Cartillas_sobre_uso_de_la_XO</a> <br>
<br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br>
</div></blockquote><div><div></div><div class="h5">
<br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Carlos Germán Tejero<br>