Treeview personnalisé

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Treeview personnalisé

Message par microdevweb »

Bonjour à tous,

Petit exemple

Image

Pour tester télécharger le module :arrow:
http://www.microdevweb.com/source/Tree/PBTree_1.5.zip

Ou

Lancer ce code après l'avoir sauver (exemple: launch.pb)

Code : Tout sélectionner

If FileSize("Tree.pbi")=-1
      InitNetwork()
      If ReceiveHTTPFile("http://www.microdevweb.com/source/Tree/Tree.pbi","Tree.pbi")=0
            MessageRequester("Http Error","I can not load the Tree.pbi")
            End
      EndIf
EndIf
Copié et lancer le code (note: tles image sont rendue par http)

Code : Tout sélectionner

XIncludeFile "Tree.pbi"
Enumeration 
      #MainForm
      #TreeA
      #TreeB
      #TreeC
EndEnumeration
Enumeration       
      #TP_item
      #Tp_SubItem
      #Tp_Text
EndEnumeration
Global gWF,gHF,gTreeD,*IcoTable,*IcoLabel,*IcoEdit
Procedure FillsTreeA()
      Protected N,Txt$,R,I,Id
      For N=1 To 4
            Txt$="Item "
            Tree::AddItem(#TreeA,-1,Txt$+Str(N),*IcoTable,0)
            Tree::SetData(#TreeA,Id,#TP_item,-1)
            Id+1
            For R=1 To 5
                  Txt$="Sub Item "
                  Tree::AddItem(#TreeA,-1,Txt$+Str(N),*IcoLabel,1)
                  Tree::SetData(#TreeA,Id,#Tp_SubItem,-1)
                  Id+1
                  For I=1 To 6
                        Txt$="Text "
                        Tree::AddItem(#TreeA,-1,Txt$+Str(N),0,2) 
                        Tree::DisableCheckBox(#TreeA,Id,#False)
                        Tree::SetData(#TreeA,Id,#Tp_Text,I)
                        Id+1
                  Next
            Next
      Next
      Tree::Draw(#TreeA)
EndProcedure
Procedure FillsTreeB()
      Protected N,Txt$,R,I,Id
      For N=1 To 4
            Txt$="Item "
            Tree::AddItem(#TreeB,-1,Txt$+Str(N),*IcoTable,0)
            Tree::SetData(#TreeB,Id,#TP_item,-1)
            Id+1
            For R=1 To 5
                  Txt$="Sub Item "
                  Tree::AddItem(#TreeB,-1,Txt$+Str(N),*IcoLabel,1)
                  Tree::SetData(#TreeB,Id,#Tp_SubItem,-1)
                  Id+1
                  For I=1 To 6
                        Txt$="Text "
                        Tree::AddItem(#TreeB,-1,Txt$+Str(N),0,2) 
                        Tree::DisableCheckBox(#TreeB,Id,#False)
                        Tree::SetData(#TreeB,Id,#Tp_Text,I)
                        Id+1
                  Next
            Next
      Next
      Tree::Draw(#TreeB)
EndProcedure
Procedure EventEdit(Type,Values)
      Debug "Edit"
EndProcedure
Procedure FillsTreeC()
      Protected N,Txt$,R,I,Id
      For N=1 To 4
            Txt$="Item "
            Tree::AddItem(#TreeC,-1,Txt$+Str(N),*IcoTable,0)
            Tree::SetData(#TreeC,Id,#TP_item,-1)
            Id+1
            For R=1 To 3
                  Txt$="Sub Item "
                  Tree::AddItem(#TreeC,-1,Txt$+Str(N),*IcoLabel,1)
                  Tree::SetData(#TreeC,Id,#Tp_SubItem,-1)
                  Id+1
                  For I=1 To 3
                        Txt$="Text "
                        Tree::AddItem(#TreeC,-1,Txt$+Str(N),0,2) 
                        Tree::DisableCheckBox(#TreeC,Id,#False)
                        Tree::SetData(#TreeC,Id,#Tp_Text,I)
                        Tree::AddItemButton(#TreeC,Id,*IcoEdit,24,@EventEdit())
                        Id+1
                  Next
            Next
      Next
      Tree::Draw(#TreeC)
EndProcedure
Procedure FillsTreeD()
      Protected N,Txt$,R,I,Id
      For N=1 To 4
            Txt$="Item "
            Tree::AddItem(gTreeD,-1,Txt$+Str(N),*IcoTable,0)
            Tree::SetData(gTreeD,Id,#TP_item,-1)
            Id+1
            For R=1 To 3
                  Txt$="Sub Item "
                  Tree::AddItem(gTreeD,-1,Txt$+Str(N),*IcoLabel,1)
                  Tree::SetData(gTreeD,Id,#Tp_SubItem,-1)
                  Id+1
            Next
      Next
      Tree::Draw(gTreeD)
EndProcedure
Procedure LoadHttpImage()
      InitNetwork()
      *IcoTable=ReceiveHTTPMemory("http://www.microdevweb.com/source/Tree/table.ico")
      If Not *IcoTable
            MessageRequester("LoadImage Error","Faillet http request ")
      EndIf
      *IcoLabel=ReceiveHTTPMemory("http://www.microdevweb.com/source/Tree/label.ico")
      If Not *IcoLabel
            MessageRequester("LoadImage Error","Faillet http request ")
      EndIf
      *IcoEdit=ReceiveHTTPMemory("http://www.microdevweb.com/source/Tree/pencil.ico")
      If Not *IcoEdit
            MessageRequester("LoadImage Error","Faillet http request ")
      EndIf
EndProcedure
Procedure SelectTreeA(Type,Values)
      Debug "Type: "+Str(Type)+" Values: "+Str(Values)
EndProcedure
Procedure EventCheckBoxTreeA(Item$)
      Debug Item$
EndProcedure
Procedure OpenMainFomr()
      LoadHttpImage()
      Protected Flag=#PB_Window_Maximize|#PB_Window_SystemMenu
      OpenWindow(#MainForm,0,0,800,600,"Tree module",Flag)
      gWF=WindowWidth(#MainForm)
      gHF=WindowHeight(#MainForm)
      Protected M=10,WT=(gWF/4)-(M*2),HT=gHF-(M*2),X=M,Y=M
      Tree::Create(#TreeA,X,Y,WT,HT)
      Tree::AddHelp(#TreeA,#TP_item,"Title Tree A","Your are above Item")
      Tree::AddHelp(#TreeA,#Tp_SubItem,"Title Tree A","Your are above Sub Item")
      Tree::AddHelp(#TreeA,#Tp_Text,"Title Tree A","Your are above Text")
      Tree::SetCallBackSelected(#TreeA,@SelectTreeA())
      Tree::SetCallBackCheckBox(#TreeA,@EventCheckBoxTreeA())
      X+M+WT
      Tree::Create(#TreeB,X,Y,WT,HT)
      Tree::SetIconSize(#TreeB,8,8,8)
      X+M+WT
      Tree::Create(#TreeC,X,Y,WT,HT)
      Tree::SetIconSize(#TreeC,12,12,48)
      Tree::SetColor(#TreeC,$00FF7F,$0000FF,$DCDCDC,$8515C7,$008CFF)
      X+M+WT
      gTreeD=Tree::Create(#PB_Any,X,Y,WT,HT)
      FillsTreeA()
      FillsTreeB()
      FillsTreeC()
      FillsTreeD()
EndProcedure
OpenMainFomr()
Global gEvent
Repeat
   gEvent=WaitWindowEvent()   
Until gEvent=#PB_Event_CloseWindow

Dernière modification par microdevweb le jeu. 29/oct./2015 16:23, modifié 5 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Treevieuw personnalisé

Message par falsam »

Merci microdevweb :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Treevieuw personnalisé

Message par microdevweb »

Nouvelle version 1.1 (Possibilité d'ajouté une procédure CallBack quant l'utilisateur fait une opération drag and drop sur le Tree
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Treevieuw personnalisé

Message par G-Rom »

rendu très propre.
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Treeview personnalisé

Message par microdevweb »

Nouvelle version (1.2)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Treeview personnalisé

Message par microdevweb »

Nouvelle version 1.5
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: Treeview personnalisé

Message par Kwai chang caine »

Qu'est ce qui sont beaux...on dirait des camions 8O
Marche niquel avec W10 sur mon ROG :mrgreen:

En plus c'est super cool de désosser ton SPEEDEV en pièces détachées afin que chacun puisse se servir de la piece qu'il a besoin sans avoir a l'extraire de l'immense code de SPEEDEV 8)
Comme ça le mec qu' a besoin seulement d'un retroviseur ou d'un démarreur il est servi en quelques secondes.
Tu as inventé un nouveau concept...encore mieux que le sharing, le SelfSharingService ou le "partage libre service" pour les camemberts :D
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Treeview personnalisé

Message par microdevweb »

Merci Kwai chang caine :wink:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre