Bonjour,
Je suis en train de traduire mon application et pour le choix de la langue, je voudrais une combobox avec sur chaque ligne la langue et un petit drapeau à coté correspondant à la langue.
Je n'y arrive pas. quelqu'un aurait-il une idée ?
Bonjour,
Je suis en train de traduire mon application et pour le choix de la langue, je voudrais une combobox avec sur chaque ligne la langue et un petit drapeau à coté correspondant à la langue.
Je n'y arrive pas. quelqu'un aurait-il une idée ?
J'ai résolu le probleme en utilisant le composant TcolumnCombobox de TMS (http://www.tmssoftware.com)
C'est une combo avec 2 colonnes que j'ai associé à une imagelist.
Chaque ligne de la combo est associée à une image de l'imagelist.
Salut,
Voiçi une possibilité :... et dans mon cas imgFrance, imgItalie, etc sont des petits TImages (rendus invisibles) dont les fichiers *.bmp ont été chargés dans la propriété Picture à la conception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm1.FormCreate(Sender: TObject); begin ... comboBox1.items.clear; comboBox1.items.AddObject('France', imgFrance.Picture.graphic); comboBox1.items.AddObject('Italie', imgItalie.Picture.graphic); comboBox1.items.AddObject('Espagne',imgEspagne.Picture.graphic); ... comboBox1.ItemIndex:=0; end;
A+
EDIT : Posts croisés.
ça marche avec un ComboBox standard. Par contre l'idée d'utiliser un TImageList n'est pas mal : ça dégage l'écran en phase de conception si l'on a besoin d'une floppée de drapeaux.
Encore plus simple, aucune programmation.
Installe la JVCL et utilise le composant TjvListComb(JvImageCombobox) dans la palette Jv Lists, combos, trees. Indique lui une imagelist...et le tour est joué... chaque item peut avoir une image associée...
Si, il faut utiliser OnDrawItem....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var marge:integer; begin // Dessin du fond des lignes en alternant les couleurs if index mod 2<>1 then begin ComboBox1.canvas.brush.color:=clwhite; ComboBox1.canvas.fillrect(rect); end else begin ComboBox1.canvas.brush.color:=$00F4F3EE; ComboBox1.canvas.fillrect(rect); end; // Affichage du texte ComboBox1.canvas.textout(rect.left+30,rect.top+2,ComboBox1.items[index]); if (odSelected in state) then begin ComboBox1.canvas.brush.color:=$00F8D1C5; ComboBox1.canvas.fillrect(rect); ComboBox1.canvas.font.color:=clblue; ComboBox1.canvas.font.style:=ComboBox1.canvas.font.style +[fsbold]+[fsitalic]; ComboBox1.canvas.textout(rect.left+30,rect.top+2,ComboBox1.items[index]); end; // Dessin des icônes marge := (Rect.Bottom - Rect.Top - imageList1.Height) div 2; imagelist1.Draw(ComboBox1.canvas, Rect.Left + 4, Rect.Top + marge, Index); end;
Bonjour,
Petitprince a raison : dans la précipitation j'ai oublié d'ajouter le code du DrawItem qui, compte tenu des transferts du style comboBox1.items.AddObject('France', imgFrance.Picture.graphic) effectués lors du FormCreate à partir des drapeaux stockés dans des TImage, est le suivant :... par contre, l'idée de stocker les drapeaux dans une ImageList est bien meilleure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var bitmap : tBitMap; begin with (Control As tComboBox).canvas do begin FillRect(rect); bitmap:=tBitMap(combobox1.items.Objects[Index]); Draw(Rect.left+5,Rect.top+2,bitmap); TextOut(Rect.left+40,Rect.Top+3,combobox1.items[index]); end; end; procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin height:=20; end;
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager