Exercice  Delphi

Manipulation des Listes - opérations de base

Unit - Screenshot - Download -

Screenshot

c29exem1b

Unit

unit Unit1;
 
interface
 
uses
    Windows, Messages, SysUtils,    Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
 
type
    TForm1 = class(TForm)
    lb_1    : TListBox;
    lbl1    : TLabel;
    edt1    : TEdit;
    btnAjouter : TButton;
    btnInserer : TButton;
    btnSupprimer : TButton;
    btnTrier    : TButton;
    btnFill    : TButton;
    btnCharger : TButton;
    btnSauvegarder : TButton;
    btnClear    : TButton;
    btnRemplacer : TButton;
    btnUp    : TButton;
    btnDown    : TButton;
    btnRecharger : TButton;
    lblfiletxt : TLabel;
    lblfile    : TLabel;
    dlgOpen    : TOpenDialog;
    dlgSave    : TSaveDialog;
    gr_info    : TGroupBox;
    lblIndextxt : TLabel;
    lblIndex    : TLabel;
    lblCounttxt : TLabel;
    lblCount    : TLabel;
    procedure btnAjouterClick(Sender: TObject);
    procedure btnInsererClick(Sender: TObject);
    procedure btnSupprimerClick(Sender: TObject);
    procedure btnTrierClick(Sender: TObject);
    procedure btnChargerClick(Sender: TObject);
    procedure btnSauvegarderClick(Sender: TObject);
    procedure btnRemplacerClick(Sender: TObject);
    procedure lb_1Click(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    procedure btnUpClick(Sender: TObject);
    procedure btnDownClick(Sender: TObject);
    procedure btnRechargerClick(Sender: TObject);
    procedure lb_1DblClick(Sender: TObject);
    procedure btnFillClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
 
var
    Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure show_info;
// afficher le nombre d'élément et le numéro de lélément sélectionné
// -> il faut précéder les contrôles par "Form1."
begin
    Form1.lblCount.Caption := IntToSTr(Form1.lb_1.Items.Count);
    Form1.lblindex.Caption := IntToSTr(Form1.lb_1.ItemIndex);
end;
 
procedure TForm1.btnAjouterClick(Sender: TObject);
// ajouter à la fin l'élément affiché dans le champ d'édition
var S:string;
begin
    S:=edt1.Text;
    lb_1.Items.Add(S);
    show_info;
end;
 
procedure TForm1.btnInsererClick(Sender: TObject);
// insérer à l'endroit sélectionné l'élément du champ d'édition
var S:string;
    idx:integer;
begin
    S:=edt1.Text;
    idx:=lb_1.ItemIndex;
    lb_1.Items.Insert(idx,S);
    show_info;
end;
 
procedure TForm1.btnSupprimerClick(Sender: TObject);
// supprimer l'élément sélectionné
var idx : integer;
begin
    idx := lb_1.ItemIndex;
    if idx=-1 then exit;
    lb_1.Items.Delete(lb_1.ItemIndex);
    if lb_1.Items.count = idx then idx := idx-1;
    lb_1.ItemIndex := idx;
    show_info;
end;
 
procedure TForm1.btnTrierClick(Sender: TObject);
// trier la liste mais accepter par après des ajouts non triés
begin
    lb_1.Sorted:=true;
    lb_1.Sorted:=false;
    show_info;
end;
 
procedure TForm1.lb_1Click(Sender: TObject);
// afficher le numéro de l'élément sélectionné quand on clique dessus
begin
    show_info;
end;
 
procedure TForm1.lb_1DblClick(Sender: TObject);
// copier l'élément double-cliqué vers le champ d'édition
begin
    show_info;
    edt1.Text := lb_1.items[lb_1.itemindex];
end;
 
procedure TForm1.btnClearClick(Sender: TObject);
// vider la liste
begin
    lb_1.Clear;
    show_info;
end;
 
procedure TForm1.btnUpClick(Sender: TObject);
// déplacer l'élément sélectionné une place vers le haut
var S : string;
    idx : integer;
begin
    idx := lb_1.ItemIndex;
    if idx<1 then exit;
    S := lb_1.Items[idx];
    lb_1.Items[idx] := lb_1.Items[idx-1];
    lb_1.Items[idx-1] := S;
    lb_1.ItemIndex := idx-1;
    show_info;
end;
 
procedure TForm1.btnDownClick(Sender: TObject);
// déplacer l'élément sélectionné une place vers le bas
var S : string;
    idx : integer;
begin
    idx := lb_1.ItemIndex;
    if (idx=-1) or (idx=lb_1.Items.Count-1) then exit;
    S := lb_1.Items[idx];
    lb_1.Items[idx] := lb_1.Items[idx+1];
    lb_1.Items[idx+1] := S;
    lb_1.ItemIndex := idx+1;
    show_info;
end;
 
procedure TForm1.btnFillClick(Sender: TObject);
// remplir la liste avec 15 nombre aléatoires entre 0 et 99
var I : integer;
begin
    randomize;
    lb_1.clear;
    for I:=1 to 15 do lb_1.Items.Add(IntToStr(random(100)));
    show_info;
end;
 
// --------------------------------------------------------------------
//    FILE OPERATIONS
// --------------------------------------------------------------------
procedure TForm1.btnChargerClick(Sender: TObject);
// Choisir un fichier et le charger dans la liste
// Le nom du fichier est inscrit dans un libellé
begin
    if dlgopen.execute then
    begin
        lblfile.caption := dlgopen.FileName;
        lb_1.Items.LoadFromFile(lblfile.caption);
        show_info;
    end;
end;
 
procedure TForm1.btnRechargerClick(Sender: TObject);
// Recharger un fichier dans la liste
// Le nom du fichier se trouve dans un libellé
begin
    if lblfile.caption <> '' then
    begin
        lb_1.Items.LoadFromFile(lblfile.caption);
        show_info;
    end;
end;
 
procedure TForm1.btnSauvegarderClick(Sender: TObject);
// Choisir un fichier et sauvegarder la liste dans ce fichier
// Le nom du fichier est inscrit dans un libellé
begin
    if dlgsave.execute then
    begin
        lblfile.caption := dlgsave.FileName;
        lb_1.Items.SaveToFile(lblfile.caption)
    end;
end;
 
procedure TForm1.btnRemplacerClick(Sender: TObject);
// Sauvegarder la liste dans un fichier
// Le nom du fichier se trouve dans un libellé
begin
    if lblfile.caption <> '' then
        lb_1.Items.SaveToFile(lblfile.caption);
end;
 
end.

Download

c29exem1b.zip









..