43 - Object Inspector - Events

El "Object Inspector" tiene una pestaña en la parte superior para mostrar todos los eventos del objeto seleccionado en el "formulario"

Crearemos un proyecto y dispondremos un objeto de la clase TLabel y otro objeto de la clase TButton. Seleccionaremos luego el objeto Button1 y buscaremos el evento OnClick (Este evento se dispara en tiempo de ejecución cuando el operador hace clic sobre el botón)

events - Object Inspector - Delphi

Hacemos doble clic con el mouse sobre el evento "OnClick" y el entorno de Delphi nos genera automáticamente el método "Button1Click" dentro de la clase TForm1:

events - Object Inspector - Delphi

Ahora codificaremos el algoritmo para cuando se presiona el Button1:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := 'Hola Mundo';
end;

end.

Si ejecutamos ahora el programa cuando el operador presiona el botón se modifica el texto contenido por el objeto Label1 con el texto "Hola Mundo".

Cuando iniciamos el programa aparece:

events - Object Inspector - Delphi

Luego de presionar el botón se modifica la propiedad Caption de la Label1:

events - Object Inspector - Delphi

Problema:

Disponer un objeto de la clase Button que muestre inicialmente el número 1. Cada vez que se presione se debe mostrar el valor siguiente. Un segundo botón debe volver a 1 el Caption del primer botón.

events - Object Inspector - Delphi

Proyecto148

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  valorActual: Integer;
begin
  valorActual := StrToInt(Button1.Caption);
  valorActual := valorActual + 1;
  Button1.Caption := IntToStr(valorActual);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Caption := '1';
end;

end.

Para el evento OnClick del objeto Button1 procedemos a extraer el contenido de la propiedad Caption y convertir dicho String a tipo Integer mediante la función StrToInt:

  valorActual := StrToInt(Button1.Caption);

Incrementamos en uno dicha variable y seguidamente volvemos a copiar a la propiedad Caption del Button1, previamente lo convertimos a String:

  valorActual := valorActual + 1;
  Button1.Caption := IntToStr(valorActual);

El evento OnClick del objeto Button2 simplemente asignamos el String '1' a la propiedad Caption del objeto Button1:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Caption := '1';
end;

Problema propuesto

  • Disponer 7 objetos de la clase TButton con los días de la semana. Fijar en las propiedades Caption de cada botón los días de la semana. Al presionar un botón mostrar en un objeto de la clase TLabel el día seleccionado.
    events - Object Inspector - Delphi
Solución


unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Button1.Caption;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Label1.Caption := Button2.Caption;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Label1.Caption := Button3.Caption;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Label1.Caption := Button4.Caption;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Label1.Caption := Button5.Caption;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  Label1.Caption := Button6.Caption;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Label1.Caption := Button7.Caption;
end;

end.