DRIVEVIEW ==> ARBORESCENCE AFFICHANT LES LECTEURS LOGIQUES ET PHYSIQUES

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 26 mars 2007 à 00:48
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 27 mars 2007 à 14:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41956-driveview-arborescence-affichant-les-lecteurs-logiques-et-physiques

violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
27 mars 2007 à 14:32
Re, alors :

- on accède aux fonctions de la classe clsDiskInfo (donc toute les infos disques y compris strDriveType) avec la méthode Drives du UserControl
- je garde la v5 du TreeView
- j'ai ajouté les propriétés Nodes et SelectedItem en écriture
- ajouté une key dans le IMG pour pouvoir afficher les disques inaccessibles (voir exemple et screenshot pour comprendre)
- MAJ de l'exemple et du screen (le voir pour comprendre)


Merci pour la note ;)
@+
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 mars 2007 à 14:16
on s'est croisé
beh ma réponse peut être une piste ;)
(sinon je dirais 5, idem pour l'imagelist, effets possibles pour le 32px si tu veux changer les icônes. à vérifier)

++ ;)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 mars 2007 à 14:09
beh voilà c'est tout bon :p
reste éventuellement à personnaliser l'affichage du treeview (voir dans les sources de Yomm je crois)

tite question, comment accède-t'on à GetStringDriveType par l'UC?
si on ne peut pas (pas trouvé en tout cas), çà peut être utile (tant string que valeur int)

un 10 de plus, beau boulot ;)
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
27 mars 2007 à 13:53
Heu en fait non, j'ai pas fini ;)

Je vais rajouter également les properties Nodes et SelectedItem en écriture.



Par contre j'hésite : je prend un TreeView v5.0 (actuellement c'en est un) ou un TreeView v6.0 ??

Sachant que le 5 a l'avantage d'accepter le style XP avec un *.manifest, ce qui n'est pas le cas du 6. Mais sachant également que le 6 à de nouvelles properties (notamment Forecolor qui est important).

?
@+
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
27 mars 2007 à 13:40
Salut, et merci ;)

Pour le enum, je l'ai fait.
Pour le bug de chez toi : c'est normal, j'avais oublié de changer une valeur (fonction GetLogicalDriveList) dans la dernière mise à jour ==> corrigé.
Pour le premier bug que tu m'avais cité ("physique") ==> je n'avais en fait pas résolu en profondeur le bug, maintenant c'est fait.
Et j'ai également mis à jour le screen ;)


Cette fois c'est bon je crois !!

@+
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 mars 2007 à 12:14
salut,
très bon ;)
par contre il faut mettre un enum pour le borderstyle (essaye avec >1....)

et une bizzarerie : chez moi n'affiche que les 2 permiers disques logiques (sur bien plus)
une idée?

++
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
26 mars 2007 à 19:21
Voilà, j'ai mis à jour, mais pas le screenshot ;)

Enfin bon, çà ne bug plus en réalité^^
@+
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
26 mars 2007 à 19:00
Ah pardon ;)
Mais y a t-il un gain de vitesse à utiliser Do While ... Loop, ou ce n'est que de la forme ?

Merci pour les précisions, @+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 13:38
je me suis ma exprimé :
While...Wend c'est un héritage des versions de VB plus anciennes...
"maintenant", on dit Do While ... Loop

pour le Mid dans la partie gauche, c'est une petite astuce qui permet d'eviter de réallouer n fois l'espace necessaire au stockage de la chaine ; les caractères sont modifiés sur place...(pour ca que je fais un PermuteString = s, afin d'allouer une première fois une chaine de taille suffisante ^^)
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
26 mars 2007 à 13:14
Salut, merci pour les commentaires ;)
Dans l'ordre :

PCPT ==> lol oui, la faute au copier/coller ;) Je changerais ce soir.

Galain ==> héhé oui, j'aime bien les usercontrol et les modules de classe, comme çà on peut réutiliser son code déjà prêt sans y retoucher^^ Et merci pour la note ;)

Romagny13 ==> Ce bon vieux VB6 tourne toujours bien, donc je garde ^^ Par contre c'est Vista qui va peut être passer à la trappe...la faute à de nombreux problèmes de performances et de compatibilité (et ces ***** de BSOD)

Renfield ==> merci pour les conseils, je note et je mettrais à jour
-"String$(255, 0) => Space$(255)..." -> c'est bon à savoir
-VB4 -> erf, je savais pas que VB4 connaissais pas Wend
-"Mid$(PermuteString, x, 2) = Mid$(s, x + 1, 1) & Mid$(s, x, 1)" -> je ne pensais pas qu'on pouvais mettre du Mid$ dans la partie gauche de l'affectation ! Je viens encore d'apprendre un truc...

Merci, @+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 09:25
que de progrès ces derniers temps, c'est du bon boulot...

survollé le code, j'ai vu :

If hDrive = INVALID_HANDLE_VALUE Then
CloseHandle hDrive
pas besoin de faire le CloseHandle, pas de handle valide a fermer.

pour le GetMediaType, tu devrai mettre un
Case Else: GetMediaType = "Format unknown"

While...Wend a remplacer par Do While...Loop (VB4...)

String$(255, 0) => Space$(255)
certain bench disent effectivement que c'est plus rapide avec Space$

GetLogicalDrivesList pourrait finir ainsi :

lngLen = (lngLen \ 4) - 1

'redimensionne le tableau
ReDim s(lngLen)

For x = 0 To lngLen
s(x) = Mid$(strBuffer, 4 * x + 1, 3)
Next x

car là, tu conserve le \0 final, et tu récupère un element supplementaire (vide) dans ton tableau...

PermuteString pourrait etre :
Private Function PermuteString(ByRef s As String) As String
Dim x As Long
PermuteString = s

For x = 1 To Len(s) Step 2
Mid$(PermuteString, x, 2) = Mid$(s, x + 1, 1) & Mid$(s, x, 1)
Next x
End Function
(moins d'allocation nécessaires pour la chaine.)
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
26 mars 2007 à 01:14
humm j'aurais bien regarder ... mais c'est en vb6 :x
tu fais du vb6 sur Vista :p ?
++
Profil bloqué
26 mars 2007 à 01:01
Très beau travail
Je vois que tu es un assidu des User Control et un as en la matière
10/10
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 mars 2007 à 00:48
salut,
petite erreur "disques logiques" "disques logiques" ;)
(voir capture)

je regarderai le code mardi
bonne soirée