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.