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 FMX Delphi Discussion :

Drag and drop entre TListBox


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut Drag and drop entre TListBox
    Bonjour à tous,

    je souhaite faire du drag & drop entre deux listes, mais je suis un peu perdu, jamais fait ce genre de choses. J'ai bien trouvé des bouts de code, mais c'est pas pour FMX et je suis perdu.
    Grosso modo, j'ai deux listes (disons ListBox1 et 2) qui contiennent des éléments String et je voudrais déplacer des éléments d'une liste à une autre (suppression de l'ancienne liste et insertion dans la nouvelle.
    Avec si possible le curseur qui change pendant l'opération un truc classe quoi...

    Pour le curseur c'est pas obligé...

    Merci beaucoup.

  2. #2
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Bon j'ai réussi à chercher et à trouver quelques pistes. Du coup ça donne ça :

    D'abord, il faut mettre les propriétés "DragMode" des listbox à "dmAutomatic".

    Ensuite, il faut redéfinir certaines méthode des contrôles d'arrivée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TFFenetrePerso.ListeVariablesCombatDragOver(Sender: TObject;
      const Data: TDragObject; const Point: TPointF; var Accept: Boolean);
    begin
      Accept := True;
    end;
    De ce que j'ai pu comprendre, ça force un contrôle à accepter que un drag drop soit fait sur lui.


    Ensuite redéfinir la méthode Drag Drop :
    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
    procedure TFFenetrePerso.ListeVariablesCombatDragDrop(Sender: TObject;
      const Data: TDragObject; const Point: TPointF);
    Var numero : integer;
    begin
      // ajouter l'element dans la nouvelle liste
      ListeVariablesCombat.Items.Add((Data.Source as TListBox).Selected.Text);
      // le supprimer de l'ancienne
      (Data.Source as TListBox).Items.Delete((Data.Source as TListBox).ItemIndex);
      // declencher le recomptage des elements de la nouvelle liste
      ListeVariablesCombatChange(self);
      // declencher le recomptage des elements de l'ancienne liste en repositionnant le itemindex
      numero := (Data.Source as TListBox).ItemIndex;
      (Data.Source as TListBox).ItemIndex := -1;
      if numero >= (Data.Source as TListBox).Items.Count then dec(numero);
      (Data.Source as TListBox).ItemIndex := numero ;
    end;
    LE code est documenté. Data est un objet TDragObject qui contient entre autre une prop Source qui correspond au contrôle de départ.
    D'où le transtpage (Data.source as TListBox) pour pouvoir accéder aux props de l'émetteur.

    Mon bricolage avec Numero et ItemIndex me permet de déclencher un recomptage des éléments de la liste de départ, car pour l'instant, je n'ai pas trouvé l'évènement correspondant au changement de la liste des items de la listBox.

    Voila ça semble assez simple en fait...

    Par contre j'ai repéré un truc bizarre : une liste n'accepte un Drop que si on a déjà sélectionné au moins une fois un de ses éléments. Soit c'est un bug de FMX, soit j'ai raté une marche...

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

Discussions similaires

  1. [VBA-E]drag and drop entre deux listbox
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/06/2012, 14h37
  2. Drag and Drop entre 2 JTree
    Par Lebas dans le forum Composants
    Réponses: 1
    Dernier message: 07/02/2007, 11h59
  3. [Débutant(e)][VB.NET] Drag and drop entre 2 treeviews
    Par - Manuella Leray - dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/10/2005, 15h54
  4. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10
  5. Drag and Drop entre listbox
    Par zwoke dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/07/2004, 14h10

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