Otra componente disponible en la pestaña "Standard" de la paleta de componentes es el TListBox.
La componente TListBox nos muestra una lista de elementos de la cual podemos seleccionar uno de ellos y verificar luego cual está seleccionado.
La propiedad ItemIndex almacena un -1 si no hay seleccionado un elemento y en el caso de estar seleccionado almacena la posición del elemento seleccionado.
Igual que la componente TComboBox debemos cargar la lista de string en la propiedad Items.
Confeccionar un programa que muestre en un control de tipo TListBox una lista de artículos.
Cuando se presiona un botón mostrar en el título del formulario el producto seleccionado del TListBox. Validar que se encuentre seleccionado un elemento.
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)
ListBox1: TListBox;
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 ListBox1.ItemIndex <> -1 then
Caption := ListBox1.Items[ListBox1.ItemIndex];
end;
end.
Verificamos si está seleccionado un item del ListBox controlando que la propiedad ItemIndex del ListBox1 sea distinta a -1, luego accedemos a la propiedad Items del ListBox1 en la posición indicada por ItemIndex:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
Caption := ListBox1.Items[ListBox1.ItemIndex];
end;
Confeccionar un programa que muestre en un control de tipo TListBox una lista de artículos y que permita la selección de varios al mismo tiempo.
Cuando se presiona un botón agregar en un segundo TListBox los elementos que se encuentran seleccionados en el primero.
Debemos inicializar la propiedad MultiSelected con el valor true del primer TListBox.
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)
ListBox1: TListBox;
Button1: TButton;
ListBox2: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f: Integer;
begin
for f:=0 to ListBox1.Items.Count - 1 do
if ListBox1.Selected[f] then
ListBox2.Items.Add(ListBox1.Items[f]);
end;
end.
La clase TListBox tiene una propiedad llamada Selected que almacena para cada posición del TListBox si dicho elemento se encuentra seleccionado o no.
Mediante un for recorremos y analizamos cada elemento del ListBox1 verificando si se encuentra seleccionado en dicho caso procedemos a añadirlo al segundo ListBox:
procedure TForm1.Button1Click(Sender: TObject);
var
f: Integer;
begin
for f:=0 to ListBox1.Items.Count - 1 do
if ListBox1.Selected[f] then
ListBox2.Items.Add(ListBox1.Items[f]);
end;
Mostrar en un TListBox los string 'sumar', 'restar', 'multiplicar' y 'dividir'. Permitir seleccionar varios elementos del TListBox.
Por otro lado permitir cargar dos enteros y mostrar el resultado de las operaciones seleccionadas.
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)
ListBox1: TListBox;
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;
f: Integer;
resultado: Integer;
begin
Label3.Caption := '';
valor1 := StrToInt(Edit1.Text);
valor2 := StrToInt(Edit2.Text);
for f:=0 to ListBox1.Items.Count - 1 do
if ListBox1.Selected[f] then
begin
if ListBox1.Items[f] = 'sumar' then
begin
resultado := valor1 + valor2;
Label3.Caption := Label3.Caption + 'La suma es=' +IntToStr(resultado) + ' ';
end;
if ListBox1.Items[f] = 'restar' then
begin
resultado := valor1 - valor2;
Label3.Caption := Label3.Caption + 'La resta es=' +IntToStr(resultado) + ' ';
end;
if ListBox1.Items[f] = 'multiplicar' then
begin
resultado := valor1 * valor2;
Label3.Caption := Label3.Caption + 'El producto es=' +IntToStr(resultado) + ' ';
end;
if ListBox1.Items[f] = 'dividir' then
begin
resultado := valor1 div valor2;
Label3.Caption := Label3.Caption + 'La división es=' +IntToStr(resultado) + ' ';
end;
end;
end;
end.