Sign in Join
Wiki copytemporary

TButton/es

Deutsch · English · Español · Français · Suomi · Русский · 日本語

Un TButton 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.

Un TButton es un de los controles más básicos en un 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 handler que se llama después del salto.

Se 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.

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

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Entre las sentencias begin y end se puede escribir el código que será ejecutado cuando Button1 es presionado.

Casi todos los tutoriales de principiantes disponibles utilizan TButtons como una entrada fácil en la Programación Orientada a Objetos con Lazarus. Los siguientes tutoriales son adecuados para que los principiantes entiendan el uso de los botones:

Un ejemplo sencillo

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Lazarus me alegró el día');  //Se muestra un mensaje con ese contenido (texto)...
end;

Generar un botón dinámicamente

A 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).

Esto se puede lograr como en el siguiente ejemplo (una calculadora rápida):

pascal
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  aButton: TButton;
begin
  for i:=0 to 9 do begin              //crea 10 botones 
    aButton:=TButton.Create(Self);    //Crea botón, el dueño (Owner) es Form1, donde el botón se libera luego
    aButton.Parent:=Self;             //determina donde se mostrará
    aButton.Width:=aButton.Height;    //El ancho debe corresponder a la altura de los botones
    aButton.Left:=i*aButton.Width;    //Distancia desde la izquierda
    aButton.Caption:=IntToStr(i);     //Captions (leyendas) de los botones (0.9)
    aButton.OnClick:=@aButtonClick;   //El controlador de eventos para el botón -> se creará aún
  end;
  Self.Height:=aButton.Height;        //Altura del formulario debe corresponder a la altura de los botones
  Self.Width:=aButton.Width*10;       //Ancho del formulario para que coincida con el ancho de todos los botones
end;
pascal
procedure TForm1.aButtonClick(Sender: TObject);
const
  Cnt: Integer = 0;
var
  i: Integer;
begin
  if (Sender is TButton) and                       //Llamado el controlador de eventos de un botón?
     TryStrToInt(TButton(Sender).Caption, i)       //entonces intente convertir la etiqueta (Texto de la leyenda/Caption) en un número entero.
  then begin
    Cnt:=Cnt + i;                                 //El contador de la suma se incrementa por el número de entrechende ¿?
    Caption:='Suma rápida: '+IntToStr(Cnt);       //Escriba el resultado en el título del formulario
  end;
end;

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

Lea también


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.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.