Bonjour,
je voudrais savoir comment s'y prendre pour cacher des éléments d'un combobox.
par exemple si quelque chose cache les items 0 à 2 ...
Version imprimable
Bonjour,
je voudrais savoir comment s'y prendre pour cacher des éléments d'un combobox.
par exemple si quelque chose cache les items 0 à 2 ...
Pourquoi ne pas les enlever tout simplement puis les remettre lorsque tu en as besoin.
L'idée générale :
- déclarer un array pour mémoriser les items et leurs emplacements dans la combo
- Supprimer l'Item et placer son contenu et sa position dans le tableau
- Et pour le remplacer réinsérer l'item en se servant des données du tableau.
c'est possible d'avoir un petit exemple, parce que je débute de chez débute et j'ai de la peine à imager tout ça :lol:
merci d'avance
Délcaration du type
Une petite variable globale pour y avoir accès de partoutCode:
1
2
3
4 TMemoire = record Index : integer; Valeur : string; end;
Il faudra Initialiser NbMemoire à 0Code:
1
2 var TabMemoire : array of TMemoire; NbMemoire : integer;
La suppression (de l'item 2 par exemple)
Pour remettre (l'item 2 par exemple)Code:
1
2
3
4
5 SetLength(TabMemoire,NbMemoire); TabMemoire[NbMemoire - 1].Index := 2; TabMemoire[NbMemoire - 1].Valeur := MaCombo.Item.Strings[2]; MaCombo.Items.Delete(2);
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 i := 0; arret := False; // recherche de L'item dans le tableau while (i<NbMemoire) do begin if (TabMemoire[i].Index = 2) then arret := True else Inc(i); end; // fin recherche if (arret) then begin // Ajout de L'item MaCombo.Items.Add(TabMemoire[i].Valeur); // remet l'item à sa place for j := MaCombo.Items.Count - 1 downto 2-1 do begin stTemp := MaCombo.Items.Strings[j]; MaCombo.Items.Strings[j] := MaCombo.Items.Strings[j - 1]; MaCombo.Items.Strings[j - 1] := StTemp; end; // Fin de remise en place end;
Salut;
une autre façon de voir les choses. places deux combo superposés et joue avec la variable visible.
seulement si tes éléments sont dynamiques faut recourir à taper du code.
Bon codage.
Et avec un filtre ?
Tu remplaces ta combobox par TDBLookupcomboBox.
Puis tu filtre les éléments de la liste liée.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 TForm1 = class( tform) SourceListeCombo : TDatasource; DataListeCombo : TClientDataset; end; implementation procedure TForm1.Filtrage; begin maCombo.ListeSource.Dataset.Filtre := ....; maCombo.ListeSource.Dataset.Filtered := false; end;
Edit: je recommence tout, parce que quelque chose à changé dans ma base et je vais avoir 3 solutions, je me lance dans le filtre.:?
Bon alors voilà mon idée, j'ai une combobox qui me donne la couleur d'une ceinture. ensuite je pensais utiliser un DbLookUpComboBox pour le nombre de barette et appliquer un filtre dessus, comme ça par exemple lorsque je sélectionne bleu dan ma combobox il me met le choix de 0 ou 1 barette, et quand je met jaune je peux choisir 0,1 ou 2 barette.
mais je ne sais pas comment faire le filtre, quelqu'un a une petit idée ?
merci d'avance
difficile de répondre sans la structure des données
Une réponse qui marche toujours
Crée plusieurs ensembles avec les MÊMES champs
Code:
1
2
3
4
5 case ceinture of 1 : maCombo.ListeSource.Dataset := EnsembleJaune; 2 : maCombo.ListeSource.Dataset := EnsembleRouge; end;
j'ai une table nomée Grade avec le numéro de grade, la couleur de la ceinture et le nombre de barrette
Alors un truc du genre positionner sur le Onchange ta combo couleur
Code:
1
2
3
4
5
6 if Not VarIsnull(macombocouleur.keyvalue) then maComboBarette.ListeSource.Dataset.Filtre := 'grade.couleur = ' + VartoStr(macombocouleur.keyvalue) else maComboBarette.ListeSource.Dataset.Filtre := ''; maComboBarette.ListeSource.Dataset.Filtered := (maComboBarette.ListeSource.Dataset.Filtre <> '');
Re;
Reste toujours utile de savoir si notre ami utilise une base de données ou une liste d'un fichier texte ou seulement la propriété Items du combobox.
Bon codage.
Excuse moi Blagueur je ne savais pas que tu écoutais. :mouarf:
Maintenant il est vrai qu'une question mal posée ne donne pas toujours (souvent ?) de bonnes réponses.
Mais bon il faut bien débuter et n'est-on pas dans le forum "Débutant" ?
Je viens de m'appercevoir que 3 des sujets auquel j'ai répondu (ou essayé de répondre) concernait un projet avec des grade, des couleurs et des barrettes.
M'est avis que vous n'irez pas bien loin dans vos études si vous cherchez la facilité en laissant les gens du forum faire vos devoir scolaires à votre place