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

MFC Discussion :

CTreeCtrl : déplacer un item [FAQ]


Sujet :

MFC

Vue hybride

shenron666 CTreeCtrl : déplacer un item 08/01/2007, 10h39
bigboomshakala hello :P pour le drag n... 08/01/2007, 13h19
shenron666 héhé merci ;) c'est l'un des... 08/01/2007, 15h58
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 573
    Par défaut CTreeCtrl : déplacer un item
    Bonjour,

    je me demande s'il n'y a pas une méthode plus simple que de faire ceci pour déplacer un item :
    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
    // copie un item et ses fils juste après l'item demandé
    HTREEITEM CMyTreeCtrl::CopyItem(HTREEITEM hItem, HTREEITEM hItemParent, HTREEITEM hItemAfter /*= TVI_LAST*/)
    {
    	// récupération du libellé
    	CString sLabel = GetItemText(hItem);
     
    	// récupération de l'item
    	TVINSERTSTRUCT insertItem = {0};
    	insertItem.hParent = hItemParent;
    	insertItem.hInsertAfter = hItemAfter;
    	insertItem.item.hItem = hItem;
    	insertItem.item.mask = TVIF_HANDLE | TVIF_CHILDREN | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_STATE | TVIF_TEXT;
    	GetItem(&insertItem.item);
    	// paramétrage du libellé
    	insertItem.item.cchTextMax = sLabel.GetLength();
    	insertItem.item.pszText = sLabel.GetBuffer();
     
    	// ajout de la copie de l'item
    	HTREEITEM hItemNouveau = InsertItem(&insertItem);
    	SetItemData(hItemNouveau, GetItemData(hItem));
     
    	// on copie les paramètres de l'item
    	CJFC_ItemBase* pParams = GetItemParams(hItemNouveau);
    	*pParams = *GetItemParams(hItem);
     
    	// si l'item a des enfants
    	if(ItemHasChildren(hItem))
    	{
    		// on les copie également
    		hItem = GetChildItem(hItem);
    		while(hItem)
    		{
    			CopyItem(hItem, hItemNouveau);
    			hItem = GetNextSiblingItem(hItem);
    		};
    	}
     
    	// on retourne l'item nouvellement créé
    	return hItemNouveau;
    }
    sachant qu'il me reste ensuite à supprimer l'item source

    je me pose la question aussi par rapport au fait que le "drag and drop" permet de déplacer (ou copier ?) un item, mais je ne sais pas comment c'est géré

    si vous avez des suggestions, je suis preneur
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    hello

    pour le drag n drop tu peux lire ceci pour comprendre le principe.

  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 573
    Par défaut
    héhé merci c'est l'un des liens sur lesquels je suis tombé ce matin pour gérer le drag'n drop qui semble fonctionner
    mais il ne donne pas tout le code, et justement il utilise CopyBranch qui est visiblement une méthode qu'il a créé lui-même
    donc à mon avis, il n'y a rien dans les CTreeCtrl pour copier un item

    il faut aussi savoir que la fonction CreateDragImage renvoie toujours NULL pour un CTreeCtrl qui n'utilise pas d'images
    une autre source de code guru pour régler le problème et c'est bon de ce coté (Creating Drag Image for a CTreeCtrl without images)

    je met résolu mais si quelqu'un a un code source sympa à me proposer pour copier une branche je suis toujours preneur
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2013, 18h46
  2. Réponses: 5
    Dernier message: 05/02/2010, 19h04
  3. [QGraphicsScene] Déplacer un item
    Par black is beautiful dans le forum Qt
    Réponses: 1
    Dernier message: 22/02/2009, 22h10
  4. Déplacer un item dans la liste d'1 combobox
    Par BECHE dans le forum Delphi
    Réponses: 7
    Dernier message: 13/10/2006, 20h56
  5. ListIndex (Déplacer un item)
    Par borislotte dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/04/2006, 08h16

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