PBToolboxAI v2 ← Site

shellexplorer — u_pbt_shellexplorer #

← Référence des composants · Sommaire du guide

L'arborescence du shell Windows : Bureau, Ce PC, lecteurs, dossiers, Réseau — avec les vraies icônes du poste.

▶ Le voir en vrai — Application de démonstration, tuile Shell explorer : l'aperçu, le code qui le produit et cette page, côte à côte.


En bref #

Userobjectu_pbt_shellexplorer
Sert àChoisir un dossier, ou naviguer, sans quitter l'application
PrincipeVous dites où commencer ; le shell dit ce qu'il y a, et vous recevez ce que l'utilisateur choisit

Démarrage rapide #

// Nothing to build : the tree starts at the shell root on its own
// (Desktop, This PC, Network - what the user already knows)
uo_tree.is_root = u_pbt_shellexplorer.ROOT_DESKTOP

Le shell, pas le système de fichiers #

Le composant n'énumère pas des répertoires : il interroge le shell (IShellFolder). C'est ce qui met dans l'arbre Ce PC, le Réseau, la Corbeille et les dossiers virtuels — c'est-à-dire l'arbre que l'utilisateur connaît, au lieu d'une liste de lecteurs.

Chaque nœud est identifié par son nom d'analyse : un chemin pour ce qui est sur le disque, une forme ::{GUID} pour le reste. C'est la seule clé que le shell sait relire — donc la seule à stocker si vous voulez rouvrir une branche demain.

🚨 ue_selected vous donne le nom EN PLUS du chemin, et ce n'est pas une commodité. Le nom affiché d'un dossier virtuel n'est pas la fin de son chemin : « Ce PC » n'a pas de fin. Une application qui découpe le chemin pour en tirer un libellé affichera ::{20D04FE0-…} à son utilisateur.

L'arbre se construit au fur et à mesure qu'on le parcourt : une branche n'est demandée qu'à son ouverture. Lire un disque entier pour dessiner un arbre gèlerait l'application pendant des minutes sur un lecteur réseau — et c'est le cas normal dans les applications où cette bibliothèque vit.

// Event ue_selected : the path AND the display name
st_chemin.text = as_path
st_nom.text = as_name

Propriétés #

PropriétéTypeDéfautRôle
is_rootstring""Où commence l'arbre (constantes ROOT_*). Vide = la racine du shell. Un chemin y commence à la place
ib_show_filesbooleanfalseAffiche aussi les fichiers. Faux par défaut : un arbre sert à choisir un lieu, et un dossier de quatre mille fichiers n'est plus un lieu
is_theme_stylestringfluentStyle visuel du composant (constantes THEME_STYLE_*)
is_theme_modestringlightVariante claire ou sombre (constantes THEME_MODE_*)
il_theme_accentlong-1Couleur d'accent de ce composant (-1 = accent du thème)
is_tooltipstring""Info-bulle simple affichée au survol du composant
is_super_tooltip_titlestring""Titre de l'info-bulle enrichie (prend le pas sur is_tooltip)
is_super_tooltip_textstring""Texte de l'info-bulle enrichie (balisage riche accepté)
is_super_tooltip_imagestring""Image de l'info-bulle enrichie

Méthodes #

MéthodeRôle
of_expand ( string as_path )Ouvre une branche déjà dessinée. Une branche que personne n'a atteinte ne peut pas s'ouvrir : l'arbre se construit en marchant. Renvoie 0 une fois appliqué, -2 si le composant n'est pas créé
of_collapse ( string as_path )Ferme une branche. Ses enfants restent en place, donc la rouvrir ne coûte rien. Renvoie 0 une fois appliqué, -2 si le composant n'est pas créé
of_select ( string as_path )Sélectionne un nœud déjà dessiné, et le rapporte comme le ferait un clic
of_refresh ( )Reconstruit l'arbre depuis la racine. Ce qui était ouvert se referme : le shell n'a aucun moyen de dire ce qui a changé
of_selected_key ( )Le nom d'analyse du nœud choisi. La seule clé que le shell sait relire
of_selected_name ( )Le nom affiché, tel que l'Explorateur le montre. Ne le déduisez jamais du chemin
of_reset ( )Revient à la racine du shell, dossiers seuls, rien de sélectionné. Renvoie 0 une fois appliqué, -2 si le composant n'est pas créé

Événements #

ÉvénementDéclenché quand
ue_selected (string as_path, string as_name)Un nœud a été choisi : son chemin et son nom d'affichage
ue_expanded (string as_path)Une branche s'ouvre. L'événement part avant l'arrivée des enfants — le shell est interrogé à cet instant, et sur un partage réseau il prend son temps
ue_activated (string as_path)Double-clic, ou touche Entrée. C'est là qu'une application ouvre le dossier, le charge, ou referme un sélecteur
ue_error (string as_message)Le shell refuse une branche — lecteur déconnecté, dossier sans droits. L'arbre reste utilisable

Les icônes viennent de l'imagelist système du poste, pas de nous : un fichier .dwg porte l'icône d'AutoCAD si AutoCAD est installé, et l'icône générique sinon. C'est ce que l'utilisateur attend, et rien d'autre ne peut le donner.


Exemples #

Commencer ailleurs qu'au Bureau #

// Only the drives, nothing above them
uo_tree.is_root = u_pbt_shellexplorer.ROOT_COMPUTER
// Or somewhere the application already knows
uo_tree.is_root = "C:\Projects"

Ouvrir ce que l'utilisateur a validé #

// Event ue_activated : a double-click, or Enter
of_ouvrir_dossier(as_path)

Bonnes pratiques #

Hérité du socle commun #

Ces membres existent sur tous les composants visuels — ils ne sont pas propres à celui-ci. Ils sont détaillés une seule fois, dans les chapitres transverses ; cette table dit seulement où les lire.

MembresRôleDétaillé dans
of_resetRemettre le composant à zéro3.6 Remettre un composant à zéro : of_reset()
of_register_shortcut · of_clear_shortcutsRaccourcis clavier du composant3.5 Les raccourcis clavier
of_is_created · of_is_ready · of_get_last_errorS'il est né, s'il est prêt, ce qui a échoué3.7 Diagnostic
of_save_as_png · of_save_as_jpgExporter le rendu en image3.8 Exporter le rendu en image
of_set_redrawGrouper les modifications en un seul repaint3.10 Bonnes pratiques
of_preload_iconsIcônes affichées sans délaiAffichage instantané : of_icon
of_set_translationTraduire un libellé du composant5.2 Adapter un libellé : of_set_translation
of_focus_webviewDonner le focus au composant6.4 Clavier et focus
of_print · of_print_to_pdfImprimer, ou écrire un PDF6.9 Imprimer

Deux aides ne sont pas héritées : of_icon et of_escape_markup vivent sur n_pbt_utils. Déclarez-en une — n_pbt_utils lnv_utils, rien à créer — et appelez-les dessus.


← Référence des composants · Sommaire du guide