48 - VCL - controles Standard: TRadioButton

Otro control visual muy común es el TRadioButton que normalmente se muestran un conjunto de TRadioButton y permiten la selección de solo uno de ellos.

Problema 1:

Confeccionar un programa que muestre 3 objetos de la clase TRadioButton que permitan configurar el ancho y alto del formulario. Cuando se presione un botón actualizar el ancho y alto.

TRadioButton VCL Delphi

Proyecto160

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    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
  if RadioButton1.Checked then
  begin
    Width := 640;
    Height := 480;
  end
  else
    if RadioButton2.Checked then
    begin
      Width := 1024;
      Height := 768;
    end
    else
      if RadioButton3.Checked then
      begin
        Width := 1366;
        Height := 768;
      end;
end;

end.

La propiedad Checked almacena true si el RadioButton se encuentra seleccionado:

  if RadioButton1.Checked then
  begin
    Width := 640;
    Height := 480;
  end

Cuando modificamos las propiedades Width y Height del formulario inmediatamente cambia el ancho y alto.

Todos los controles de tipo TRadioButton que dispongamos dentro del formulario actúan en conjunto, es decir si seleccionamos uno pierde la seleccionar el actual.

Para poder desarrollar un formulario con varios grupos que tengan varios elementos de tipo RadioButton debemos disponer objetos de la clase TGroupBox y dentro del mismo insertar los objetos de tipo TRadioButton.

Problema 2:

Crear una interfaz que muestre un examen multiple choice:

TRadioButton VCL Delphi

Proyecto161

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)
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    GroupBox2: TGroupBox;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    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
  if RadioButton2.Checked then
    Caption := '(Primera correcta)'
  else
    Caption := '(Primera incorrecta)';
  if RadioButton3.Checked then
    Caption := Caption + '(segunda correcta)'
  else
    Caption := Caption + '(segunda incorrecta)';

end;

end.

El primer GroupBox en su interior tiene dos TRadioButton y el segundo GroupBox tiene tres TRadioButton.

Los dos TRadioButton que contiene el GroupBox1 actúan en conjunto en forma independiente del GroupBox2.

En lugar de utilizar un control de tipo TGroupBox podemos utilizar un control de tipo TPanel para agregar dentro un conjunto de objetos de tipo TRadioButton para que actúen en conjunto.

Problema propuesto

  • Permitir el ingreso de dos números en controles de tipo TEdit y mediante dos controles de tipo TRadioButton permitir seleccionar si queremos sumarlos o restarlos. Al presionar un botón mostrar en el título del formulario el resultado de la operación.
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)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  valor1: Integer;
  valor2: Integer;
  resultado: Integer;
begin
  valor1 := StrToInt(Edit1.Text);
  valor2 := StrToInt(Edit2.Text);
  if RadioButton1.Checked then
  begin
    resultado := valor1 + valor2;
    Caption := IntToStr(resultado);
  end;
  if RadioButton2.Checked then
  begin
    resultado := valor1 - valor2;
    Caption := IntToStr(resultado);
  end;
end;

end.