Accueil > > > CTREECTRL AMÉLIORÉ
CTREECTRL AMÉLIORÉ
Information sur la source
Description
/* TreeMultiEx : - Gestion de la multiselection - Gestion de la couleur d'écriture de chaque item - Gestion de la couleur de fond et de celle du texte des items selectionnés (pour tous les items) - Gestion de la font des items (gras, italique, souligné, taille) pour chaques items - Gestion du deplacement des items dans la liste (Up/Down) avec mémorisation du déroullement de chaque node de l'arbre - Suppression de chaques item avec leur sous item et les data assosier a chacun d'eux - Gestion de la copy de branches vers un autre TreeMultiEx - Numerotation de la position de chaque item dans sa branche - Tri par position de chaque items quand il sont ajouter */
Source
- //-----------------------------------------------
- class CTreeMultiEx : public CTreeCtrl
- {
- // Construction
- public:
- CTreeMultiEx();
-
- //Efface la selection
- void ClearSelection();
-
- //Selection tous les items entre les 2 items en param
- BOOL SelectItems(HTREEITEM hItemFrom, HTREEITEM hItemTo);
-
- //Ajoute un item a la liste
- HTREEITEM AddItem(TreeItemEx hItemEx, HTREEITEM hFatherItem = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
- HTREEITEM AddItem(CString strText,HTREEITEM hFatherItem = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST
- ,COLORREF crCoul = RGB(0,0,0),int iPos = 0, void * pData = NULL);
-
- //Pour la multiselection
- //Même utilisation qu'avec un CListCtrl
- HTREEITEM GetFirstSelectedItem();
- HTREEITEM GetNextSelectedItem( HTREEITEM hItem );
- HTREEITEM GetPrevSelectedItem( HTREEITEM hItem );
-
- //Permet de choisir la couleur d'un item
- void SetItemCoul(HTREEITEM hItem, COLORREF crCoul = RGB(0,0,0));
-
- //Retourne la couleur de l'item en param
- COLORREF GetItemCoul(HTREEITEM hItem) const;
-
- //Permet de choisir la couleur du texte pour les items sélectionnés
- void SetSelTextCoul( COLORREF crCoul = RGB(255,255,255) /*Blanc*/);
-
- //Permet de choisir la couleur du fond pour les items sélectionnés
- void SetSelBkCoul( COLORREF crCoul = RGB(0,100,200) /*Bleu std*/);
-
- //Permet de choisir la couleur de fond
- ULONG SetBkColor(COLORREF crCoul);
-
- //Permet de choisir la fonte d'un item
- void SetItemFont(HTREEITEM hItem,bool bItalic = false, bool bBold = false
- ,bool bUnderline = false, int iHeight = -1);
-
- //Idem mais avec une struct LOGFONT
- void SetItemFont(HTREEITEM hItem, LOGFONT font);
-
- //Retourne la fonte de l'item en param
- LOGFONT GetItemFont(HTREEITEM hItem) const;
-
- //Supprime l'item em param et tous ces fils si il y en a
- //Supprime les ref a l'item est ces fils dans les maps
- //Supprime les item data de lui est ces fils si bKillData = true
- //KillOnlyChild detruit seulement les enfants de l'item
- BOOL DeleteItem(HTREEITEM hItem, bool bKillData = false, bool bKillOnlyChild = false);
-
- //Supprime tous les items selectionnés
- BOOL DeleteAllSelectedItems(bool bKillData = false);
-
- //Idem que la fct original sauf qu'elle retourne TVI_ROOT
- //si le père d'un item et la racine (au lieu de NULL)
- //Elle retourne une struct TreeItemEx avec tutes les infos sur l'item
- TreeItemEx GetParentItem(HTREEITEM hItem) const;
-
- //Retourne un vecteur contenant le TreeItemEx de tous les pere de
- //l'item en cour (le dernier est bien sur TVI_ROOT)
- std::vector<TreeItemEx> GetAllParentItem(HTREEITEM hItem) const;
-
- //Si bRespect = true, le deroulement des branche sera
- //respecter lors de l'utilisation de up/down si non
- //toute les branches seront fermés a chaque fois
- void RespectNodeExpand(bool bRespect = true);
-
- //Si bShow = true affiche la position de l'item en
- //plus de son texte ([Pos] Texte)
- void ShowPos(bool bShow = true);
- bool bIsVisiblePos() const { return m_bShowPos;}
-
- //Permet de faire monter (ou descendre un item ds la liste)
- //Si plusieurs items sont selectionnés seul le premier sera déplacer
- //Si hItem = Null alors deplace le 1er item est selectionné
- //Affiche un msgbox si hItem = NULL et pas de selection
- bool UpItem(HTREEITEM hItem = NULL);
- bool DownItem(HTREEITEM hItem = NULL);
-
- //Permet de savoir si un item est derouler ou pas
- bool bIsExpandedItem(HTREEITEM hItem) const;
-
- //Permet de choisir le tree associer
- void SetLinkedTree(CTreeMultiEx * pTree);
-
- //Ajout l'item est tous ces fils au tree defint par SetLinkedTree
- //hLinkedTreeFatherItem sert a définir quel sera le pere des items a ajouter
- //dans le tree Linker
- //ATTENTION : Pour que cette fct fonctionne correctement
- //il faut que les 2 tree soit linker entre eux (fct SetLinkedTree)
- bool AddToLinkedTree(const HTREEITEM hItem, HTREEITEM hLinkedTreeFatherItem = TVI_ROOT,
- bool bDeleteAfterCopy = false, bool bAddFatherItem = false);
-
- //Retourne un ptr sur la map contenant pour chaques items sa position dans sa node
- const CMap< HTREEITEM, HTREEITEM, int, int&> * GetAllItemsPos();
-
- //Retourne un ptr sur la map contenant pour chaque items les data assosiées
- const CList<TreeItemEx,TreeItemEx> * GetDataList();
-
- //Retourne toute la struct TreeItemEx
- TreeItemEx * GetItemExData(HTREEITEM hItem) const;
-
- //Retourne seulement les data de l'item (Comme la version originale)
- //C'est a dire le pData de la struct TreeItemEx
- DWORD GetItemData(HTREEITEM hItem) const;
-
- //Idem que la fct originale
- int SetItemData(HTREEITEM hItem, DWORD dwData);
-
- //Met le flag de trie des item a vrai
- //Les items sont trier un fois si bSort = true puis
- //ils seront retrié a chaque addItem tant que m_bSortByPos = true
- void SetSortByPos(bool bSort = true);
-
- //Trie les items en fct de leur position
- //Ne trie que les item dont le pere et hParent
- bool SortByPos(HTREEITEM hParent = TVI_ROOT);
-
- void SetLinkOfItem(HTREEITEM hThisTreeItem, HTREEITEM hLinkedTreeItem);
-
//-----------------------------------------------
class CTreeMultiEx : public CTreeCtrl
{
// Construction
public:
CTreeMultiEx();
//Efface la selection
void ClearSelection();
//Selection tous les items entre les 2 items en param
BOOL SelectItems(HTREEITEM hItemFrom, HTREEITEM hItemTo);
//Ajoute un item a la liste
HTREEITEM AddItem(TreeItemEx hItemEx, HTREEITEM hFatherItem = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
HTREEITEM AddItem(CString strText,HTREEITEM hFatherItem = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST
,COLORREF crCoul = RGB(0,0,0),int iPos = 0, void * pData = NULL);
//Pour la multiselection
//Même utilisation qu'avec un CListCtrl
HTREEITEM GetFirstSelectedItem();
HTREEITEM GetNextSelectedItem( HTREEITEM hItem );
HTREEITEM GetPrevSelectedItem( HTREEITEM hItem );
//Permet de choisir la couleur d'un item
void SetItemCoul(HTREEITEM hItem, COLORREF crCoul = RGB(0,0,0));
//Retourne la couleur de l'item en param
COLORREF GetItemCoul(HTREEITEM hItem) const;
//Permet de choisir la couleur du texte pour les items sélectionnés
void SetSelTextCoul( COLORREF crCoul = RGB(255,255,255) /*Blanc*/);
//Permet de choisir la couleur du fond pour les items sélectionnés
void SetSelBkCoul( COLORREF crCoul = RGB(0,100,200) /*Bleu std*/);
//Permet de choisir la couleur de fond
ULONG SetBkColor(COLORREF crCoul);
//Permet de choisir la fonte d'un item
void SetItemFont(HTREEITEM hItem,bool bItalic = false, bool bBold = false
,bool bUnderline = false, int iHeight = -1);
//Idem mais avec une struct LOGFONT
void SetItemFont(HTREEITEM hItem, LOGFONT font);
//Retourne la fonte de l'item en param
LOGFONT GetItemFont(HTREEITEM hItem) const;
//Supprime l'item em param et tous ces fils si il y en a
//Supprime les ref a l'item est ces fils dans les maps
//Supprime les item data de lui est ces fils si bKillData = true
//KillOnlyChild detruit seulement les enfants de l'item
BOOL DeleteItem(HTREEITEM hItem, bool bKillData = false, bool bKillOnlyChild = false);
//Supprime tous les items selectionnés
BOOL DeleteAllSelectedItems(bool bKillData = false);
//Idem que la fct original sauf qu'elle retourne TVI_ROOT
//si le père d'un item et la racine (au lieu de NULL)
//Elle retourne une struct TreeItemEx avec tutes les infos sur l'item
TreeItemEx GetParentItem(HTREEITEM hItem) const;
//Retourne un vecteur contenant le TreeItemEx de tous les pere de
//l'item en cour (le dernier est bien sur TVI_ROOT)
std::vector<TreeItemEx> GetAllParentItem(HTREEITEM hItem) const;
//Si bRespect = true, le deroulement des branche sera
//respecter lors de l'utilisation de up/down si non
//toute les branches seront fermés a chaque fois
void RespectNodeExpand(bool bRespect = true);
//Si bShow = true affiche la position de l'item en
//plus de son texte ([Pos] Texte)
void ShowPos(bool bShow = true);
bool bIsVisiblePos() const { return m_bShowPos;}
//Permet de faire monter (ou descendre un item ds la liste)
//Si plusieurs items sont selectionnés seul le premier sera déplacer
//Si hItem = Null alors deplace le 1er item est selectionné
//Affiche un msgbox si hItem = NULL et pas de selection
bool UpItem(HTREEITEM hItem = NULL);
bool DownItem(HTREEITEM hItem = NULL);
//Permet de savoir si un item est derouler ou pas
bool bIsExpandedItem(HTREEITEM hItem) const;
//Permet de choisir le tree associer
void SetLinkedTree(CTreeMultiEx * pTree);
//Ajout l'item est tous ces fils au tree defint par SetLinkedTree
//hLinkedTreeFatherItem sert a définir quel sera le pere des items a ajouter
//dans le tree Linker
//ATTENTION : Pour que cette fct fonctionne correctement
//il faut que les 2 tree soit linker entre eux (fct SetLinkedTree)
bool AddToLinkedTree(const HTREEITEM hItem, HTREEITEM hLinkedTreeFatherItem = TVI_ROOT,
bool bDeleteAfterCopy = false, bool bAddFatherItem = false);
//Retourne un ptr sur la map contenant pour chaques items sa position dans sa node
const CMap< HTREEITEM, HTREEITEM, int, int&> * GetAllItemsPos();
//Retourne un ptr sur la map contenant pour chaque items les data assosiées
const CList<TreeItemEx,TreeItemEx> * GetDataList();
//Retourne toute la struct TreeItemEx
TreeItemEx * GetItemExData(HTREEITEM hItem) const;
//Retourne seulement les data de l'item (Comme la version originale)
//C'est a dire le pData de la struct TreeItemEx
DWORD GetItemData(HTREEITEM hItem) const;
//Idem que la fct originale
int SetItemData(HTREEITEM hItem, DWORD dwData);
//Met le flag de trie des item a vrai
//Les items sont trier un fois si bSort = true puis
//ils seront retrié a chaque addItem tant que m_bSortByPos = true
void SetSortByPos(bool bSort = true);
//Trie les items en fct de leur position
//Ne trie que les item dont le pere et hParent
bool SortByPos(HTREEITEM hParent = TVI_ROOT);
void SetLinkOfItem(HTREEITEM hThisTreeItem, HTREEITEM hLinkedTreeItem);
Conclusion
Voila ya une petite appli dans le zip pour expliquer
bugs connus :
-Dans le up/Dwn les pères des items sont parfois perdu -Quelques bugs dans la fct AddToLinkedTree (certain items refuse de s'ajouter ou de ce supprimer)
Historique
- 30 août 2007 11:45:31 :
- - Correction de plusieurs bugs
- Ajout des fct Add items
- Amelioration de la gestion de la copy de node entre tree
- Ajout d'une fonction de tri par position
L'ensemble et plus stable mais il reste encore quelques bug notament sur la copy de node entre tree et peut etre aussi sur la gestion des items data (je corrigeré au fur et a mesure)
- 12 septembre 2007 17:34:30 :
- -Correction du GetAllItemPos (Qui ne renvoyer par les bonne pos)
-Correction du GetDataList (Qui ne renvoyer pas une liste complete)
-Correction de la ftc de tri par position
(Elle ne trié que les items dont le pere etait TVI_ROOT)
-Modif de SetSortByPos (prend un item en param maintenant)
- 13 septembre 2007 17:51:02 :
- -Correction du GetAllItemPos (Qui ne renvoyer par les bonnes pos)
-Correction du GetDataList (Qui ne renvoyer pas une liste complete)
-Correction de la ftc de tri par position
(Elle ne trié que les items dont le père etait TVI_ROOT)
-Modif de SetSortByPos (prend un item en param maintenant)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
[MFC] Utilisation de la classe CTreeCtrl, couleur des lignes [ par karine3884 ]
Bonjour, Je programme sous Visual Studio C++ 6.0. J'utilise un CtreeCtrl pour créer un arbre (une arborescence). J'aimerai modifier la couleur des li
Texte personnalisé [ par Ilmen_ ]
Voila, j'ai un problème avec le code ci dessous, qui permet d'afficher un texte personnalisé (taille, couleur, etc.). On me signale une erreur sur la
Chercher un pixel de couleur précise. [ par krokro6 ]
Salut à tous, j'aurai besoin d'aide pour chercher dans l'écran un pixel d'une couleur spécifiée et ensuite pointer la souris dessus mais je ne sais vr
Personnaliser le texte d'un contrôle "EDIT" [ par Ilmen_ ]
Voila, dans un topic précédent, j'avais voulu savoir comment savoir comment attribuer une fonte personnalisée à un contrôle de type "EDIT" ; n'ayant p
Onglets personalisés avec TabControl [ par Scuz ]
Bonjour, Je suis débutant, et j'ai un peu de mal avec les onglets : j'ai récupéré le projet de farscape sur les TabControl, qui est très pratique, mai
Simulation LED tricolore (RGB) [ par Nei_Mad ]
Bonjour.Je suis actuellement en train de développer un logiciel et j'ai besoin qu'il puisse simuler l'allumage d'une LED tricolor (en fait 3 LEDs : un
Personailer les boites de dialogue [ par zanrek ]
Bonjour, je souhaiterais créer une boite de dialogue, mais lors de l'initialisation de celle-ci, je voudrais être capable de modifier la couleur et la
couleurs et animation [ par jeanphilippe37 ]
Slt, je voudrais savoir comment on fait pour mettre de la couleur ds un programme en Ms DOS ainsi que de faire des animations. Par exemple faire
Recuperer la couleur d'un pixel dans une image raw [ par seb2086 ]
Bonjour,J'ai une image raw dans laquelle est dessiné un cube rouge, un cube vert et un cube bleu.L'image est enregistrée avec 3 couches et sans entrel
gerer le changement des checks d'une CTreeCtrl [ par sewahass ]
salutcomment je peux faire pour attacher un handler au CTreeCtrl, de telle façon que si je change l'etat d'une check (d'un Item donné) j'execute alo
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|