Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2009-06

devolver valor de un form

22 messages · 10 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

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

Reply by email

Giuseppe Luigi Punzi Ruiz

Hab�a una manera de hacer exactamente eso (al menos recuerdo vagamente haberlo usado en delphi), pero por desgracia no recuerdo como. Dejo a los expertos que contesten. Adem�s estoy lejos de un ordenador para consultarlo.

Siento mi in�til email :-P

Enviado usando Real Mail de Vodafone.

Earlier message 37 lines
-----Original Message----- From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> Sent: Fri, 12 Jun 2009 17:11:48 -0300 To: lazarus-es en lists.lazarus.freepascal.org Received: 12-Jun-2009 22:14:30 +0200 Subject: [Lazarus-es] devolver valor de un form 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

Reply by email

Paola Bruccoleri

Hola Giuseppe..
gracias igual!!

you wrote 6 lines
Hab�a una manera de hacer exactamente eso (al menos recuerdo vagamente haberlo usado en delphi), pero por desgracia no recuerdo como. Dejo a los expertos que contesten. Adem�s estoy lejos de un ordenador para consultarlo. Siento mi in�til email :-P

Reply by email

Jesus Reyes

--- El vie 12-jun-09, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 6 lines
De:: Paola Bruccoleri <pbruccoleri en adinet.com.uy> Asunto: [Lazarus-es] devolver valor de un form A: lazarus-es en lists.lazarus.freepascal.org Fecha: viernes 12 de junio de 2009, 15:11 Hola...

Que tal Paola,

Show quoted text 14 lines
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

normalmente esto se hace mendiante los mismos controles que esten en el form, algo asi como:

f := tmyspecialform.create(self);
try
  f.prepararaciondealgutipo;
  if f.showmodal=mrok then begin
    showmessage('El resultado es: '+f.editx.text);
end;
finally
  f.free;
end;

Esto es se toma el valor directamente del control editx del tipo TEdit, tambien, si no se quiere usar directamente los componentes del form, se puede a�adir una funcion, digamos:

type
  TMySpecialForm = class(TForm)
  ...
  public
    function MiResultado: string;
  end;

...

function TMySpecialForm.MiResultado: string;
begin
  result := editx.text;
end;

y entonces quedaria:

f := tmyspecialform.create(self);
try
  f.prepararaciondealgutipo;
  if f.showmodal=mrok then begin
    showmessage('El resultado es: '+f.MiResultado);
  end;
finally
  f.free;
end;

Saludos.

Jesus Reyes A.

�Obt�n la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx

Reply by email

Bruno Luciani

Paola , no se si digo una pavada pero no serviria , en el evento doble click

del item deseado , armar una funcion , que tome el numero de cliente y cierre el form
devolviendo el valor ?

Bruno

El 12 de junio de 2009 17:11, Paola Bruccoleri
<pbruccoleri en adinet.com.uy>escribi�:

Show quoted text 33 lines
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

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090612/8979a15e/attachment-0001.html>

Reply by email

Paola Bruccoleri

Hola Bruno..
bienvenido!! despu�s de tanta insistencia!!! :)

you wrote
Paola , no se si digo una pavada pero no serviria , en el evento doble click del item deseado , armar una funcion , que tome el numero de cliente y cierre el form devolviendo el valor ?

claro, es lo que quiero!! la cosa es la
devoluci�n de ese n�mero para colocarlo en el
textbox.. ma�ana har� las pruebas que me sugiri� Jes�s.. chauuuuuuuuu

=======================
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

Reply by email

Bruno Luciani

En realidad digo algo sin saber si en Pascal se puede usar asi pero calculo que si
o sea llamar una funcion que abra el form de busqueda y retorne el codigo

Respecto a la lista , aprovecho para saludar a los presentes , hace como una semana que me
suscribi por invitacion de Paola y vengo leyendo lo que sale.

Asi que espero sean amables cuando empiece a preguntar , ja ja

Soy muy nuevo en esto de Lazarus y FreePascal

Gracias

Bruno Luciani
Argentina

El 12 de junio de 2009 20:48, Paola Bruccoleri
<pbruccoleri en adinet.com.uy>escribi�:

Show quoted text 36 lines
Hola Bruno.. bienvenido!! despu�s de tanta insistencia!!! :) At 20:44 12/06/2009, you wrote: > Paola , no se si digo una pavada pero no serviria , en el evento doble > click > del item deseado , armar una funcion , que tome el numero de cliente y > cierre el form > devolviendo el valor ? > claro, es lo que quiero!! la cosa es la devoluci�n de ese n�mero para colocarlo en el textbox.. ma�ana har� las pruebas que me sugiri� Jes�s.. chauuuuuuuuu ======================= 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

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090612/a009ef8d/attachment.html>

Reply by email

Eduardo Lopez
to Paola Bruccoleri: Hola... tengo un form con la lista de clientes; Quiero que se devuelva el numero de…

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�:

Show quoted text 35 lines
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

Reply by email

Walter Mesón
to Paola Bruccoleri: Hola... tengo un form con la lista de clientes; Quiero que se devuelva el numero de…

Hola Paola...

Show quoted text 11 lines
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??

No me fij� si en Lazarus se puede, creo que si (lo digo de memoria), pero lo que hago en Delphi es guardar el n�mero de cliente en la propiedad tag del form y cuando salgo, lo leo y destruyo el form para no ocupar memoria.Al menos a mi me funciona sin mucho c�digo...

Saludos.

Walter

Reply by email

Giuseppe Luigi Punzi Ruiz
to Paola Bruccoleri: Hola... tengo un form con la lista de clientes; Quiero que se devuelva el numero de…

Ok, no estoy del todo seguro, pero indagando.......

Prueba a pasarle como propietario el edit en la creaci�n del form, y luego, al validar en el formulario, con Self.Owner, sabr�a quien es el propietario.
Creo recordar que yo lo hac�a as�. El c�digo puede tener alg�n gazapo, hace tiempo que no programo en ObjectPascal, as� que, �salo como referencia nada m�s :P

Por ejemplo.
LabelClientes (donde queremos que ponga el c�digo) ButtonBusqueda (lanza el formulario de b�squeda) FormBusqueda (el form de b�squeda).

/* Llamando al formulario */
procedure ButtonB�squeda_OnClick()
var
	FormBusqueda: TFormBusqueda;
begin
	FormBusqueda := TFormBusqueda.Create(LabelClientes);
	FormBusqueda.ShowModal;
	FormBusqueda.Free;
end
/* procedimiento de validaci�n */
procedure FormBusqueda_Validar()
begin
	TLabel(Sender.Owner).Caption := "blablabla";
end

Espero que te sirva.

El 12/06/2009, a las 22:11, Paola Bruccoleri escribi�:

Show quoted text 30 lines
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

Giuseppe Luigi Punzi Ruiz
http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

Carlos German Tejero
to Eduardo Lopez: Hola... as� lo resolv� yo, quiz�s haya alguna forma mejor, pero esto es lo que hice:

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�:

Show quoted text 33 lines
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 }
Show quoted text 52 lines
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.freepascal.org/pipermail/lazarus-es/attachments/20090613/f1a6bca7/attachment.html>

Reply by email

Paola Bruccoleri
to Carlos German Tejero

Hola..
gracias por todos los mails.. he estado tb
leyendo la biblia de delphi7 sobre este aspecto,
y tiene raz�n Carlos acerca del uso de
propiedades para encapsular datos, as� que estoy intentando utilizar esta forma, pero sin �xito
todav�a, creo que tengo errores en donde estoy
definiendo las cosas, aunque seguir� leyendo el libro...

a ver...

en el frmlistaclientes, donde estoy haciendo la busqueda, defino esto:

interface
..........
     function FCliId : integer;
   published
     property CliId:integer read FCliId;
implementation
function Tfrmlistaclientes.FCliId : integer;
begin
      Result:= clientes_tbl.FieldValues['id'];
end;
en el otro form donde necesito el c�digo del cliente buscado:
procedure Tfrmfacturacion.codcli_edtButtonClick(Sender: TObject);
var
    f: Tform;
begin
   f:= Tfrmlistaclientes.Create(nil);
   try
      if(f.ShowModal = mrOK) then
        codcli_edt.Text:= f.FCliId();
      else
      end;
   finally
      FreeAndNil(f);
end;

y me salta el error:
identifier idents no member FCliId
illegall expresion..

Muchas gracias de antemano
chauuuuuuuuu

