46 - VCL - controles Standard: TEdit

El control más común para la entrada de datos por teclado es el TEdit.

La propiedad Text es la más importante en la clase TEdit y almacena el valor que el operador ingresa por teclado.

Problema 1:

Confeccionar un programa que permita ingresar dos valores enteros por teclado y al presionar un botón mostrar en un objeto de tipo TLabel la suma de dichos valores.

Crear una interfaz visual similar a esta (3 TLabel, 2 TEdit y 1 TButton):

Control TEdit - Delphi

Proyecto154

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;
    Button1: TButton;
    Label3: TLabel;
    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);
  resultado := valor1 + valor2;
  Label3.Caption := IntToStr(resultado);
end;

end.

Para saber el valor almacenado en un TEdit disponemos de la propiedad Text. Como la propiedad Text es de tipo String debemos convertir dicho valor a tipo Integer mediante la función StrToInt:

  valor1 := StrToInt(Edit1.Text);
  valor2 := StrToInt(Edit2.Text);

Sumamos los dos enteros:

  resultado := valor1 + valor2;

Y finalmente cargamos en un objeto de la clase TLabel el resultado de la suma. Como la variable resultado es un Integer debemos llamar a la función IntToStr que retorna dicho valor convertido a String:

  Label3.Caption := IntToStr(resultado);

Por el momento se puede producir un error si el operador ingresa caracteres no numéricos en los controles de tipo TEdit, podemos fijar la propiedad NumbersOnly con el valor true y esto evitará el ingreso de otros tipos de caracteres..

Problema 2:

Solicitar que se ingrese una clave. Si se ingresa la cadena "abc123" mostrar un mensaje de clave correcta en caso contrario mostrar clave incorrecta.
Utilizar un control de tipo TEdit para el ingreso de la clave y un TLabel para mostrar el resultado al presionar un botón.

Inicializar la propiedad PasswordChar con el caracter asterísco '*'(esto hace que cuando el operador tipee caracteres dentro del TEdit se visualicen como asteriscos)

TextBox

Proyecto155

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;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1.Text = 'abc123' then
    Label2.Caption := 'Clave correcta'
  else
    Label2.Caption := 'Clave incorrecta';
end;

end.

Para verificar si la clave es correcta comparamos la cadena cargada en el Edit1 con la cadena 'abc123'.

Problema propuesto

  • Solicitar el ingreso de una clave de hasta 10 caracteres en un control de tipo TEdit (inicializar la propiedad MaxLength con el valor 10)
    Mostrar en el título del formulario la clave ingresada al presionar un botó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;
    Edit1: TEdit;
    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
  Caption := Edit1.Text;
end;

end.