Page 1 sur 1

Treeview personnalisé

Publié : mer. 01/juil./2015 16:02
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


Re: Treevieuw personnalisé

Publié : mer. 01/juil./2015 16:05
par falsam
Merci microdevweb :)

Re: Treevieuw personnalisé

Publié : mer. 01/juil./2015 17:47
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

Re: Treevieuw personnalisé

Publié : mer. 01/juil./2015 21:00
par G-Rom
rendu très propre.

Re: Treeview personnalisé

Publié : ven. 03/juil./2015 11:55
par microdevweb
Nouvelle version (1.2)

Re: Treeview personnalisé

Publié : jeu. 29/oct./2015 15:47
par microdevweb
Nouvelle version 1.5

Re: Treeview personnalisé

Publié : ven. 30/oct./2015 16:10
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

Re: Treeview personnalisé

Publié : ven. 30/oct./2015 17:41
par microdevweb
Merci Kwai chang caine :wink: