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 :

PB de Drag/Drop dans Treeview


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut PB de Drag/Drop dans Treeview
    Bonjour

    j ai un treeview
    dedans il y a ca

    Titre 1
    AAAA
    BBBB
    Titre 2
    ABBB
    BBBAA
    CCCAA

    Ou et comment coder pour faire du Drag And Drop pour emmener par Ex CCCAA dans Titre 1 ou vice versa

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 628
    Billets dans le blog
    65
    Par défaut
    dans les évènements DragDrop et DragOver du treeview


    voici un code que j'ai fait voilà des années, il doit y avoir des chose à enlever
    dans la 1° procedure mais ça te donne un modèle

    PS. me rappelle plus à quoi sert le THitTests ni d'où il vient
    si tu ne t'en sors pas fais moi signe

    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 TAllNomen.TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      AnItem : TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
      if TreeView.Selected = nil then Exit;
      HT := TreeView.GetHitTestInfoAt(X, Y);
      AnItem := TreeView.GetNodeAt(X, Y);
      if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
      begin
        AttachMode:=naAdd; {défaut Ajout}
        if (htOnItem in HT) or (htOnIcon in HT) then AttachMode := naAddChild
           else if htNowhere in HT then AttachMode := naAdd
             else if htOnIndent in HT then AttachMode := naInsert;
        case AttachMode of
          naAddChild : if TBaseNivMatiere.Value<=Niveau then
                          MessageDlg('Incohérence possible',mtWarning,[mbOk],0);
          else         if TBaseNivMatiere.Value<Niveau then
                          MessageDlg('Incohérence possible',mtWarning,[mbOk],0);
        end;
        TreeView.Selected.MoveTo(AnItem, AttachMode);
      end;
    end;
     
    procedure TAllNomen.TreeViewDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
    Accept:=(TreeView.Selected<>TreeView.GetNodeAt(X,Y));
    end;

  3. #3
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    Merci

    ca marche pour le déplacement mais 2 questions encore

    je ne veux pouvoir poser que sur Titre 1 ou Titre 2 et pas ailleurs comment regler ca ?

    A quel endroit je dois coder pour mettre a jour ma base ?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Personnellement, j'ai fait globalement la même chose comme ceci

    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
    31
    32
    procedure TfuiCensored.TreeViewCensoredCensoredDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    var
       SourceNode : TTreeNode;
    begin
       SourceNode := TreeViewCensoredCensored.Selected;
       Accept := (Source = Sender) and (Assigned(SourceNode) and (SourceNode.Level = 1));
    end;
     
    procedure TfuiCensored.TreeViewCensoredCensoredDragDrop(Sender, Source: TObject; X,
       Y: Integer);
    var
       SourceNode, TargetNode: TTreeNode;
       SourceCensored: TObjectCensored;
       NodeText: string;
       NodeData: Pointer;
    begin
       TargetNode := TreeViewCensoredCensored.GetNodeAt(X, Y);
       SourceNode := TreeViewCensoredCensored.Selected;
     
       if Assigned(TargetNode) and Assigned(SourceNode) and (TargetNode.Level = 0) and (SourceNode.Level = 1) then
       begin
          if messagedlg('voulez vous modifier l''appartenance de cet Censored ?', mtconfirmation, [mbyes, mbno], -1) = mryes then
          begin
             ...
     
                 NodeText := SourceNode.Text;
                 NodeData := SourceNode.Data;
                 TreeViewCensoredCensored.Items.Delete(SourceNode);
                 TreeViewCensoredCensored.Items.AddChildObject(TargetNode, NodeText, NodeData).Selected := True;
     
       end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    Merci

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

Discussions similaires

  1. Destination du drag and drop dans treeview
    Par chrisdot dans le forum Silverlight
    Réponses: 1
    Dernier message: 13/01/2011, 17h11
  2. Réponses: 2
    Dernier message: 08/07/2009, 15h17
  3. Drag&Drop dans treeview
    Par Elwe31 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/02/2008, 19h34
  4. [SWT] Plusieurs Drag & Drop dans une interface
    Par lessecs dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 06/06/2006, 14h03
  5. Réponses: 4
    Dernier message: 25/01/2005, 22h14

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