Ce sujet est résolu.
1 | |||
Auteur | Messages | ||
---|---|---|---|
Foromus | #1 Posté le 19/12/2010 à 12:14:00 | ||
Bonjour à tous, Voilà, avec une case de saisie, je peux entrer un texte, mais j'aimerais avoir une aide. Ainsi, si je tape "A", il me serait agréable de voir apparaître tous les Aquelquechose d'une liste préétablie (Abricot, Ananas, Amande, etc.). Ensuite, et si je tape "b", en plus du "A" sus-mentionné, il me plairait de voir s'afficher tous les occurrences, telles Abricot, Abnégation, Abasourdi, etc... Et ainsi de suite... Sous VB, la chose se faisait sous une Combobox, je crois, mais je ne me souviens pas de l'avoir utilisée, ou alors, si rarement que le souvenir m'en échappe. Bon, comme maintenant, c'est Gambas, comment j'aborde le sujet ? Merci de votre aide et bonnes fêtes de fin d'année ! NB : Il semblerait que la mise en page sur le site soit maintenant correcte. Je n'ai pourtant rien changé à ma config, mais il est possible que des MàJ aient pu résoudre le souci. | |||
Foromus | #2 Posté le 1/2/2011 à 20:04:00 | ||
Comme une impression que le sujet n'intéresse pas grand monde... | |||
manu | #3 Posté le 1/2/2011 à 21:14:00 | ||
Avec Gambas ca roule ! | Foromus, C'est quoi une case de saisie ? une comboBox ? Si c'est une combo, tu cree ta combo, tu met Sorted à True : ca tri les valeurs de ta liste par ordre alphabetique tu met ReadOnly a False pour pouvoir ecrire dans ta combo et tu saisi ta list dans list ou tu l'a remplis avec une boucle quelquonque Mais je suis pas sur que ce soit ce que tu veuille faire ! Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Foromus | #4 Posté le 1/2/2011 à 21:58:00 | ||
C'est vrai que je suis un peu embarrassé... Une "case de saisie", c'est tout de qu'on voudra gambassement parlant, du moment que je trouve ce que j'ai indiqué dans ma question. Alors, et si j'ai mis "case de saisie", c'est que je ne sais pas si je dois utiliser une listbox - ce que je sais faire - ou une combobox, que je n'ai pas encore utilisée. Exemple concret : Je suppose que beaucoup de gens ont le Littré sur leur machine. Il y a une case "Rechercher", et en dessous, une liste classée par ordre alphabétique, et qui commence tout naturellement par la lettre "A", laquelle est aussi un mot (et même plusieurs..). Dès que je tape un "F" dans la case de saisie "Rechercher", immédiatement le premier mot commençant par "F" s'inscrit en haut de la liste, laquelle liste se déroule avec les éléments suivant ce "F". On retrouve ce genre de chose dans beaucoup d'applications. Ce système pourrait m'intéresser, mais je souhaiterais plutôt que tout se passe dans la même case, et sur une seule ligne. Comme je l'ai dit dans ma question, si je tape "A", j'aimerais voir apparaître "Abricot", car Abricot est le premier mot de ma liste, avec "bricot" en grisé. Ainsi, si je poursuis ma saisie avec "c", j'aimerai voir apparaître "Acide", car acide est le ennième mot de ma liste, et voir alors "ide" en grisé. Si je continue ma saisie en tapant un "u" supplémentaire, j'aimerais alors voir apparaître "Acuponcture", avec "poncture" en grisé, etc... Et donc, et en poursuivant, je finirai bien par trouver le mot qui convient, si toutefois il est dans la liste. Et dans ce cas, une frappe de Return devrait retenir le mot affiché, même s'il n'a pas été entièrement saisi. (On retrouve un peu ce genre de système dans l'aide à la saisie dans OOo). Et si le mot n'est pas dans la liste, j'aimerais que le nouveau mot soit enregistré comme tel, c'est-à-dire, que d'une part, il soit utilisé concrètement et immédiatement pour ce que j'en ai besoin dans mon projet, secondement, qu'il soit intégré dans la liste, la complétant pour une utilisation ultérieure. Au fond, c'est tout simple... En y réfléchissant un peu plus, je crois que cela devrait être possible en mettant deux contrôles superposés, celui du dessus affichant les entrées de l'opérateur, celui du dessous affichant les mots proposés dans la liste (liste qui existe forcément quelque part, sans pour autant être affichée en entier ou même en partie. Ma solution pourrait peut-être se trouver par là, je demande aux spécialistes ce qu'ils en pensent et si ils ont déjà pratiqué ce genre de superposition. (Entre parenthèses, j'aurai besoin prochainement d'un système de ce genre pour faire un texte défilant) Bien, j'espère avoir été plus clair, mais ce n'est pas toujours facile d'expliquer ce que l'on veut faire ! | |||
manu | #5 Posté le 1/2/2011 à 22:14:00 | ||
Avec Gambas ca roule ! | Il y a surement plein de façons de faire ce que tu souhaites.. La superposition de contrôles me parait difficile car la transparence n'est pas géré dans la v2 et je ne suis pas sure qu'elle le soit ds la v3... D'ou proviennent tes listes de mots, d'un fichier texte ?, d'une base de données ? Ce serais sans doute assez simple si c'est dans une base de données grace a une requette qui s'execute a chaque evement change de ton controle ( MonControle_Change) Dans cette evenement tu lance une requete sur le contenu de ton controle a ta base de données puis tu affiche le resultat avec un mon controle.texte=(monresultat) Un truc du genre quoi ... Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Foromus | #6 Posté le 1/2/2011 à 22:29:00 | ||
Je ne me suis jamais familiarisé avec les bases de données... Dommage, je perds probablement beaucoup de choses... Si je trouve un jour un bon tuto, peut-être que je m'y mettrai mais pour l'instant, ce n'est pas le cas. Et puis, je n'en ai probablement pas vraiment besoin, quoique ... une bonne gestion de ma cave, ça serait probablement plus judicieux que d'utiliser un tableur... Non pour l'heure, je stocke mes quelques bricoles dans un fichier texte, c'est très facile à manipuler, et dès lors que l'on ne dépasse pas une centaine d'entrées, ça ne pose pas de problème. Je sais que la technique de la superposition fonctionnait avec VB, c'est pour cela que ça m'est revenu à l'esprit. En fait, j'ai été formé à la VB, j'ai forcément tendance à ramener ce que j'apprends à ce que je connais. Mais il se trouve que "physiologiquement", notre mémoire fonctionne de cette façon, je n'ai donc rien inventé. | |||
spheris | #7 Posté le 2/2/2011 à 23:11:00 | ||
Foromus, toutes mes excuses, je viens de voir ton post maintenant. Ce que tu demandes, je l'ai déjà codé il y a un bon bout de temps déjà . Inspire toi du module RECHERCHER dans mon soft de pieces detachées ici : http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=708 En fait , je récupère l'évènement change d'une textbox pour réactualiser la base de données avec la valeur saisie par le code ci dessous :
voili voilou ! | |||
manu | #8 Posté le 3/2/2011 à 08:15:00 | ||
Avec Gambas ca roule ! | Oui c'est exactement ca, mais il te faut utiliser une base de données foromus, c'est beaucoup plus simple à utiliser que les fichiers texte. Comme Spheris, je n'avais pas vu ce message avant hier et je ne sais pas pourquoi car je les lis tous .... Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Foromus | #9 Posté le 3/2/2011 à 08:43:00 | ||
C'est clair, il va falloir que je me mette aux bases de données... Ben oui, il faut vivre avec son temps, quoi ! Pour m'y mettre, justemenet, il va d'abord falloir que je trouve un bon tuto, ensuite que j'expérimente. Pour moi, lire un texte, c'est bien, mais je pars du principe que si je n'ai pas une application concrète - même un exemple, à me mettre sous la souris, je n'apprendrai rien ou pas grand chose... Maintenant, je dirais aussi que l'usage des fichiers texte est extrêmement simple : deux lignes de code pour encadrer ce que l'on a à faire, alors, si les BDD sont encore plus simples, je risque de n'avoir plus rien à écrire... Bon, je rigole un peu là.... Merci pour le conseil, je vais aller voir le lien tout à l'heure... | |||
Foromus | #10 Posté le 25/2/2011 à 13:38:00 | ||
Bonjour, Je reprends mon idée après pause. J'ai visité les liens et suivi les conseils, je m'intéresse pour l'instant à la combobx, un contrôle que je n'ai pas encore utilisé. Voilà, avec add("***") j rentre 3 noms dans ma combo : parfait, je peux les retrouver en cliquant sur la flèche droite. J'ai entré Pierre, Paul, Jacques, c'est bien, mais maintenant, je voudrais rajouter Antoine... Je peux taper effectivement le mot "Antoine" dans ma combo, comment je récupère le tout, c-à-d, Pierre + Paul + Jacques + Antoine ? J'ai beau regarder dans ce qui est proposé - j'ai bien utilisé l'outil recherche, je ne vois pas comment faire. Le tuto qui propose de renseigner la box à partir d'une textBox ne m'attire pas particulièrement, je n'en vois du reste pas l'intérêt (pour moi, pour les autres, c'est autre chose !). NB : Naturellement, la propriété ReadOnly est bien à False. | |||
manu | #11 Posté le 25/2/2011 à 15:41:00 | ||
Avec Gambas ca roule ! | La possibilité d'ecrire dans un combo (ReadOnly = False), te permet juste de donner a la propriété Texte de ta combo la valeur que tu saisis. Autrement dis, si tu tapes "Antoine" dans ton combo cela reviens a ecrire combo1.text="Antoine" et non Combo1.add("Antoine"). Tu saisis la nuance. Pour faire ce que tu souhaites, je te conseil de créer à coté de ton combo un bouton "ajouter" (avec un dessin d'un plus par exemple)et dans l’évènement _click de ce bouton , de rentrer la ligne suivante :
Tu peux aussi mettre ce code dans un évènement de la combo si tu ne veux pas créer de bouton supplémentaire... après c'est plus une question d’ergonomie et de gout Ceci étant dit, en remplissant ta combo de la sorte, tu perdra toute tes items à l'extinction de la fenêtre qui contien le combo, pour rendre les informations persistantes, il faut les enregistrer sur disque dur dans un fichier (soit texte, soit base de données )... on y reviens toujours ... Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Foromus | #12 Posté le 25/2/2011 à 17:38:00 | ||
Merci Manu, avec ça, je pense que je peux faire ce que je souhaite. Je peux effectivement rentrer ce que je veux dans la combo, le récupérer avec la propriété text. J'ai découvert (non, pas l'eau chaude...) comment utiliser les propriétés cont, index, comme avec une listbox classique. Avec la méthode change, je peux saisir lettres par lettres, et je confirme ma saisie par Return. Je récupère ma nouvelle entrée à la sortie de l'utilisation, j'ai tout naturellement un bouton pour aller faire autre chose après la saisie. J'ai encore des choses à approfondir, mais je pense que je peux m'en tirer tout seul maintenant. Merci beaucoup pour l'aide ! | |||
1 |