IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Liste déroulante dynamique


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut Liste déroulante dynamique
    Bonjour,

    Voici un problème très simple et pourtant à laquel je n'ai que des idées de résolution complexes. Je voudrai proposer 2 listes déroulantes (TComboBox ?) qui propose le même contenu moins les éléments déjà sélectionnés.

    En gros à chaque clique pour dérouler la liste, je réinitialise la liste, tout en laissant affiché dans la sélection l'ancienne valeure sélectionné, jusqu'à ce que je clique sur une nouvelle valeur, libérant ainsi la précédente valeur.

    Heu... Je suis clair ?

    Si vous avez des conseils, merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Par défaut Autre solution peut être
    Est ce qu'il ne serai pas plus judicieux pour toi si le contenu de la combobox n'est pas trop gros de faire un système avec 2 mémo ?
    Tu choisis une valeur dans le premier mémo, puis à l'aide d'un petit bouton sur lequel sera dessiné une flêche vers la droite, tu fais passer la valeur dans le deuxième memo en cliquant sur la flêche, ....
    Si tu vois le genre ...

  3. #3
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Travaille sur le OnChange de tes combo box, c'est ce qui est le plus simple
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    Le mémo n'est pas forcément une bonne idée, puisque je voudrai que ça fonctionne avec plusieurs Combobox sur la même fiche et avec la même liste de valeur cliquable, mais chaque combobox ne pourrait avoit qu'une valeur.

    Je ne vois aps à quoi me servirait le OnChange dans cette histoire.

    En fait j'ai commencé à tenter de créer un tableau de record. Le record étant de type "1 valeur de la liste" plus un boolean disant si la valeur a déjà été choisi. Mais je me bats avec les méthodes du TComboBox pour construire dynamiquement la liste, sachant que des qu'on déroule la liste, il vide le champs de la comboBox indiquant la valeur précédement cliqué.

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    peut tu expliqué plus??

  6. #6
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Voici le code du gestionnaire OnChange pour toutes tes combos. La variable Items est de type TStrings et contient toutes les valeurs possibles. La variable ComboBoxes est un tableau de TComboBox contenant toutes tes combo :
    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
    30
    procedure TForm1.ComboChange(Sender: TObject);
    var Items2, Selecteds : TStrings;
        I : integer;
        Str : string;
    begin
      Items2 := TStringList.Create;
      with Items2 do
      try
        Selecteds := TStringList.Create;
        try
          Assign(Items);
          for I := 0 to Length(ComboBoxes)-1 do
          begin
            Str := ComboBoxes[i].Items[ComboBoxes[i].ItemIndex];
            Selecteds.Add(Str);
            Delete(IndexOf(Str));
          end;
          for I := 0 to Length(ComboBoxes)-1 do with ComboBoxes[i] do
          begin
            Items.Assign(Items2);
            Items.Insert(0, Selecteds[i]);
            ItemIndex := 0;
          end;
        finally
          Selecteds.Free;
        end;
      finally
        Free;
      end;
    end;
    Ce n'est pas testé
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  7. #7
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    Je vais essayé ta méthode sjrd, et je vais tenter d'atteindre le comportement de ma TComboBox que j'aimerai avoir.


    Merci pour les conseils.

  8. #8
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    Bonjour,

    Je reviens sur le même sujet car je n'arrive pas à obtenir le bon comportement de la part de la ComboBox, d'ailleurs je ne sais pas si c'est possible avec ce composant. Quand je clique sur un élément de la liste, je veux qu'il disparaisse de cete liste, et qu'il soit uniquement visible dans la zone du comboBox qui est toujours visible (lorsque la liste n'est pas déroulé). J'ai l'impression que c'est impossible avec ce composant. Suis je dans l'erreur ?

  9. #9
    DMO
    DMO est déconnecté
    Membre chevronné
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Par défaut
    Salut,
    Citation Envoyé par declencher
    Quand je clique sur un élément de la liste, je veux qu'il disparaisse de cete liste
    Le problème est que tu essayes d'obtenir un comportement pour lequel le TComboBox n'a pas été conçu. Immagine qu'au lieu de dérouler la liste à la souris, on pourrait le faire au cliavier par exemple, voire même pire : sans dérouler la liste, on peut vouloir sélectionner (flèches haut et bas) une valeur à la fin, et donc juste vouloir "passer" les premieres pour arriver à celle désirée. Comment alors savoir si l'utilisateur veut juste passer ou s'il veut vraiment sélectionner ?

    C'est pourquoi je te suggère la simplicité : laisse le comportement normal du combo, et mets juste une petite action à côté, dans un bouton à droite par exemple comme cela se voit souvent, ou comme tu veux bien evidemment, pour pouvoir dire : "clic : hop voilà c'est cette valeur que je veux transférer".

    Tu peux aussi envisager l'utilisation de deux TListBox, et alors là l'action pourrait se trouver, outre un bouton, ou pas de bouton du tout, sur le double-clic d'un item : car tu as bien besoin de deux actions : la sélection de valeur, et sa validation. C'est cela que j'ai voulu te faire distinguer clairement en te donnant mon humble avis.

    À toi de voir.

    Bon dev'

  10. #10
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    En absence de solution, je me reporte sur le comportement classique du composant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 18h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 21h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 21h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 13h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo