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 DragDrop dans un 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 DragDrop dans un treeview
    Bonjour

    j ai un treeview
    AAAAAAAAA
    aaa11
    aaa22
    BBBBBBBBB
    bbb11
    bbb22

    avec mon code ci joint ca marche mais le voudrais par exemple poser bbb11 a n importe quel endroit de AAAAA mais qui soit affecté a AAAAA, car si je le pose sur aaa11, il deviens sous noeud de aaa11, or je voudrais qu il soit toujours attaché au noeud maitre

    Et aussi je voudrais qu il soit impossible de le poser sur le noeud auquel on viens de le prendre

    merci

    voici mon code

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    procedure TFActesListe.tvActeDragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    var
      SourceNode: TTreeNode;
    begin
      SourceNode := tvActe.Selected;
      Accept := ((tvActe.Selected <> tvActe.GetNodeAt(X, Y)) and (SourceNode.Level = 1));
    end;
     
    procedure TFActesListe.tvActeDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    var
      AnItem: TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
     
      if tvActe.Selected = nil then Exit;
     
      HT := tvActe.GetHitTestInfoAt(X, Y);
      AnItem := tvActe.GetNodeAt(X, Y);
     
      if AnItem.Level = 0 then
     
        if MyMessageDlg('Confirmez-vous le déplacement de cet acte ?' + #13#10 + #13#10 +
          'dans ' + AnItem.Text, mtWarning, [mbYes, mbNo], 0) = mrYes then
          begin
            begin
              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;
     
                  tvActe.Selected.MoveTo(AnItem, AttachMode);
     
                end;
            end;
          end;
    end;

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    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 093
    Par défaut
    il faut tester le Parent du Node.

    Acte ? CCAM ? CIM ?
    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

  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
    pour la pose n'importe ou, j ai fait ca, ca a l air de marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                  if (AnItem.Level = 0) then
                    tvActe.Selected.MoveTo(AnItem, AttachMode)
                  else
                    tvActe.Selected.MoveTo(AnItem.Parent, AttachMode);
    mais pour empecher de le poser de la ou il viens, je ne vois aps comment faire

    merci

Discussions similaires

  1. Supprimer des éléments dans une TreeView ?
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/09/2005, 12h20
  2. [VBA] Réagir aux clics dans mon TreeView
    Par Neilos dans le forum IHM
    Réponses: 2
    Dernier message: 16/06/2005, 09h03
  3. Ordonnée des données dans un TreeView
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/04/2005, 18h08
  4. Pbs pour Glisser-Deplacer des noeuds dans un TreeView.
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/09/2004, 21h02
  5. Des colonnes dans un Treeview
    Par mr_langelot dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/07/2004, 09h52

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