[Lazarus-es] onClick con parametros adiconales.

Martin Gomez mmgomez en gmail.com
Vie Mayo 31 14:55:43 CEST 2013


Hola Rafael,
creo que no es la manera óptima de hacerlo.
El OnClick viene desde dentro de la clase TButton y tendrías que derivar
(heredar) o reimplementar la clase, un botón completo... para que? Para
pasarle como parámetros a un evento 2 edits que NO pertenecen al botón.
Entonces, como puede "saber" la clase el nombre de los edits?
El botón es un objeto, los edits son otros objetos, a menos que estés
creando un control nuevo, no lo recomiendo.

Si tu intención es crear un "modulo" que contenga 2 edits y un botón, y
"pegar" varias veces el mismo módulo en un mismo formulario, te recomiendo
utilizar Frames.
http://wiki.freepascal.org/Frames

Dentro del frame puedes crear un evento Presionado(TEdit, TEdit) y desde el
OnClick *interno del frame* lo invocas pasando referencias a los
componentes *internos*.
En tu código del Form, en "OnPresionado" tendrás las referencias a los
componentes para trabajar sobre ellos.

Tengo implementado algo similar pero en vez de pasar las referencias de los
TEdit paso solo el texto que contienen, es menos engorroso para escribir y
mantener.

Suerte con eso!



On Fri, May 31, 2013 at 9:34 AM, Rafael Bidegain <r.bidegain en gmail.com>wrote:

> Hola a todos.
>
> necesito agregar dos parámetros al evento onClick de un TButton,
>
> el error que obtengo es el siguiente:
> Error:Incompatibles types: got "<procedure variable type of
> procedure(Tobject, Tedit, Tedit) of object;Register>" expected "<procedure
> variable type of procedure(TObject) of object;Register>"
>
> este es mi código.
>   TForm1 = class(TForm)
>     panel1 : TPanel;
>     edit1, edit2 : Tedit;
>     boton1 : Tbutton;
>
>     Button1: TButton;
>     procedure Boton1Click(Sender: TObject; uno, dos : TEdit);
>   private
>     { private declarations }
>   public
>     { public declarations }
>   end;
>
> var
>   Form1: TForm1;
>
> implementation
>
> {$R *.lfm}
>
> { TForm1 }
>
> procedure TForm1.Boton1Click(Sender: TObject; uno, dos : TEdit);
> var
>   tmp : string;
> begin
>  tmp := uno.Text;
>  uno.text := dos.text;
>  dos.text := tmp;
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>
>   panel1 := Tpanel.Create(Self);
>   panel1.parent := form1;
>   ..
>
>   edit1 := TEdit.Create(Self);
>   edit1.parent := panel1;
>   ..
>
>   edit2 := TEdit.Create(Self);
>   edit2.parent := panel1;
>   ..
>
>   boton1 := TButton.Create(Self);
>   boton1.parent := panel1;
>   boton1.OnClick := @Boton1Click(Sender, edit1, edit2);
>   ..
> end;
>
>
>
>
> --
> Rafael Bidegain
>
> Ya que los cuerdos no hablan, hablará el loco.
> (The Fool, Padraic Pearse)
>
> # yo quiero educación libre. ¡YA!
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
Try not to become a man of success but rather to become a man of value. *Albert
Einstein*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130531/a9a32748/attachment-0002.html>


More information about the Lazarus-es mailing list