you wrote 29 lines
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 ...

Reply by email

Eduardo Lopez
to Carlos German Tejero: Buenas a todos, si se me permite quiciera hacer un par de comentarios con respecto a esta…

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�:

Show quoted text 154 lines
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

Reply by email

JoshyFun
to Paola Bruccoleri: Hola.. gracias por todos los mails.. he estado tb leyendo la biblia de delphi7 sobre…

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

Reply by email

Paola Bruccoleri
to JoshyFun

Hola Joshy...

Por el estilo de c�digo da la sensaci�n de que has pasado mucho tiempo con Visual Basic :)

no!!! s�lo hace ya bastantes a�os tuve que
mantener un sistema heredado horriblemente mal programado!!

Show quoted text 7 lines
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.

s�lo he seguido los consejos de Carlos, y es lo
que me ha salido!! intent� usar el concepto de
propiedades, tal como tb se explica en "la biblia de delphi 7". Ahora, c�mo resolver�as tu esto??
Agradezco cualquier sugerencia
chauuuuuuuuuu

=======================
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

Reply by email

JoshyFun
to Paola Bruccoleri

Hello Paola,

you wrote
>Por el estilo de c�digo da la sensaci�n de que has pasado mucho tiempo >con Visual Basic :)

PB> no!!! s�lo hace ya bastantes a�os tuve que PB> mantener un sistema heredado horriblemente mal programado!!

:)

>El "descubrimiento" autom�tico de m�todos al

[...]
PB> s�lo he seguido los consejos de Carlos, y es lo PB> que me ha salido!! intent� usar el concepto de PB> propiedades, tal como tb se explica en "la biblia de delphi 7". PB> Ahora, c�mo resolver�as tu esto??
PB> Agradezco cualquier sugerencia

Creas un form que busque el cliente, por el m�todo que creas conveniente, vamos que cuando pulses el bot�n "OK" o "Aceptar" del form el c�digo de cliente est� en alg�n sitio. Ahora vas a ese form y en el apartado de "Public" a�ades:

public
      Property IDCliente: integer read GetIDCliente();

Pulsas Shift+Ctrl+C para que te autocomplete el c�digo y te crear� una function del tipo:

-----------------
function frmBuscaCliente.GetIDCliente(): Integer;
begin
end;
-----------------

Dentro de esta funci�n pones algo as�:

Result:=StrToInt(Text1.Text);
o
Result:=StrToInt(Label1.caption);
o
Result:=Dataset.FieldByName('CLIENTID').asInteger;

O lo que haga falta para que el "Result" sea el valor del ClientID.

En el formulario principal, desde el que vas a llamar al buscador de clientes:

Uses ..., frmBuscaCliente;
[......]
procedure Loquesea();
var
   BuscaCliente: TfrmBuscaCliente;
   ElCodigoDeCliente: Integer;
begin
[...]
   ElCodigoDeCliente:=-1; //Valor inv�lido.
   try
     BuscaCliente:=TfrmBuscaCliente.Create(Self);
     if BuscaCliente.ShowModalmrCancel then begin
        ElCodigoDeCliente:=BuscaCliente.IDCliente;
     end else begin
        //Se ha cancelado la b�squeda
        Exit; //Por ejemplo.
     end;
   finally
     FreeAndNIL(BuscaCliente); //Libera el formulario.
   end;
[...]
end;

Yo har�a algo as�...

Best regards, JoshyFun

Reply by email

Carlos German Tejero
to Eduardo Lopez: Muchas gracias por los apuntes. Me queda una duda. �Cu�les ser�an los riesgos de…

En progrmaci�n orientada a objetos uno de los puntos fuertes es la encapsulaci�n. Al declarar un atributo publico, perdemos el control sobre lo que se hace sobre el. Que pasaria si el dia de ma�ana necesitamos tomar una acci�n cuando se lee el valor del atributo? Con un atributo publico no podemos. Para eso en ObjectPascal existen la propiedades, que nos permiten mantener la interface de un objeto a pesar de haber cambiado internamente. Por ejemplo si necensitamos un atributo que se pueda leer y escribir y no tomar ninguna accion cuando eso sucede:

MiClase = class(TObject)
private
 FAttr:integer;
published //Published si necesitamos RTTI, sino public
 property Attr:integer read FAttr write FAtrr;
end;

Ahora si los requerimientos cambian y necesitamos tomar una accion al asignar un valor a la propiedad simplemente hacemos:

MiClase = class(TObject)
private
 FAttr:integer;
 procedure SetAttr(AAtrr:integer);
published //Published si necesitamos RTTI, sino public
 property Attr:integer read FAttr write SetAttr;
end;
procedure MiClase.SetAttr(AAtrr:integer);
begin
  AlgunaAccion();
  FAtrr := AAtrr;
end;

Con lo que hemos modificado el comportamiento sin modificar la interface. Otra cosa es que las propiedades nos permiten tener atributos de solo lectura o solo escritura, que de otra forma no lo podemos controlar. Saludos.

El 13 de junio de 2009 22:24, Eduardo Lopez <dar_alle en yahoo.com.ar>escribi�:

Show quoted text 170 lines
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 > > _______________________________________________ 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.freepascal.org/pipermail/lazarus-es/attachments/20090614/d96dd483/attachment-0001.html>

Reply by email

Paola Bruccoleri
to JoshyFun: PB> no!!! s�lo hace ya bastantes a�os tuve que PB> mantener un sistema heredado…

Hola Joshy..
muchas gracias nuevamente...

he seguido haciendo m�s cosas hoy de tarde, y
ahora tengo otro problema, que es m�s conceptual que otra cosa. No me di� m�s tiempo siquiera de consultar el libro de delphi a ver si sal�a del atraco, pero te cuento..

Show quoted text 22 lines
Uses ..., frmBuscaCliente; [......] procedure Loquesea(); var BuscaCliente: TfrmBuscaCliente; ElCodigoDeCliente: Integer; begin [...] ElCodigoDeCliente:=-1; //Valor inv�lido. try BuscaCliente:=TfrmBuscaCliente.Create(Self); if BuscaCliente.ShowModalmrCancel then begin ElCodigoDeCliente:=BuscaCliente.IDCliente; end else begin //Se ha cancelado la b�squeda Exit; //Por ejemplo. end; finally FreeAndNIL(BuscaCliente); //Libera el formulario. end; [...] end;

He querido colocar esto en un procedimiento
gen�rico en una unit llamada por ej:
funciones.pas, porque es desde muchos lados que
puedo invocar la busqueda de clientes.
Al hacerlo, me sale el error que el m�todo Self
no existe (ahora no lo tengo a mano para copiarlo
textual). Claro.. quiz�s tenga que pasar como
par�metro el form desde donde llamo a esa funci�n.., no?? o existe alguna otra forma m�s prolija de hacer esto?

He estado revisando ejemplos viejos, donde
defin�a por ej una unidad con funciones, y luego, cada funci�n la llamaba asi: unit.funcion()
o
unit.procedimiento()

es as� que deber�a usarse siempre??

chauuuuuuuuuuu

=======================
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

Reply by email

JoshyFun
to Paola Bruccoleri

Hello Paola,

you wrote
> BuscaCliente:=TfrmBuscaCliente.Create(Self);

PB> He querido colocar esto en un procedimiento
PB> gen�rico en una unit llamada por ej:
PB> funciones.pas, porque es desde muchos lados que PB> puedo invocar la busqueda de clientes.
PB> Al hacerlo, me sale el error que el m�todo Self PB> no existe (ahora no lo tengo a mano para copiarlo

Vale, simplemente es que yo siempre uso ese tipo de cosas desde forms, nunca desde funciones "gen�ricas" por lo tanto "Self" es siempre el form actual, mientras que una funci�n que no es de ninguna clase "Self" no existe. La misi�n de poner un "Owner", "Self" en este caso es que cuando "self" (qui�n sea) sea liberado, este liberar� todos los forms u objetos de los que el sea "Owner". Como en este caso controlamos la creaci�n y destrucci�n del form de una manera clara (su vida es muy corta) podemos poner simplemente "nil" en vez de "Self" y asunto solucionado.

El m�todo de usar "Self" es muy habitual cuando creamos muchos forms en pantalla que est�n todos vivos a la vez, y los dejamos as�, si cerramos el form principal este cerrar� todos los hijos autom�ticamente (owned).

PB> He estado revisando ejemplos viejos, donde
PB> defin�a por ej una unidad con funciones, y luego, cada funci�n la llamaba asi: PB> unit.funcion()
PB> o
PB> unit.procedimiento()
PB> es as� que deber�a usarse siempre??

No, forzar el "namespacing", que es lo que haces al poner lo de "unit." donde unit es el nombre de una de las units, s�lo es necesario y/o interesante para resolver ambig�edades. Un ejemplo en Windows es "Beep", si pones "Beep" a secas normalmente el procedimiento a compilar presenta este prototipo:

Procedure Beep();

Pero si en el "uses" a�adimos al final "windows" veremos que el "Beep" nos da error de compilaci�n ya que el prototipo que se relaciona es:

Procedure Beep(Frequence: integer; Duration: Integer);

Por lo tanto si queremos usar el "Beep" anterior (sin par�metros) tendremos que forzar el namespace poniendo.

system.beep();

Resumiendo, para resolver ambig�edades o asegurarnos ante una posible ambig�edad que ya estamos acostumbrados a tener de vez en cuando (a mi me pasa mucho con Beep, pero como ya casi nunca incluyo windows en el uses, pues mucho menos) :)

Best regards, JoshyFun

Reply by email

Eduardo Lopez
to Carlos German Tejero: En progrmaci�n orientada a objetos uno de los puntos fuertes es la encapsulaci�n. Al…

Ok. Entend� perfectamente.
Muchas gracias!!
Slds. Eduardo.

Carlos German Tejero escribi�:

Show quoted text 250 lines
En progrmaci�n orientada a objetos uno de los puntos fuertes es la encapsulaci�n. Al declarar un atributo publico, perdemos el control sobre lo que se hace sobre el. Que pasaria si el dia de ma�ana necesitamos tomar una acci�n cuando se lee el valor del atributo? Con un atributo publico no podemos. Para eso en ObjectPascal existen la propiedades, que nos permiten mantener la interface de un objeto a pesar de haber cambiado internamente. Por ejemplo si necensitamos un atributo que se pueda leer y escribir y no tomar ninguna accion cuando eso sucede: MiClase = class(TObject) private FAttr:integer; published //Published si necesitamos RTTI, sino public property Attr:integer read FAttr write FAtrr; end; Ahora si los requerimientos cambian y necesitamos tomar una accion al asignar un valor a la propiedad simplemente hacemos: MiClase = class(TObject) private FAttr:integer; procedure SetAttr(AAtrr:integer); published //Published si necesitamos RTTI, sino public property Attr:integer read FAttr write SetAttr; end; procedure MiClase.SetAttr(AAtrr:integer); begin AlgunaAccion(); FAtrr := AAtrr; end; Con lo que hemos modificado el comportamiento sin modificar la interface. Otra cosa es que las propiedades nos permiten tener atributos de solo lectura o solo escritura, que de otra forma no lo podemos controlar. Saludos. El 13 de junio de 2009 22:24, Eduardo Lopez <dar_alle en yahoo.com.ar <mailto:dar_alle en yahoo.com.ar>> escribi�: 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> <mailto: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> <mailto: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> <mailto: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 <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

Reply by email

Abraham
to Eduardo Lopez

Hola amigos tengo una pregunta, alguien sabe que evento se ejecuta cuando el focus esta en un Tedit??, algo asi con el evento focusde VB6, lo que quiero hacer es que cuando el Tedit tenga el focus cambie de color de fondo.

Salu2.
-------------------
Abraham Monta�o
abraham.montano en gmail.com
Chiclayo - Per�
Tel: 074-214324
Cel: 074-979034545
---------------------
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090616/d0ed112e/attachment.html>

Reply by email

Giuseppe Luigi Punzi
to Abraham

OnEnter y OnExit

El mar, 16-06-2009 a las 03:15 -0500, Abraham escribi�:

Show quoted text 20 lines
Hola amigos tengo una pregunta, alguien sabe que evento se ejecuta cuando el focus esta en un Tedit??, algo asi con el evento focusde VB6, lo que quiero hacer es que cuando el Tedit tenga el focus cambie de color de fondo. Salu2. ------------------- Abraham Monta�o abraham.montano en gmail.com Chiclayo - Per� Tel: 074-214324 Cel: 074-979034545 --------------------- _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090616/0291357a/attachment.html>

Reply by email