Bonjour,
Je souhaite grouper les items les + fréquemment appelés dans un ComboBox dans la première partie de la liste et les séparer des autres items par une ligne continue.
Comment faire ?
Merci.
Bonjour,
Je souhaite grouper les items les + fréquemment appelés dans un ComboBox dans la première partie de la liste et les séparer des autres items par une ligne continue.
Comment faire ?
Merci.
Pour faire remonter les elemets les plus frequement utilisé il te faudra garder dans un coin de la memoire un compteur par elements et effectuer un tri dessus pour ajouter a la combobox les element par ordre decroissant d'usage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ComboBox1.Items.Add('--------')
Tu peux raffaichir ta liste sur l'evenement OnDropDown ou assimilé.
Pour faire plus "pro" il te faudra utiliser la property OwnerDrow et dessiner toi meme les lignes de ta combobox sur l'evenement OnDrawItem si je me souviens bien.
Merci pour ta réponse Clorish
Je n'ai pas envie de mettre des série de tirets. Donc, en fait, c'est bien cette dernière idée qu'il me reste à appliquée et que je ne maitrise pas
(pour le reste de tes propositions, c'était déjà fait
!!) :
Help ?Pour faire plus "pro" il te faudra utiliser la property OwnerDrow et dessiner toi meme les lignes de ta combobox sur l'evenement OnDrawItem si je me souviens bien.
SAlut
J'ai fais au plus simple a toi d'ameliorer pour, par exemple, tracer un joli trait qui ai du relief (fait une capture d'ecran et observe, c'est juste des traits de differentes couleurs posés les uns en dessous des autres).
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 procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); Var DebutLigne, FinLigne : TPoint; begin If ComboBox1.Items[Index] = '--' Then //On trace une ligne begin DebutLigne.y := Rect.Top + ((Rect.Bottom - Rect.Top) Div 2); DebutLigne.X := Rect.Left; FinLigne.Y := DebutLigne.y; FinLigne.X := Rect.Right; ComboBox1.Canvas.PenPos := DebutLigne; ComboBox1.Canvas.LineTo(FinLigne.X,FinLigne.Y); end Else begin ComboBox1.Canvas.TextOut(Rect.Left,Rect.Top,ComboBox1.Items[Index]); end; end;
Aplus
Qwaz
Ps comme dit plus haut pense a mettre style sur OwnerDraw
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Merci à vous 2 !
en fait, je ne pensais pas que les Canvas se manipulaient si facilement
J'ai essayé avec plusieurs traits / des couleurs / ...parfait !
et très simple !
Une dernière question avant de mettre un: comment empêcher la sélection de la ligne de séparation dans le CB ?
Partager