Tree avec gestion complète

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Tree avec gestion complète

Message par Shadow »

Salut,

Voilà qui pourra surement servir à d'autre !

- Gestion complète du Tree -> Monter / Descendre un élément.
- Déplacer un élément au niveau Supérieur ou Inférieur.
- Gestion du Drag en Drop.
- Tree Avec gros Icônes.

J'ai presque rien fais moi si ce n'est assembler le code.
Tous le mérite ne m'en reviens donc pas.

Code : Tout sélectionner


; Tree avec Gestion complète.
; Code créé par Monsieur Dieppedalle David le 13/06/2016.

; Correction par Michel Lye (Micoute)

; Code pour éditer les lien du tree créé par ?.
; Code pour la gestion du drag en drop ainsi que le déplacement des lien du tree créer par "Le Soldat Inconnu" du forum FR de Pure Basic.
; Merci à Falsam du forum PB, pour son aide pour la gestion des icônes grand format pour le Tree.

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

; Active le support du format PNG (Portable Network Graphic) pour les commandes CatchImage(), LoadImage(), CatchSprite() et LoadSprite(). 
UsePNGImageDecoder()

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ Constante

#Version = 1
#SousVersion = 1
#Build = 1

#Tree_DragDrop_Deplacer = 0

;}

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ Enumeration

Enumeration Programme_Maker
  
  ; Windows
  #Window_Main
  
  ; Gadgets
  #Gadget_Tree
  #Gadget_BoutonArbreMonter
  #Gadget_BoutonArbreDescendre
  #Gadget_BoutonArbreNiveauPlus
  #Gadget_BoutonArbreNiveauMoins
  
EndEnumeration

;}

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ CatchImage

; Bouton Commande Tree
Global Descendre.i = CatchImage(#PB_Any, ?Descendre)
Global Monter.i = CatchImage(#PB_Any, ?Monter)
Global NiveauPlus.i = CatchImage(#PB_Any, ?NiveauPlus)
Global NiveauMoins.i = CatchImage(#PB_Any, ?NiveauMoins)

; Tree
Global Bank.i = CatchImage(#PB_Any, ?Bank)
Global Cinema.i = CatchImage(#PB_Any, ?Cinema)
Global City.i = CatchImage(#PB_Any, ?City)
Global CommercialBuilding.i = CatchImage(#PB_Any, ?CommercialBuilding)
Global Hospital.i = CatchImage(#PB_Any, ?Hospital)
Global RetailShop.i = CatchImage(#PB_Any, ?RetailShop)
Global School.i = CatchImage(#PB_Any, ?School)

;}

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ DataSection
DataSection
  
  ; Bouton Commande Tree
  Descendre:
  IncludeBinary "Icones\Descendre.png"
  
  Monter:
  IncludeBinary "Icones\Monter.png"
  
  NiveauPlus:
  IncludeBinary "Icones\Niveau Plus.png"
  
  NiveauMoins:
  IncludeBinary "Icones\Niveau Moins.png"
  
  ; Tree
  Bank:
  IncludeBinary "Icones\Bank.ico"
  
  Cinema:
  IncludeBinary "Icones\Cinema.ico"
  
  City:
  IncludeBinary "Icones\City.ico"
  
  CommercialBuilding:
  IncludeBinary "Icones\Commercial Building.ico"
  
  Hospital:
  IncludeBinary "Icones\Hospital.ico"
  
  RetailShop:
  IncludeBinary "Icones\Retail Shop.ico"
  
  School:
  IncludeBinary "Icones\School.ico"
  
EndDataSection
;}

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ Gestion de Tree

; Taille des icones
IconSize = 32

; Création de la liste d'image
Global ImageList = ImageList_Create_(IconSize, IconSize, #ILC_COLOR32 | #ILC_MASK, 0, 10)

;Ajoute des icones dans la liste d'icone
ImageList_AddIcon_(ImageList, ImageID(City)) ; Ne serra pas visible.
ImageList_AddIcon_(ImageList, ImageID(City))
ImageList_AddIcon_(ImageList, ImageID(Bank))
ImageList_AddIcon_(ImageList, ImageID(Cinema))
ImageList_AddIcon_(ImageList, ImageID(CommercialBuilding))
ImageList_AddIcon_(ImageList, ImageID(Hospital))
ImageList_AddIcon_(ImageList, ImageID(RetailShop))
ImageList_AddIcon_(ImageList, ImageID(School))

Structure ArbreInfo
  Nom.s
  Niveau.l
  Pliage.l
EndStructure

Global NewList Arbre.ArbreInfo()
Global DragDrop_Start, DragDrop_Start_X

Procedure Arbre_Edit(Val)
  hd_gadget = SendMessage_(GadgetID(#Gadget_Tree), #TVM_GETEDITCONTROL, 0, 0)
  ligne.s
  ligne = Space(256)
  Repeat
    Delay(1)
    resu = GetWindowText_(hd_gadget, @ligne, 256)
    hd_gadget = SendMessage_(GadgetID(#Gadget_Tree), #TVM_GETEDITCONTROL, 0, 0)
    
    If ligne <> ""
      NouveauxNom$ = ligne
    EndIf
    
  Until hd_gadget = 0
  SetGadgetText(#Gadget_Tree, NouveauxNom$)
EndProcedure

Procedure Arbre_Pliage()
  ForEach Arbre()
    If GetGadgetItemState(#Gadget_Tree, ListIndex(Arbre())) & #PB_Tree_Expanded
      Arbre()\Pliage = 1
    Else
      Arbre()\Pliage = 0
    EndIf
  Next
EndProcedure

Procedure Arbre_Niveau_Correction()
  Niveau = 0
  ForEach Arbre()
    If Arbre()\Niveau > Niveau + 1
      Arbre()\Niveau = Niveau + 1
    EndIf
    If Arbre()\Niveau < 0
      Arbre()\Niveau = 0
    EndIf
    Niveau = Arbre()\Niveau
  Next
EndProcedure

Procedure Arbre_Remplir(Position = -1)
  LockWindowUpdate_(WindowID(0))
  ClearGadgetItems(#Gadget_Tree)
  ForEach Arbre()
    AddGadgetItem(#Gadget_Tree, -1, Arbre()\Nom, 0, Arbre()\Niveau)
    If Pliage
      SetGadgetItemState(#Gadget_Tree, ListIndex(Arbre()) - 1, #PB_Tree_Expanded)
    EndIf
    Pliage = Arbre()\Pliage
  Next
  If Position >= 0
    SetGadgetState(#Gadget_Tree, Position)
  EndIf
  LockWindowUpdate_(0)
EndProcedure

Procedure Arbre_Deplacer(Position, Mouvement)
  Protected PositionFinale, *Deplacer1.ArbreInfo, *Deplacer2.ArbreInfo
  Arbre_Pliage()
  
  If Position >= 0
    
    ; Vérification
    If Position + Mouvement < 0
      Mouvement = -Position
    EndIf
    If Position + Mouvement >= ListSize(Arbre())
      Mouvement = ListSize(Arbre()) - 1 - Position
    EndIf
    
    ; Position finale
    PositionFinale = Position + Mouvement
    
    ; Evolution du niveau entre le départ et l'arrivée
    SelectElement(Arbre(), Position)
    Niveau = Arbre()\Niveau
    SelectElement(Arbre(), PositionFinale)
    Evolution = Arbre()\Niveau - Niveau
    If NextElement(Arbre())
      If Arbre()\Niveau > Niveau + Evolution
        Evolution + 1
      EndIf
    EndIf
    
    ; Nombre d'élément à déplacer (Regarde le nombre d'enfants à déplacer)
    SelectElement(Arbre(), Position)
    Suivant = 0
    While NextElement(Arbre())
      If Arbre()\Niveau <= Niveau
        Break
      EndIf
      Suivant + 1
    Wend
    If Mouvement > 0 And Position + Suivant >= PositionFinale
      Suivant = 0 ; Si le déplacement se fait dans un élément enfant, on ne déplace pas les enfants
    EndIf
    
    ; Déplacement
    Repeat
      
      SelectElement(Arbre(), Position)
      If Mouvement > 0
        For i = 1 To Mouvement
          *Deplacer1 = @Arbre()
          NextElement(Arbre())
          *Deplacer2 = @Arbre()
          SwapElements(Arbre(), *Deplacer1, *Deplacer2)
          ChangeCurrentElement(Arbre(), *Deplacer1)
        Next
        
      ElseIf Mouvement < 0
        For i = 1 To -Mouvement
          *Deplacer1 = @Arbre()
          PreviousElement(Arbre())
          *Deplacer2 = @Arbre()
          SwapElements(Arbre(), *Deplacer1, *Deplacer2)
          ChangeCurrentElement(Arbre(), *Deplacer1)
        Next
        
        Position + 1
        
      EndIf
      
      Arbre()\Niveau + Evolution
      
      Suivant - 1
      
    Until Suivant < 0
    
    
    Arbre_Niveau_Correction()
    Arbre_Remplir(PositionFinale)
    
  EndIf
EndProcedure

Procedure Arbre_Niveau(Position, Evolution)
  Arbre_Pliage()
  
  If Position >= 0
    SelectElement(Arbre(), Position)
    
    Niveau = Arbre()\Niveau
    
    ; Vérification
    If Niveau + Evolution < 0
      Evolution = -Niveau
    EndIf
    If Evolution > 0
      If PreviousElement(Arbre())
        If Niveau + Evolution > Arbre()\Niveau + 1
          Evolution = Arbre()\Niveau + 1 - Niveau
        EndIf
        NextElement(Arbre())
      EndIf
    EndIf
    
    ; Correction du pliage de l'arbre
    If Evolution > 0
      If PreviousElement(Arbre())
        Arbre()\Pliage = 1
        NextElement(Arbre())
      EndIf
    EndIf
    If Evolution < 0
      If NextElement(Arbre())
        If Arbre()\Niveau = Niveau
          PreviousElement(Arbre())
          Arbre()\Pliage = 1
        Else
          PreviousElement(Arbre())
        EndIf
      EndIf
    EndIf
    
    ; Change le niveau
    Arbre()\Niveau + Evolution
    While NextElement(Arbre())
      If Arbre()\Niveau <= Niveau
        Break
      EndIf
      Arbre()\Niveau + Evolution
    Wend
    
    Arbre_Niveau_Correction()
    Arbre_Remplir(Position)
    
  EndIf
EndProcedure

Procedure Arbre_GlisserDeposer()
  
  Protected DragDrop_X, DragDrop_End
  
  DragDrop_End = GetGadgetState(#Gadget_Tree)
  
  If DragDrop_End = -1
    DragDrop_End = CountGadgetItems(#Gadget_Tree) - 1
  EndIf
  
  DragDrop_X = WindowMouseX(#Window_Main) - DragDrop_Start_X
  
  If DragDrop_End = DragDrop_Start
    ; On change le niveau de l'élément
    If DragDrop_X > 8
      Arbre_Niveau(DragDrop_Start, 1)
    ElseIf DragDrop_X < -8
      Arbre_Niveau(DragDrop_Start, -1)
    EndIf
  Else
    ; On déplace l'élément
    Arbre_Deplacer(DragDrop_Start, DragDrop_End - DragDrop_Start)
  EndIf
  
EndProcedure

;}

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Procedure Open_Tree()
  
  If OpenWindow(#Window_Main, 0, 0, 800, 600, "Tree Avec Gestion complète...", #PB_Window_SystemMenu | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
    
    ButtonImageGadget(#Gadget_BoutonArbreMonter, 265, 20, 40, 40, ImageID(Monter))
    ButtonImageGadget(#Gadget_BoutonArbreDescendre, 265, 60, 40, 40, ImageID(Descendre))
    ButtonImageGadget(#Gadget_BoutonArbreNiveauPlus, 265, 100, 40, 40, ImageID(NiveauPlus))
    ButtonImageGadget(#Gadget_BoutonArbreNiveauMoins, 265, 140, 40, 40, ImageID(NiveauMoins))

    TreeGadget(#Gadget_Tree, 10, 10, 250, 580, #PB_Tree_AlwaysShowSelection)
    
    SetWindowLong_(GadgetID(#Gadget_Tree), #GWL_STYLE, GetWindowLong_(GadgetID(#Gadget_Tree), #GWL_STYLE) | #TVS_EDITLABELS) ; liste arborescente standard
    EnableGadgetDrop(#Gadget_Tree, #PB_Drop_Private, #PB_Drag_Move, #Tree_DragDrop_Deplacer)
    
    ;{ Ajoute Element Tree
    AddElement(Arbre())
    Arbre()\Nom = "City"
    Arbre()\Niveau = 0
    
    AddElement(Arbre())
    Arbre()\Nom = "Cinema"
    Arbre()\Niveau = 1
    
    AddElement(Arbre())
    Arbre()\Nom = "Bank"
    Arbre()\Niveau = 1
    
    AddElement(Arbre())
    Arbre()\Nom = "CommercialBuilding"
    Arbre()\Niveau = 1
    
    AddElement(Arbre())
    Arbre()\Nom = "Hospital"
    Arbre()\Niveau = 1
    
    AddElement(Arbre())
    Arbre()\Nom = "RetailShop"
    Arbre()\Niveau = 1
    
    AddElement(Arbre())
    Arbre()\Nom = "School"
    Arbre()\Niveau = 1
    
    AddGadgetItem(#Gadget_Tree, -1, "City", ImageID(City), 0)
    AddGadgetItem(#Gadget_Tree, -1, "Cinema", ImageID(Cinema), 1)
    AddGadgetItem(#Gadget_Tree, -1, "Bank", ImageID(Bank), 1)
    AddGadgetItem(#Gadget_Tree, -1, "Commercial Building", ImageID(CommercialBuilding), 1)
    AddGadgetItem(#Gadget_Tree, -1, "Hospital", ImageID(Hospital), 1)
    AddGadgetItem(#Gadget_Tree, -1, "Retail Shop", ImageID(RetailShop), 1)
    AddGadgetItem(#Gadget_Tree, -1, "School", ImageID(School), 1)
    
    ;}
    
    SendMessage_(GadgetID(#Gadget_Tree), #TVM_SETIMAGELIST, #TVSIL_NORMAL, ImageList)
    SetGadgetItemState(#Gadget_Tree, 0, #PB_Tree_Expanded)
    
    Repeat
      
      WindowEvent = WaitWindowEvent()
      EventGadget = EventGadget()
      EventType = EventType()
      
      Select WindowEvent
          
        Case #PB_Event_Gadget
          
          Position = GetGadgetState(#Gadget_Tree)
          
          Select EventGadget
              
            Case #Gadget_Tree
              
              Select EventType()
                  
                Case #PB_EventType_DragStart ; Glisser déposer
                  
                  DragDrop_Start = Position
                  DragDrop_Start_X = WindowMouseX(#Window_Main)
                  
                  DragPrivate(#Tree_DragDrop_Deplacer, #PB_Drag_Move)
                  
                Case #PB_EventType_LeftDoubleClick
                  SendMessage_(GadgetID(#Gadget_Tree), #TVM_EDITLABEL, 0, GadgetItemID(#Gadget_Tree, GetGadgetState(#Gadget_Tree)))
                  CreateThread(@Arbre_Edit(), 0)
                  
              EndSelect
              
            Case #Gadget_BoutonArbreMonter
              Arbre_Deplacer(Position, -1)
              
            Case #Gadget_BoutonArbreDescendre
              Arbre_Deplacer(Position, 1)
              
            Case #Gadget_BoutonArbreNiveauPlus
              Arbre_Niveau(Position, 1)
              
            Case #Gadget_BoutonArbreNiveauMoins
              Arbre_Niveau(Position, -1)
              
          EndSelect
          
        Case #PB_Event_GadgetDrop
          
          ; Opération de glisser déposer
          Select EventGadget()
              
            Case #Gadget_Tree
              
              Select EventDropType()
                  
                Case #PB_Drop_Private
                  
                  Select EventDropPrivate()
                      
                    Case #Tree_DragDrop_Deplacer
                      Arbre_GlisserDeposer()
                  EndSelect
                  
              EndSelect
              
          EndSelect
          
      EndSelect
      
    Until WindowEvent = #PB_Event_CloseWindow
    CloseWindow(Windows)
    
  EndIf
  
EndProcedure

Open_Tree()

Voici l'archive au complète.
http://www.aht.li/2909900/Tree_Avec_Ges ... mplete.zip
Dernière modification par Shadow le mer. 15/juin/2016 12:06, modifié 2 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Tree avec gestion complète

Message par Marc56 »

Shadow a écrit : J'ai presque rien fais moi si ce n'est assembler le code.
Tous le mérite ne m'en reviens donc pas.
:roll: C'est rien de le dire, mais ça ne t'empêche pas de mettre:
Shadow a écrit : ;Code créer par Monsieur Dieppedalle David le 13/06/2016.
; Code pour éditer les lien du Tree créer par ?.
; Code pour la gestion du drag en drop ainsi que le déplacement des lien du Tree créer par "Le Soldat Inconnu" du forum FR de Pure Basic.
Code original de LSI effectivement: http://www.purebasic.fr/french/viewtopi ... =6&t=11969 dont tu as juste changé la langue de certains mots (#arbre, #Tree etc) :roll:
Juste ajouté 15 lignes "Procédure Procedure Arbre_Edit(Val) "

:!: "Code créé" et pas "Code créer"
http://www.reverso.net/orthographe/correcteur-francais/

C'est quoi cette nouvelle mode de remplir les forums avec du code pompé à droite et à gauche et juste traduit ? :?

Améliorer des exemples oui, mais il faut avoir la politesse de mettre les auteurs originaux en premier et simplement commenter ses ajouts / modifications (dans les procédures) comme le font la plupart des programmeurs.

:wink:
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Tree avec gestion complète

Message par TazNormand »

+1 Avec Marc56 : Shadow, ce n'est pas la première fois, et même si LSI avait "donné" son code sur le forum, il en reste le propriétaire, donc tu DOIS indiquer en entête de ton/tes codes que tu t'en es servi.

Comme punition, tu dois reprendre tous les codes que tu as posté sur le forum et sur lesquels tu t'es servi d'un autre code, et indiquer en première ligne de commentaire :
  • Qui est/sont l'/les auteur(s) de(s) la routine(s) dont tu t'es servi
    Qui sont les membres qui t'ont aidé, même pour une simple correction :lol:
Image
Image
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Tree avec gestion complète

Message par Shadow »

Taz et les autres sachez ceci et tenez le vous pour dit une bonne fois pour toute.
A chaque fois que j'utilise un code d'un autre j'indique au début du code, t'as qu'a relire.

Maintenant si je dois mettre a chaque routine / ligne qui a fait..... pourquoi pas mais
est-ce utile puisque je le met en commentaire en premier :?

Bref je voulais partager mais bon j'ai encore mal agis évidement :roll:
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Tree avec gestion complète

Message par TazNormand »

Tu as lu la réponse de Marc56 ?

Alors avant de monter sur tes grands chevaux, prends le temps de relire sa réponse, puisque lui a fait l'effort de chercher de qui était la routine que tu as utilisée.

De même ma réponse sur la punition était une boutade -un trait d'humour si tu préfères-, tu noteras le smiley :lol:

Quoiqu'il en soit, tu as tout de même cité LSI, c'est déjà pas si mal
Image
Image
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Tree avec gestion complète

Message par microdevweb »

J'utilise beaucoup les tree et je me suis fais un module, avec pas mal de possibilités
  • Case à cocher
  • Désactivé la sélection d'un item
  • Désactiver la case à coché d'un item
  • Mémorise deux data par item
  • Ajout de bouton à un item
  • Gestion du drag and drop
  • Etc...
J'avais commencé une aide, mais étant donné le peux d'intérêt je ne l'ai pas poursuivie (note: je développe en premier pour moi des accessoires qui me sont utiles)

La liste des commandes est reprise dans le DeclareModule (48 commandes)

:arrow: Le lien Github ICI
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Tree avec gestion complète

Message par Kwai chang caine »

:wink: Evidemment la ressemblance des deux codes est frappante 8O
Je sais pas ce qu'il devient ce bon soldat....il me manque :|

@MicroDevWeb
C'est toujours utile ce genre de code, même si y'a pas foule pour le dire :|
Et comme pour Gally l'offre n'est pas toujours synchronisée à la demande

Je ne lis jamais les aides, comme les docs de tous genres :oops:
Par contre, un exemple de code mettant en valeur toute la puissance de ton gadget serait à mon humble avis, beaucoup plus utile, et moins long à réaliser que des pages d'aide.
Car certaines fonctions peuvent te parraitre simple à utiliser et pour l'utilisateur qui ne connait pas ton module nécéssiter un temps de recherche, ou même passer à coté de certaines fonctions (48 c'est beaucoups déjà)
De plus j'ai vu des pointeurs de callback en parametres, c'est pas une utilisation pour les débutants...ça restreint par conséquent le champs de tes "clients" potentiels :wink:

C'est le gros problême des informaticiens qui ont un niveau, ils oublient que la plupart des gens qui cherchent des codes, c'est qu'ils ne sont pas capable de les faire eux même.
Il y a bien sûr les cadors faineants, qui veulent faire un truc rapide et pas se prendre la tête, mais je pense que la majorité sont des personnes de niveau inférieur
Il est donc facile à comprendre qu'une personne qui n'as pas le niveau aura un mal fou à mettre en branle la librairie ou le soft.

J'ai ce probleme constament dans des tonnes de logiciels créé par des supers tronches
Des avions de guerres qui sont censés faire papa maman, et puis au final font pchiiiit comme aurait dit Jacques, car dans l'incapacité de les faire fonctionner, je passe mon chemin :cry:
Du coups, c'est une double perte, le créateur et l'utilisateur qui ne se rencontrerons pas.

Les docs c'est bien, mais comme tous les écrits, chacun peut les interpréter différement, ce qui peut être évident pour un lecteur peut être incompréhensible par un autre
Un exemple, c'est visuel, on peut le bidouiller et voir immédiatement les conséquences, et ça démontre la puissance du produit en quelques secondes, sans blabla...comme MMA :mrgreen:

Donc la doc versus l'exemple..comme le dit si bien le proverbe : un bon dessin vaut mieux que bien des explications :D

En tout cas merci du partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Tree avec gestion complète

Message par Shadow »

Oui les image parle bien mieux que un dico c'est connue
Je suis d'accord avec toi KCC, vaux mieux de bon exemple qu'un doc vaseuse.

Edit:

Mise à jour.

Changement des boutons avec des images parlante.
Ajoute la prise en charge de gros Icônes.

Note: Lorsque vous déplacez un Élément du Tree, les Icônes disparaissent :cry:
Je sais pas d’où ça viens et encore moins comment corriger ça.

Si vous renommer un Élément et que vous déplacez un Élément du Tree
les noms reviennent comme ils étais avant.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Tree avec gestion complète

Message par Shadow »

Est ce que quelqu'un pourrais m'aider svp je ne
sais pas du tout comment faire :(
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre