OVH Cloud OVH Cloud

[Windev10] Arbre façon explorer

4 réponses
Avatar
Fabrice Guillaume
Bonsoir et tous mes voeux !

Quelqu'un aurait il un petit bout de code pour remplir un arbre à la sauce
explorer...?

Pour afficher les disques dur, les répertoires et en sélectionnant un
répertoire afficher dans un champ liste images les fichiers JPEG qu'il
contient....

Merci par avance.

Fabrice

PS : n'ayant pas encore la version cd, je n'ai pas les exemples....

4 réponses

Avatar
Pierre BOUSQUET
j'espere que ce te conviendra :
PROCEDURE WindowsListeFicRep(Chemin="",Type=3,Trier=Vrai,Tracerúux)
// Récupère la liste des fichiers et des sous répertoires
// du répertoire courant dans une liste
// Type= 1 : répertoires
// 2 : fichiers
// 3 : rep+fichiers
chemin=Minuscule(Remplace(Remplace(Chemin,"",""),"+",""))
SI Position(chemin,"frepencours()") ALORS
chemin=Remplace(chemin,"frepencours()",fRepEnCours())
FIN
b est entier
Liste est chaîne
Chem est chaîne = chemin

SI chem="" ALORS
// Liste des lecteurs
NbLec est un entier
NbLec = AppelDLL32("kernel32", "GetLogicalDrives")
Valeur est entier

POUR b=1 A 26
SI b=1 ALORS
valeur=1
SINON
Valeur=Puissance(2,b-1)
FIN
SI ( ETBinaire(NbLec, valeur)) = valeur ALORS
SI liste<>"" ALORS liste=liste+RC
liste=liste+Caract(64+b)+":"+TAB+fDisqueInfo(Caract(64+b)+":",fdTypeDisque)
FIN
FIN

RENVOYER liste
FIN

Generique est chaîne

//si
position(extraitchaine(chem,ChaîneOccurrence(chem,"")+1,""),".")>0
// chem=remplace(chem,""+extraitchaine(chem,ChaîneOccurrence(chem,"")+1,""),"")
//FIN

WIN32_FIND_DATA est une structure
dwAttrib est un entier
CreeDateB est un entier
CreeDateH est un entier
DerAccB est un entier
DerAccH est un entier
DerEcritB est un entier
DerEcritH est un entier
nFileSizeHigh est un entier
nFileSizeLow est un entier
dwReserve0 est un entier
dwReserve1 est un entier
cFileName est une chaîne ASCIIZ sur 260
cAlternate est une chaîne ASCIIZ sur 14
FIN

WFD est un WIN32_FIND_DATA
lpFileName est une chaîne ASCIIZ sur 255
hFile est un entier = 1
r est un entier = 1
// Ce code vous est offert par Beaussier en ligne
TypeRencontre est entier

MemCrée("ZM_TMPLISTE")

// Déclaration de la recherche à faire
BOUCLE
b++
lpFileName = ExtraitChaîne(chem,b,";")
SI lpFileName=EOT ALORS SORTIR

generique =
ExtraitChaîne(lpFileName,ChaîneOccurrence(lpFileName,"")+1,"")
SI Position(generique,".")<1 ALORS
//si position(chem,"*.*")<1 ALORS
chem=Remplace(chem+"*.*","","")
generique="*.*"
FIN

SI Position(lpFileName,""+generique)<1 ALORS
lpFileName=lpFileName+""+generique
FIN

hFile = AppelDLL32("kernel32", "FindFirstFileA", &lpFileName, &WFD)
SI hFile<>-1 ALORS
r=1
TANTQUE r
SI WFD:cFileName<>".." ET WFD:cFileName<>"." ALORS
SI
fRep(Remplace(lpFileName,generique,"")+WFD:cFileName,frRépertoire)<>""
ALORS
TypeRencontre=1
SINON
TypeRencontre=2
FIN

SI Tracer ALORS
Message(Remplace(lpFileName,generique,"")+WFD:cFileName)
Multitâche(-1)
FIN

SI TypeRencontre=type OU type=3 ALORS
SI Trier ALORS
MemRecherche("ZM_TMPLISTE",TypeRencontre+Remplace(lpFileName,generique,"")+WFD:cFileName)
SI MemEnDehors("ZM_TMPLISTE") ALORS
// liste=liste+remplace(lpFileName,"*.*","")+WFD:cFileName

SI TypeRencontre=1 ALORS
// Répertoire
MemAjoute("ZM_TMPLISTE",TypeRencontre+Remplace(lpFileName,generique,"")+WFD:cFileName,Remplace(lpFileName,generique,"")+WFD:cFileName+TAB+"R")
SINON
// Fichier
MemAjoute("ZM_TMPLISTE",TypeRencontre+Remplace(lpFileName,generique,"")+WFD:cFileName,Remplace(lpFileName,generique,"")+WFD:cFileName+TAB+"F")
FIN
MemTrie("ZM_TMPLISTE")
FIN
SINON
SI liste<>"" ALORS liste = liste+RC
SI TypeRencontre=1 ALORS
liste=liste+Remplace(lpFileName,generique,"")+WFD:cFileName+TAB+"R"
SINON
liste=liste+Remplace(lpFileName,generique,"")+WFD:cFileName+TAB+"F"
FIN
FIN
FIN
FIN
r = AppelDLL32("kernel32", "FindNextFileA", hFile, &WFD)
FIN
FIN
r = AppelDLL32("kernel32", "FindClose", hFile)
FIN

SI Tracer ALORS
Message()
FIN

SI Trier
MemPremier("ZM_TMPLISTE")
TANTQUE PAS MemEnDehors("ZM_TMPLISTE")
SI liste<>"" ALORS liste = liste+RC
liste=liste+MemRécupère("ZM_TMPLISTE",MemEnCours("ZM_TMPLISTE"))
MemSuivant("ZM_TMPLISTE")
FIN
FIN
MemSupprimeTout("ZM_TMPLISTE")

RENVOYER Remplace(liste,"","")

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Fabrice Guillaume
Bonjour Pierre,

Je te remercie pour ce bout de code, toutefois.... pourrais tu m'expliquer
un peu plus.
Ceci est une procédure local, global ? Tout ce code est à mettre dans la
procédure ? Quel objet appelle cette procédure ? Peux tu m'en dire
davantage.
Je te remercie par avance

Bonne journée et bon week end

Cordialement

Fabrice
Avatar
Pierre BOUSQUET
j'ai créé un arbre, à l'init j'appelle la procédure avec chemin="", il
me liste alors tous les disques. Pour chaque disque j'ajoute dans
l'arbre un fils ".", par exemple
arbreajoute(monarbre,"c:")
arbreajoute(monarbre,"c:"+TAB+".")

lorsque l'utilisateur ouvre l'arbre c:, je détecte que le 1er fils est
un point, j'execute alors de nouveau la procedure avec comme chemin la
valeur de l'arbre (c:), je supprime le fils "." et alimente avec les
valeurs retournées par la fonction et ainsi de suite jusqu'à ce que la
fonction me renvoie une chaine vide.

En fait l'arboresence des disques et répertoires et recherchées en
fonction des clics de l'utilisateur

Suis-je clair ?

Fabrice Guillaume vient de nous annoncer :
Bonjour Pierre,

Je te remercie pour ce bout de code, toutefois.... pourrais tu m'expliquer
un peu plus.
Ceci est une procédure local, global ? Tout ce code est à mettre dans la
procédure ? Quel objet appelle cette procédure ? Peux tu m'en dire
davantage.
Je te remercie par avance

Bonne journée et bon week end

Cordialement

Fabrice




--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Fabrice Guillaume
Oui très clair, je te remercie et te souhaite un très bon week end

Salutations

Fabrice

"Pierre BOUSQUET" a écrit dans le message de news:

j'ai créé un arbre, à l'init j'appelle la procédure avec chemin="", il
me liste alors tous les disques. Pour chaque disque j'ajoute dans
l'arbre un fils ".", par exemple
arbreajoute(monarbre,"c:")
arbreajoute(monarbre,"c:"+TAB+".")

lorsque l'utilisateur ouvre l'arbre c:, je détecte que le 1er fils est
un point, j'execute alors de nouveau la procedure avec comme chemin la
valeur de l'arbre (c:), je supprime le fils "." et alimente avec les
valeurs retournées par la fonction et ainsi de suite jusqu'à ce que la
fonction me renvoie une chaine vide.

En fait l'arboresence des disques et répertoires et recherchées en
fonction des clics de l'utilisateur

Suis-je clair ?

Fabrice Guillaume vient de nous annoncer :
> Bonjour Pierre,
>
> Je te remercie pour ce bout de code, toutefois.... pourrais tu


m'expliquer
> un peu plus.
> Ceci est une procédure local, global ? Tout ce code est à mettre dans la
> procédure ? Quel objet appelle cette procédure ? Peux tu m'en dire
> davantage.
> Je te remercie par avance
>
> Bonne journée et bon week end
>
> Cordialement
>
> Fabrice


--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "