BlueGEEK Journal

Accueil > Manip’s > Delphi > Listes > Un Edit Combo Box

DELPHI

Un Edit Combo Box

mercredi 15 août 2012, par bluegyn_spip

- Le combo Box prend peu de place, mais ses propriétés sont limitées, et notamment il ne possède pas d’évènement OnMousemove qui permet de le déplacer facilement de façon dynamique.

- Il est très difficile de trouver un composant tout fait qui possède à la fois les propriétés d’une ListBox et la souplesse d’un combo


- L’artifice consiste à créer un champ texte :

Tedit Edit1

Couplé à une List Box

TListBox ListBox1

- Par défaut ListBox1 est caché

ListBox.Visible := False

- Il s’affiche quand l’Edit prend le focus

OnEnter ListBox1.visible := True ;

- Comme le but de la manip est de créer un composant déplaçable à la souris,

  • Il suffit de déplacer le Tedit
  • Puis d’aligner la liste en dessous quand elle s’ouvre :
With ListBox1 do Begin
left := Edit1.Left ;
width := Edit1.Width ;
top := Edit1.Top + Edit1.Height ;
End ;

- Quand on clique sur un des éléments de la liste, il s’affiche dans le Tedit

OnClick Edit1.Text := ListBox1.Items[ ListBox1.ItemIndex] ;
ListBox1.Visible := False ;

- Pour ajouter une entrée à la liste

ListBox1.Items.Add( Edit1.Text ) ;

- Pour supprimer une entrée

ListBox1.Items.Delete( ListBox1.ItemIndex ] ;

- Solution simple et élégante pour éviter de s’enquiquiner avec les composants soient introuvables, soient imbitables

- cf : CERFEUILLE