Explorer Tree checkbox
-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Explorer Tree checkbox
Bonjour,
Déjà une petite présentation, je suis programmeur à mes heures perdu. Je suis pas Français donc excuser les fautes.
J'ai découvert l'existence de PB il y à 3 jours pour l'instant je suis satisfait de la présentation et de la simplicité d'utilisation (merci Fred) comparer à d'autre genre delphi je ne comprend meme pas la difference entre les versions Lol.
avant d'acheter le version oui je suis encore en demo (array,list, map ou macro) ne sont donc pas disponible
Voila mon problème :
Je souhaite faire un ExplorerTree avec des checkboxs et pouvoir recupere les répertoires ou les fichiers sélectionner malheureusement dans ExplorerTree il n'ai pas possible de rajouter #PB_CheckBox_....
J'ai vu sur le forum anglais des examples avec des #TVS..... qui ne marche pas, je pense que cela doit etre des anciennes version
Cordialement, Daniel
Déjà une petite présentation, je suis programmeur à mes heures perdu. Je suis pas Français donc excuser les fautes.
J'ai découvert l'existence de PB il y à 3 jours pour l'instant je suis satisfait de la présentation et de la simplicité d'utilisation (merci Fred) comparer à d'autre genre delphi je ne comprend meme pas la difference entre les versions Lol.
avant d'acheter le version oui je suis encore en demo (array,list, map ou macro) ne sont donc pas disponible
Voila mon problème :
Je souhaite faire un ExplorerTree avec des checkboxs et pouvoir recupere les répertoires ou les fichiers sélectionner malheureusement dans ExplorerTree il n'ai pas possible de rajouter #PB_CheckBox_....
J'ai vu sur le forum anglais des examples avec des #TVS..... qui ne marche pas, je pense que cela doit etre des anciennes version
Cordialement, Daniel
Re: Explorer Tree checkbox
Salut doudouvs et bienvenue,
voici un code qui recupere le chemain d'un dossier ou fichier certes sans checkbox
ça ne te convient pas ?
@++
voici un code qui recupere le chemain d'un dossier ou fichier certes sans checkbox

Code : Tout sélectionner
If OpenWindow(0, 0, 0, 300, 300, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerTreeGadget(0, 10, 10, 280, 280, "*.*")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 0
Debug GetGadgetText(0)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Explorer Tree checkbox
peut etre une solution
Code : Tout sélectionner
; Démonstration des options possibles pour le gadget liste avec icônes...
If openwindow (0, 0, 0, 690, 300, "ListIconGadget" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
; colonne de gauche
textgadget (7, 10, 105, 300, 20, "Liste avec icônes + cases à cocher" , #PB_Text_Center )
listicongadget (1, 10, 20, 600, 280, #PB_Explorer_Name , 100, #PB_ListIcon_CheckBoxes ) ; Liste avec icônes et cases à cocher
addgadgetcolumn (1, 1, #PB_Explorer_Type , 100)
addgadgetcolumn (1, 2, #PB_Explorer_Size , 100)
Directory$ = "C:\" ; Énumère le contenu du répertoire C (Les sous-répertoires ne sont pas examinés)
If examinedirectory (0, Directory$, "*.*" )
While NextDirectoryEntry (0)
If DirectoryEntryType (0) = #PB_DirectoryEntry_File
Type$ = " [Fichier] "
Else
Type$ = " [Sous-répertoire] "
EndIf
;Debug DirectoryEntryName(0) + Type$ + "- Taille en octet : " + Str(DirectoryEntrySize(0))
AddGadgetItem (1, -1, DirectoryEntryName (0) + Chr (10)+ Type$ + Chr (10)+ "- Taille en octet : " + Str ( DirectoryEntrySize (0) ) )
Wend
FinishDirectory (0)
EndIf
Repeat : Until WaitWindowEvent () = #PB_Event_CloseWindow
EndIf
; EPB
-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Re: Explorer Tree checkbox
merci pour l'accueil 
nickel Dobro c'est déjà un bon début pour une base, cela va au moins me donner une idée des possibilités.
Je me replonge dans la doc ...

nickel Dobro c'est déjà un bon début pour une base, cela va au moins me donner une idée des possibilités.
Je me replonge dans la doc ...
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Re: Explorer Tree checkbox
Bienvenue et bonne baignade 

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Re: Explorer Tree checkbox
Merci effectivement je nage, j'espere ne pas couler
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Re: Explorer Tree checkbox
après tu peut partir sur un TreeGadget qui ressemble fort a un ExplorerTreeGadget et qui gere les combosbox
@++

Code : Tout sélectionner
If OpenWindow(0, 0, 0, 355, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 160, 160) ; liste arborescente standard
TreeGadget(1, 180, 10, 160, 160, #PB_Tree_CheckBoxes | #PB_Tree_NoLines) ; liste arborescente avec cases à cocher + sans lignes reliant les noeuds
For ID = 0 To 1
For a = 0 To 10
AddGadgetItem (ID, -1, "Elément normal "+Str(a), 0, 0) ; si vous souhaitez ajouter une image, utilisez
AddGadgetItem (ID, -1, "Noeud "+Str(a), 0, 0) ; ImageID(x) comme 4ème paramètre
AddGadgetItem (ID, -1, "Sous-élément 1", 0, 1) ; Ceux-là sont au premier sous-niveau
AddGadgetItem (ID, -1, "Sous-élément 2", 0, 1)
AddGadgetItem (ID, -1, "Sous-élément 3", 0, 1)
AddGadgetItem (ID, -1, "Sous-élément 4", 0, 1)
AddGadgetItem (ID, -1, "Fichier "+Str(a), 0, 0) ; sous-niveau 0 à nouveau
Next
Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Explorer Tree checkbox
J'ai ce magnifique code qui date de 2006. Ce qui est sélectionné apparaît à droite de l'écran.
Code : Tout sélectionner
; English forum: http://www.purebasic.fr/english/viewtopic.php?p=158360
; Author: sverson
; Date: 21. August 2006
; OS: Windows
; Demo: Yes
; Use ExplorerListGadget Checkboxes to select directories
; and display the result in a ListIconGadget
; Thanks to srod, breeze4me AND freak!
; See also remi_meier's "Simple Wrapper For TreeGadget-Macros by MSDN"
; http://www.purebasic.fr/english/viewtopic.php?p=104420
Global MainWindowEvent.l
Global ExplorerTreeNo.l, ExplorerTreeID.l, ListIconNo.l, ListIconID.l, SplitterNo.l, SplitterID.l
Global oldwproc.l, oldwproc1.l
#TVM_GETITEMSTATE = #TV_FIRST + 39
#TVS_CHECKBOXES = $100
#LVM_GETHEADER = (#LVM_FIRST + 31)
Procedure IsInList(GadgetNo.l,String.s)
Protected GadgetItem.l, GadgetItems.l
GadgetItems = CountGadgetItems(GadgetNo) - 1
For GadgetItem = 0 To GadgetItems
If String = GetGadgetItemText(GadgetNo,GadgetItem,4)
ProcedureReturn GadgetItem
EndIf
Next
ProcedureReturn -1
EndProcedure
Procedure TreeViewSetCheckBox(tvGadgetNo.l)
Protected tvGadgetID.l, tvGadgetStyles.l
tvGadgetID = GadgetID(tvGadgetNo)
tvGadgetStyles = GetWindowLong_(tvGadgetID,#GWL_STYLE) | #TVS_CHECKBOXES
SetWindowLong_(tvGadgetID,#GWL_STYLE,tvGadgetStyles)
EndProcedure
Procedure.l GetItemNumber(GadgetID.l, hItem.l) ;/ THX freak CodeArchiv (modified)
Protected hItem1.l, hItem2.l, ItemNum.l
hItem1 = SendMessage_(GadgetID, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
While hItem1 <> hItem
hItem2 = SendMessage_(GadgetID, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem1)
Repeat
If hItem2 = #Null: hItem2 = SendMessage_(GadgetID, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem1): EndIf
If hItem2 = #Null: hItem1 = SendMessage_(GadgetID, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem1): EndIf
Until hItem2 <> #Null
hItem1 = hItem2
ItemNum + 1
Wend
ProcedureReturn ItemNum
EndProcedure
Procedure ColumnAutoSize(GadgetID.l)
Protected GadgetHdr.l, AktColumn.l, ColumnCount.l
GadgetHdr = SendMessage_(GadgetID,#LVM_GETHEADER,0,0)
ColumnCount = SendMessage_(GadgetHdr,#HDM_GETITEMCOUNT,#Null,#Null)-1
For AktColumn=0 To ColumnCount : SendMessage_(GadgetID,#LVM_SETCOLUMNWIDTH,AktColumn,#LVSCW_AUTOSIZE_USEHEADER) : Next
EndProcedure
Procedure.l WindowCallback1(hwnd, msg, wParam, lParam)
Protected result.l
Debug msg
If msg = 20 ;/??? THX sparkie http://www.purebasic.fr/english/viewtopic.php?p=85045 (modified)
ColumnAutoSize(ListIconID)
EndIf
result = CallWindowProc_(oldwproc1, hwnd, msg, wParam, lParam)
ProcedureReturn result
EndProcedure
Procedure.l WindowCallback(hwnd, msg, wParam, lParam)
Protected *nmhdr.NMHDR, lpht.TV_HITTESTINFO
Protected result.l, itemID.l, itemNo.l, itemState.l, itemString.s, ListPos.l
result = CallWindowProc_(oldwproc, hwnd, msg, wParam, lParam)
If msg = #WM_KEYDOWN ;/ THX breeze4me http://www.purebasic.fr/english/viewtopic.php?p=158317 (modyfied)
If wParam = #VK_SPACE
itemID = SendMessage_(ExplorerTreeID, #TVM_GETNEXTITEM, #TVGN_CARET,0)
itemNo = GetItemNumber(ExplorerTreeID,itemID)
itemState = (SendMessage_(ExplorerTreeID, #TVM_GETITEMSTATE, itemID, #TVIS_STATEIMAGEMASK)>>12) - 1
itemString = GetGadgetText(ExplorerTreeNo)
ListPos = IsInList(ListIconNo,itemString)
If itemState
If ListPos=-1
AddGadgetItem(ListIconNo,-1,"KEYBOARD"+Chr(10)+Str(itemID)+Chr(10)+Str(itemNo)+Chr(10)+Str(itemState)+Chr(10)+GetGadgetText(ExplorerTreeNo))
EndIf
Else
If ListPos>-1
RemoveGadgetItem(ListIconNo,ListPos)
EndIf
EndIf
ColumnAutoSize(ListIconID)
EndIf
EndIf
If msg= #WM_LBUTTONDOWN ;/ THX breeze4me http://www.purebasic.fr/english/viewtopic.php?p=158317 (modyfied)
GetCursorPos_(@lpht\pt)
ScreenToClient_(ExplorerTreeID,lpht\pt)
itemID = SendMessage_(ExplorerTreeID,#TVM_HITTEST,0,lpht)
SendMessage_(ExplorerTreeID,#TVM_SELECTITEM,#TVGN_CARET,itemID)
itemNo = GetItemNumber(ExplorerTreeID,itemID)
itemState = (SendMessage_(ExplorerTreeID, #TVM_GETITEMSTATE, itemID, #TVIS_STATEIMAGEMASK)>>12) - 1
itemString = GetGadgetText(ExplorerTreeNo)
ListPos = IsInList(ListIconNo,itemString)
If itemState
If ListPos=-1
AddGadgetItem(ListIconNo,-1,"MOUSE"+Chr(10)+Str(itemID)+Chr(10)+Str(itemNo)+Chr(10)+Str(itemState)+Chr(10)+GetGadgetText(ExplorerTreeNo))
EndIf
Else
If ListPos>-1
RemoveGadgetItem(ListIconNo,ListPos)
EndIf
EndIf
ColumnAutoSize(ListIconID)
EndIf
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 800, 500, "ExplorerTreeGadget: CheckboxHandler (Mouse+Keyboard)", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
ExplorerTreeNo = ExplorerTreeGadget(#PB_Any,0,0,0,0,"")
ExplorerTreeID = GadgetID(ExplorerTreeNo)
ListIconNo = ListIconGadget(#PB_Any,0,0,0,0,"EVENT",80,#PB_ListIcon_FullRowSelect| #PB_ListIcon_AlwaysShowSelection);|#LVS_NOCOLUMNHEADER)
ListIconID = GadgetID(ListIconNo)
AddGadgetColumn(ListIconNo, 1, "ItemID", 70) : AddGadgetColumn(ListIconNo, 2, "ItemNo", 70) : AddGadgetColumn(ListIconNo, 3, "ItemState", 80) : AddGadgetColumn(ListIconNo, 4, "ItemValue", 200)
SplitterNo = SplitterGadget(#PB_Any,5,5,WindowWidth(0)-10,WindowHeight(0)-10,ExplorerTreeNo,ListIconNo,#PB_Splitter_Vertical|#PB_Splitter_FirstFixed)
SplitterID = GadgetID(SplitterNo)
TreeViewSetCheckBox(ExplorerTreeNo)
oldwproc = SetWindowLong_(ExplorerTreeID, #GWL_WNDPROC, @WindowCallback())
oldwproc1 = SetWindowLong_(SplitterID, #GWL_WNDPROC, @WindowCallback1())
Repeat
MainWindowEvent = WaitWindowEvent()
Select MainWindowEvent
Case #WM_SIZE
ResizeGadget(SplitterNo,#PB_Ignore,#PB_Ignore,(WindowWidth(0)-10),WindowHeight(0)-10)
ColumnAutoSize(ListIconID)
EndSelect
Until MainWindowEvent = #PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Re: Explorer Tree checkbox
Ah mince les limites de version, bizarre dans la doc il dit que la version et limiter à 800 lignes
Line 37: GetWindowLong_() is not a function (or not available in demo version), array, list, map or macro.
Line 37: GetWindowLong_() is not a function (or not available in demo version), array, list, map or macro.
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Explorer Tree checkbox
getWindowLong_ fait partie des API Microsoft. Les API ne fonctionnent pas avec la version de démonstration.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Re: Explorer Tree checkbox
ah si j'ai bien compris
Les API microsoft et autre commande genre TVS_CHECKBOXES ne marcheront pas sur un system OSX
C'est ballot
Les API microsoft et autre commande genre TVS_CHECKBOXES ne marcheront pas sur un system OSX
C'est ballot
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Re: Explorer Tree checkbox
toute les Api se reconnaissent par le "_" avant "("
Beep_(440,100) ; API Windows qui genere un son (un LA)
il existe des API pour Windows,Mac,Linux , et oui c'est aussi une limitation , faut bien motiver les gens a acheter la version complete
ce qui est ballot , c'est les gens, qui pense que tout est gratuit ....
les gens comme moi et d'autres sur le forum , fabriquent des prg , et ne sont jamais "récompensé" de leur travails
parceque des gens comme toi? , pensent que c'est ballot ..
Beep_(440,100) ; API Windows qui genere un son (un LA)
il existe des API pour Windows,Mac,Linux , et oui c'est aussi une limitation , faut bien motiver les gens a acheter la version complete

ce qui est ballot , c'est les gens, qui pense que tout est gratuit ....
les gens comme moi et d'autres sur le forum , fabriquent des prg , et ne sont jamais "récompensé" de leur travails
parceque des gens comme toi? , pensent que c'est ballot ..

-
- Messages : 244
- Inscription : jeu. 07/mars/2013 19:02
- Localisation : France Alsace / Espagne Girona
Re: Explorer Tree checkbox
Merci pour les précisions des API
Qui parle de gratuit, je n'ai rien demander de gratuit
Oui c'est ballot d'afficher des API limiter à Windows alors que le programme doit être multi plateforme
Qui parle de gratuit, je n'ai rien demander de gratuit
Oui c'est ballot d'afficher des API limiter à Windows alors que le programme doit être multi plateforme
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Explorer Tree checkbox
Bonjour doudouvs. Si tu exécutes Pure Basic sur un Ordinateur équipé d'un système OSX, alors effectivement aucune API Microsoft ne pourra fonctionner. Pourrais tu mettre dans la signature de ton profil la configuration de ton ordinateur ainsi que la version de pure basic que tu utilises. Regarde ma signature par exemple. On evitera ainsi de poster du code qui ne pourra pas fonctionner sur ton OS. Mercidoudouvs a écrit :Les API microsoft et autre commande genre TVS_CHECKBOXES ne marcheront pas sur un system OSX
C'est ballot

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Explorer Tree checkbox
Pour quelqu'un qui n'est pas français, je trouve que tu écris bien mieux que certains d'entres nous sur ce forum.doudouvs a écrit :Je suis pas Français donc excuser les fautes.

PS : Dans ton profil utilisateur, tu peux spécifier ta localisation si tu le souhaites pour rappeler que tu n'es pas français et ainsi excuser tes fautes d'orthographe.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%