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

Composants VCL Delphi Discussion :

Manipulation de 2 ListBox


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Manipulation de 2 ListBox
    Bonjour,

    J'ai deux listbox et deux bouton. Dans le premier ListBox il y'a des valeurs. Je veux faire de tel sorte qu'en sélectionnant une valeur dans la Listbox1 on puisse déplacer cette valeur dans la la ListBox2 et vice versa.
    Je veux utiliser ces deux ListBox pour attribution des rôle dans Oracle.
    Merci pour votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour, rien de très compliqué à cela. Déjà tu auras surement besoin de mettre le MultiSelect à True sur ListBox1 pour gérer la multi-sélection. Ensuite il faut jouer avec la propriété Selected du ListBox1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Cpt := 0 to ListBox1.Count - 1 do
      if ListBox1.Selected[Cpt] then
        ListBox2.AddItem( ListBox1.Items[Cpt], NIL );
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 348
    Points : 3 127
    Points
    3 127
    Par défaut
    Bonjour,

    je pense que ce que tu veux faire est dans une des demo de D7 :

    Répertoire Actions projet action.dpr

    l'échange de données entre 2 listbox par des boutons est dans l'onglet List

    A+

    Charly

  4. #4
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Merci Aka Guymelef pout ton aide.
    Le nil ne marche pas donc je l'ai supprimé et ça marche bien.
    Pour Charly910 j'ai Delphi 5.
    Je voulais dans le même temps supprimer l'élément que j'ai envoyé dans ListBox2.
    J'ai fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i := 0 to ListBox1.Items.Count - 1 do
          begin
            if ListBox1.Selected[i] then
               ListBox2.Items.Add(ListBox1.Items[i]);
               ListBox1.Items.Delete(i);
          end;
    Si j'exécute j'ai une exception : indice hors limite.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Dans ce cas tu ne dois pas utiliser une boucle for.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    i := 0;
    while (i < ListBox1.Items.Count) do
    begin
       if ListBox1.Selected[i] then
       begin
          ListBox2.Items.Add(ListBox1.Items[i]);
          ListBox1.Items.Delete(i);
       end;
       Inc( i );
    end;
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  6. #6
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Merci beaucoup . Ça marche.

  7. #7
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Il me vient une idée : Est-ce possible de faire de tel sorte que si un élément d'un listbox est sélectionné et déplacé, l'item suivant dans la même ListBox soit soit automatique automatiquement sélectionné. Cela pour éviter à chaque fois de cliquer sur item avant de le déplacer.
    Merci à vous.

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    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
    i := 0;
    DernierIndexSelectionne := 0;
    while (i < ListBox1.Items.Count) do
    begin
       if ListBox1.Selected[i] then
       begin
          ListBox2.Items.Add(ListBox1.Items[i]);
          ListBox1.Items.Delete(i);
          DernierIndexSelectionne := i;
       end;
       Inc( i );
    end;
     
    if (  ListBox1.Count <> 0 )
      if ( DernierIndexSelectionne < ListBox1.Count )
        ListBox1.Selected[DernierIndexSelectionne] := True
      else
        ListBox1.Selected[ListBox1.Count-1] := True;
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  9. #9
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Voilà ce que j'ai fais :
    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
    begin
          i := 0;
          DernierIndexSelectionne := 0;
          while (i < ListBox1.Items.Count) do
                begin
                   if ListBox1.Selected[i] then
                      begin
                        ListBox2.Items.Add(ListBox1.Items[i]);
                        ListBox1.Items.Delete(i);
                        DernierIndexSelectionne := i;
                       end;
                       Inc(i);
                end;
                if (ListBox1.Items.Count <> 0) then
                   if (DernierIndexSelectionne < ListBox1.Items.Count) then
                      ListBox1.Selected[DernierIndexSelectionne] := True
                   else
                     ListBox1.Selected[ListBox1.Items.Count-1] := True;
        end;
    il y'a indice hors limites.

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

Discussions similaires

  1. [MVVM] Manipulations sur une ListBox
    Par DotNET74 dans le forum Windows Phone
    Réponses: 3
    Dernier message: 20/05/2013, 08h55
  2. manipulation d'objet Items entre deux listbox
    Par Torgar dans le forum Windows Forms
    Réponses: 4
    Dernier message: 01/05/2008, 20h14
  3. Manipulation de ListBoxes en Javascript
    Par jarboo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/03/2008, 10h15
  4. manipuler ListBox (ascenceur)
    Par LostIN dans le forum Access
    Réponses: 4
    Dernier message: 18/08/2006, 14h44
  5. [ACCESS 2k]Manipulation d'un ListBox
    Par rstephane dans le forum Access
    Réponses: 2
    Dernier message: 07/06/2006, 18h44

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