Sign in Join
Wiki copytemporary

TButton/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Un **TButton** ![](/wiki-images/b/b2/Tbutton.png) es un componente que provee un control básico de presionar un botón. Está disponible en la [[Standard tab/es]] de la [[Component Palette]].
22
33Un TButton es un de los controles más básicos en un [[TForm|Form]]. Haciendo click con el ratón sobre él (o mediante la tecla \[tab\] sobre el botón y presionándole mediante la tecla Entrar/Intro/Enter), se activa una acción. Ese click se llama evento. Para esto se necesita un [[Event order|event handler]] que se llama después del salto.
44
55Se puede añadir un botón en un formulario haciendo click en TButton (un botón cuadrado con un "OK" en el medio) en la paleta de componentes Standard y ubicarlo haciendo click en el formulario.
66
77Para acceder fácilmente al manejador de evento para el click del ratón basta con hacer doble click sobre el botón que se creó en el formulario (o en el inspector de objetos, seleccionar el evento "OnClick" del botón). El manejador de evento para un *Button1* en un formulario *Form1* tendrá este aspecto:
88
99``` pascal
1010procedure TForm1.Button1Click(Sender: TObject);
1111begin
1212
1313end;
1414```
1515
1616Entre las sentencias **begin** y **end** se puede escribir el código que será ejecutado cuando **Button1** es presionado.
1717
1818Casi todos los tutoriales de principiantes disponibles utilizan TButtons como una entrada fácil en la [[Glossary/es|Programación Orientada a Objetos]] con Lazarus. Los siguientes tutoriales son adecuados para que los principiantes entiendan el uso de los botones:
1919
2020- [[Form Tutorial|The first GUI application]] for absolute beginners.
2121- [[Lazarus Tutorial/es|Tu primer programa con Lazarus]] tutorial para Lazarus.
2222- [[Object Oriented Programming with Free Pascal and Lazarus/es|Ejemplo de programación]] Programación Orientada a Objetos con FreePascal y Lazarus.
2323
2424#### Un ejemplo sencillo
2525
2626- Crea una nueva aplicación y suelta un TButton en el formulario (Form).
2727- Haz doble click sobre ese *Button1* en el formulario (el método predeterminado para el evento: *OnClick* se crea para *Button1*y se abre el editor de código fuente).
2828- Agrega el siguiente código en el procedimiento:
2929
3030``` pascal
3131procedure TForm1.Button1Click(Sender: TObject);
3232begin
3333 ShowMessage('Lazarus me alegró el día'); //Se muestra un mensaje con ese contenido (texto)...
3434end;
3535```
3636
3737- Corre o ejecuta tu programa (con la tecla \<F9\> o presionando el botón verde de *Play*).
3838
3939## Generar un botón dinámicamente
4040
4141A veces, en lugar de crear botones (u otros componentes) con el diseñador de formularios de Lazarus, es más fácil crearlos dinámicamente en tiempo de ejecución. Este enfoque es útil especialmente si tiene continuamente botones repetidos en un formulario (aunque también se pueden copiar y pegar en el formulario en tiempo de diseño).
4242
4343Esto se puede lograr como en el siguiente ejemplo (una calculadora rápida):
4444
4545- Crea una nueva [[Form Tutorial|GUI application]] en **blanco** con el formulario *Form1* y agrega **StdCtrls** a la [[Uses/es|Cláusula uses]] (ahí es donde está TButton).
4646- Cambia el caption *Form1* a *Suma Rápida*.
4747- Crea el método (procedure) para el evento OnCreate del Form1 (en el Inspector de Objetos debes ir hasta el evento *OnCreate* y hacer click en el botón \[...\]).
4848- Agrega el siguiente código:
4949
5050``` pascal
5151procedure TForm1.FormCreate(Sender: TObject);
5252var
5353 i: Integer;
5454 aButton: TButton;
5555begin
5656 for i:=0 to 9 do begin //crea 10 botones
5757 aButton:=TButton.Create(Self); //Crea botón, el dueño (Owner) es Form1, donde el botón se libera luego
5858 aButton.Parent:=Self; //determina donde se mostrará
5959 aButton.Width:=aButton.Height; //El ancho debe corresponder a la altura de los botones
6060 aButton.Left:=i*aButton.Width; //Distancia desde la izquierda
6161 aButton.Caption:=IntToStr(i); //Captions (leyendas) de los botones (0.9)
6262 aButton.OnClick:=@aButtonClick; //El controlador de eventos para el botón -> se creará aún
6363 end;
6464 Self.Height:=aButton.Height; //Altura del formulario debe corresponder a la altura de los botones
6565 Self.Width:=aButton.Width*10; //Ancho del formulario para que coincida con el ancho de todos los botones
6666end;
6767```
6868
6969- Ahora debes crear el controlador de eventos para los clics del botón,
7070- en el editor del código, ingresando su clase (class) *TForm1* en la sección **`private`**.
7171- Agrega **`procedure aButtonClick(Sender: TObject);`** y presiona las teclas \[CTRL\] + \[Shift\] + \[c\] (La finalización del código se activa y crea el procedimiento `TForm1.aButtonClick(Sender: TObject);`.
7272- Pega el siguiente código:
7373
7474``` pascal
7575procedure TForm1.aButtonClick(Sender: TObject);
7676const
7777 Cnt: Integer = 0;
7878var
7979 i: Integer;
8080begin
8181 if (Sender is TButton) and //Llamado el controlador de eventos de un botón?
8282 TryStrToInt(TButton(Sender).Caption, i) //entonces intente convertir la etiqueta (Texto de la leyenda/Caption) en un número entero.
8383 then begin
8484 Cnt:=Cnt + i; //El contador de la suma se incrementa por el número de entrechende ¿?
8585 Caption:='Suma rápida: '+IntToStr(Cnt); //Escriba el resultado en el título del formulario
8686 end;
8787end;
8888```
8989
9090- Ejecuta tu aplicación.
9191- Debería verse así:
9292
93-<figure>
94-<img src="quickadd.png" title="quickadd.png" />
95-<figcaption>quickadd.png</figcaption>
96-</figure>
93+![](/wiki-images/a/a6/Quickadd.png)
9794
9895> **Note:** Puedes asignar todos los manejadores de eventos imaginables a tus botones, siempre y cuando estén en el formulario **`procedure <class>.<name of procedure>(Sender: TObject);`**. Por lo tanto, puedes utilizar uno de otra clase!!
9996
10097## Lea también
10198
10299- [[doc:lcl/stdctrls/tbutton.html|TButton doc]]
103100- [[TBitBtn/es|TBitBtn]]
104101- [[TSpeedButton]]
105102- [[TColorButton]]
106103- [[15-puzzle]] (Game)
107104
108105---
109106*From the Free Pascal wiki, page "TButton/es", as it stood on 2020-01-31 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history