Bonjour à tous,
J'utilise une combobox dans laquelle je souhaiterais pouvoir griser à la demande certaines lignes (Enable=false) et en laisser d'autres normales (Enable=true).
Est-ce possible ?
Merci d'avance.
Bonjour à tous,
J'utilise une combobox dans laquelle je souhaiterais pouvoir griser à la demande certaines lignes (Enable=false) et en laisser d'autres normales (Enable=true).
Est-ce possible ?
Merci d'avance.
suggestion "de passage"
A essayer ...
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 Const interdits_indexlist1 = "/2/4/" Private Sub Form_Load() For i = 0 To 10 List1.AddItem i Next End Sub Private Sub List1_Click() If InStr(interdits_indexlist1, "/" & Trim(List1.ListIndex) & "/") > 0 Then If List1.Selected(List1.ListIndex) = True Then List1.Selected(List1.ListIndex) = False End If End If End Sub
Bonjour jmf
A noter que la multiselection n'existe pas pour les combobox
Merci pour le code.
Ca fonctionne très bien, mais peut-on faire l'équivalent avec une combobox ?
Merci d'avance
Tu ne me parais pas réfléchir beaucoup, legos
essaye celà
et essaye de sélectionner le 2 ou le 4 ...
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 Const interdits_indexcombo1 = "/2/4/" Private Sub Form_Load() For i = 0 To 10 Combo1.AddItem i Next End Sub Private Sub combo1_Click() If InStr(interdits_indexcombo1, "/" & Trim(Combo1.ListIndex) & "/") > 0 Then Combo1.ListIndex = 0 Combo1.Text = "" msgbox "développer c'est aussi réfléchir un peu !" exit sub End If End Sub
Il faut que tu apprennes à te "creuser un peu les méninges "...
Puisque je m'adresse au grand maître de VB, j'ose reposer la question initiale à laquelle, je crois (malgrès ma faible intelligence) tu n'as pas répondu :
"je souhaiterais pouvoir griser à la demande certaines lignes (Enable=false) et en laisser d'autres normales (Enable=true)"
Merci et ... sans rancune !
Ceci n'est à ma connaissance pas possible.je souhaiterais pouvoir griser à la demande certaines lignes (Enable=false) et en laisser d'autres normales (Enable=true)"
Il est par contre toujours possible de créer son propre composant (ocx). C'est là un bon exercice, à mon sens.
Commence donc à t'y mettre (et n'oublie surtout pas de proposer ton ocx résultat de tes pensées). Merci par avance de ce qu'il te sera possible de dépenser comme énergie dans ce sens (ici, vois-tu, on donne une forme à ses idées ... on ne se contente pas de celles des autres...).
A bientôt, donc.
on peut faire une pseudo-combobox en "déroulant" (en augmentant le height) une liste placcée sous un textbox. ça simplifie la création du contrôle.
Exact, mais ca n'aidera pas pour griser des items .
Je pense qu'il faudra tout gérer a partir d'un picture box, du click sur le picture box pour retrouver l'item (on pourait mettre le picture.scalemode = 4 pour faciliter le calcul de l'item)
Le composant devrait fournir une propriété (collection) List, une propriété (collection) Selected et une propriété (collection)EnabledItems
Il faudra penser à gérer les scrollbars et penser qu'on ne pourra pas afficher toutes les lignes en même etmps sur le picture box dont la hauteur maxi ne sera jamais suffisante pour plus de quelques dixaines de lignes.
Enfin Bref, un trés tres gros boulot.
A mon humble avis, il serait aussi simple de retirer les elements qui devraient être grisé de la liste du combo, inutile d'afficher des items qui ne pourront jamais être sélectionnés
Salut Delbeke,A mon humble avis, il serait aussi simple de retirer les elements qui devraient être grisé de la liste du combo, inutile d'afficher des items qui ne pourront jamais être sélectionnés
Evidemment
comme il voulais l'équivalent en combobox, je me suis dis que ça sufisait.Envoyé par legos
sinon, il y as une methode un peu lourde mais qui peu marcher: positionner des images semi-transparante sur toute la combodéroulée (une par élément de la liste) (encore que je sait pas si même avec le Zorder on peu passer au dessus d'un contrôle qui à le focus) et les mettre visible ou pas en fonction du scroll. (mais comment obtenir sa valeur... )
bonne chance
j'y pense, on peut peut-être se débrouiller avec une imagecombo non ?Envoyé par jmfmarques
Bonjour à tous,
Je vois que ma question suscite bien des réflexions et que la réponse n'existe probablement pas sur étagère.
Pourquoi ne pas éliminer les élément que je souhaite griser : tout simplement pour montrer à l'utilisateur du programme les points qui n'ont pas été calculés et faire ressortir de façon immédiate le degré d'avancement des calculs.
Merci encore
Bonjour Legos,
Ne dis pas :
retrousse-toi les manches et fais un ocx, puis fais-en profiter les autres...Merci encore
En d'autres termes : tu es le seul jusqu'à présent à déplorer l'absence, "sur l'étagère" d'un pot de confiture.... A toi donc de la faire, cette confiture-là..
Merci à l'avance pour tous ceux qui auraient envie de la goûter...
Pourquoi pas
Faire reference au composant :
Microsoft Hierarchical FlexGrid Control 6.0 (MSHFLXGD.OCX)
Sur un Form
mettre un Label et le composant MSHFlexGrid sur une Form
mettre MSHFlexGrid1 Lignes fixes = 0
mettre MSHFlexGrid1 colonnes fixes = 0
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 Option Explicit Dim T As Integer Private Sub Form_Load() MSHFlexGrid1.Width = 1600 MSHFlexGrid1.ColWidth(0) = 1275 MSHFlexGrid1.Rows = 25 MSHFlexGrid1.Col = 0 For T = 0 To MSHFlexGrid1.Rows - 1 MSHFlexGrid1.Row = T If CInt(T / 2) <> Abs(T / 2) Then MSHFlexGrid1.CellBackColor = &HC0C0C0 'gris MSHFlexGrid1.CellForeColor = &HFFFFFF 'blanc MSHFlexGrid1.TextMatrix(T, 0) = "grisée" Else MSHFlexGrid1.CellBackColor = &HFFFFFF 'blanc MSHFlexGrid1.CellForeColor = &H0& 'noir MSHFlexGrid1.TextMatrix(T, 0) = "normal" End If Next T End Sub Private Sub MSHFlexGrid1_RowColChange() If MSHFlexGrid1.CellBackColor = &HC0C0C0 Then 'gris Label1 = "ne rien faire" ' donc equivalant à Enabled=False Else Label1 = "là, je fais un truc" ' donc equivalant à Enabled=True End If End Sub
Bonsoir,
Merci pour l'idée. Elle répond en grande partie au besoin si le "look" n'est pas tout à fait celui d'une combobox.
Je vais creuser un peu cet aspect et chercher si l'on peut un peu améliorer la ressemblance.
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