shellexplorer — u_pbt_shellexplorer #
← Referência dos componentes · Índice do guia
A árvore da shell do Windows: Ambiente de trabalho, Este PC, unidades, pastas, Rede — com os ícones reais do posto.
▶ Ver ao vivo — Aplicação de demonstração, mosaico Shell explorer : a pré-visualização, o código que o produz e esta página, lado a lado.
Em resumo #
| Userobject | u_pbt_shellexplorer |
| Serve para | Escolher uma pasta, ou navegar, sem sair da aplicação |
| Princípio | Você diz onde começar; a shell diz o que há, e você recebe o que o utilizador escolheu |
Arranque rápido #
// 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
A shell, não o sistema de ficheiros #
O componente não enumera directórios: interroga a shell (IShellFolder). É isso que põe na árvore Este PC, a Rede, a Reciclagem e as pastas virtuais — a árvore que o utilizador já conhece, em vez de uma lista de unidades.
Cada nó é identificado pelo seu nome de análise: um caminho para o que está no disco, uma forma ::{GUID} para o resto. É a única chave que a shell sabe reler — logo a única a guardar.
🚨
ue_selecteddá-lhe o nome ALÉM do caminho, e isso não é uma comodidade. O nome apresentado de uma pasta virtual não é o fim do seu caminho: «Este PC» não tem fim. Uma aplicação que corta o caminho mostrará::{20D04FE0-…}ao seu utilizador.
A árvore constrói-se à medida que se percorre: um ramo só é pedido ao abrir. Ler um disco inteiro para desenhar uma árvore congelaria a aplicação durante minutos numa unidade de rede — e esse é o caso normal nas aplicações onde esta biblioteca vive.
// Event ue_selected : the path AND the display name
st_chemin.text = as_path
st_nom.text = as_name
Propriedades #
| Propriedade | Tipo | Predefinição | Papel |
|---|---|---|---|
is_root | string | "" | Onde a árvore começa (constantes ROOT_*). Vazio = a raiz da shell. Um caminho começa aí em vez disso |
ib_show_files | boolean | false | Mostra também os ficheiros. Falso por predefinição: uma árvore serve para escolher um lugar, e uma pasta com quatro mil ficheiros já não é um lugar |
is_theme_style | string | fluent | Estilo visual do componente (constantes THEME_STYLE_*) |
is_theme_mode | string | light | Variante clara ou escura (constantes THEME_MODE_*) |
il_theme_accent | long | -1 | Cor de acento deste componente (-1 = acento do tema) |
is_tooltip | string | "" | Dica simples mostrada ao passar sobre o componente |
is_super_tooltip_title | string | "" | Título da dica enriquecida (tem precedência sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto da dica enriquecida (marcação rica aceite) |
is_super_tooltip_image | string | "" | Imagem da dica enriquecida |
Métodos #
| Método | Papel |
|---|---|
of_expand ( string as_path ) | Abre um ramo já desenhado. Um ramo que ninguém alcançou não pode abrir. Devolve 0 depois de aplicado, -2 se o componente não estiver criado |
of_collapse ( string as_path ) | Fecha um ramo. Os seus filhos ficam, por isso reabri-lo não custa nada. Devolve 0 depois de aplicado, -2 se o componente não estiver criado |
of_select ( string as_path ) | Selecciona um nó já desenhado, e comunica-o como um clique faria |
of_refresh ( ) | Reconstrói a árvore desde a raiz. O que estava aberto fecha-se: a shell não tem como dizer o que mudou |
of_selected_key ( ) | O nome de análise do nó escolhido. A única chave que a shell sabe reler |
of_selected_name ( ) | O nome apresentado, tal como o Explorador o mostra. Nunca o deduza do caminho |
of_reset ( ) | Volta à raiz da shell, só pastas, nada seleccionado. Devolve 0 depois de aplicado, -2 se o componente não estiver criado |
Eventos #
| Evento | Disparado quando |
|---|---|
ue_selected (string as_path, string as_name) | Um nó foi escolhido: o seu caminho e o seu nome apresentado |
ue_expanded (string as_path) | Um ramo abre-se. O evento parte antes de os filhos chegarem — a shell é interrogada nesse momento, e numa partilha de rede demora |
ue_activated (string as_path) | Duplo clique, ou tecla Enter. É aí que uma aplicação abre a pasta, a carrega, ou fecha um selector |
ue_error (string as_message) | A shell recusa um ramo — unidade desligada, pasta sem direitos. A árvore continua utilizável |
Os ícones vêm da lista de imagens do sistema do posto, não de nós: um ficheiro
.dwgleva o ícone do AutoCAD se o AutoCAD estiver instalado, e o genérico se não. É o que o utilizador espera, e nada mais o pode dar.
Exemplos #
Começar noutro sítio que não o ambiente de trabalho #
// 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"
Abrir o que o utilizador validou #
// Event ue_activated : a double-click, or Enter
of_ouvrir_dossier(as_path)
Boas práticas #
- 🚨 Guarde
of_selected_key(), mostreof_selected_name(). Cortar o caminho para uma etiqueta funciona comC:\Clientese mostra::{20D04FE0-…}para Este PC. - Deixe
ib_show_filesa falso enquanto procura uma pasta. Os ficheiros tornam a árvore ilegível e lenta. - Preveja
ue_errordesde a primeira versão: uma unidade de rede desligada é o caso comum, não a excepção. - Use
ue_activated, nãoue_selected, para validar. Seleccionar é olhar; fazer duplo clique é decidir. - Não actualize em ciclo.
of_refreshfecha tudo: chame-o quando o utilizador pedir, não num temporizador. - Um caminho de partida estreito vale mais que uma árvore inteira quando a aplicação já sabe onde trabalha: comece em
C:\Projectos.
Herdado da base comum #
Estes membros existem em todos os componentes visuais — não são próprios deste. São detalhados uma só vez, nos capítulos transversais; esta tabela apenas diz onde os ler.
| Membros | Função | Detalhado em |
|---|---|---|
of_reset | Repor o componente a zero | 3.6 Repor um componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atalhos de teclado do componente | 3.5 Os atalhos de teclado |
of_is_created · of_is_ready · of_get_last_error | Se nasceu, se está pronto, o que falhou | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar a renderização como imagem | 3.8 Exportar a representação como imagem |
of_set_redraw | Agrupar as alterações num único repinte | 3.10 Boas práticas |
of_preload_icons | Ícones mostrados sem atraso | Apresentação instantânea: of_icon |
of_set_translation | Traduzir uma legenda do componente | 5.2 Adaptar uma etiqueta: of_set_translation |
of_focus_webview | Dar o foco ao componente | 6.4 Teclado e focus |
of_print · of_print_to_pdf | Imprimir, ou escrever um PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar uma propriedade pelo nome | 3.1 O motor de propriedades |
Duas ajudas não são herdadas: of_icon e of_escape_markup vivem em n_pbt_utils. Declare um — n_pbt_utils lnv_utils, nada a criar — e chame-as nele.