Grade de exibição de propriedades

A janela Propriedades exibe campos dentro de uma grade. A coluna da esquerda contém os nomes das propriedades; A coluna da direita contém os valores de propriedade.

Trabalhar com a grade

A lista de duas colunas mostra propriedades independentes de configuração que podem ser alteradas em tempo de design e suas configurações atuais. Observe que todas as propriedades podem não ser mostradas. Uma propriedade pode ser definida como oculta, por exemplo, implementando o HideProperty método. Especificamente, para ocultar propriedades que têm propriedades filhas:

  1. Defina o pfDisplay parâmetro como DisplayChildPropertiesFALSE.

  2. Defina o pfHide parâmetro como HidePropertyTRUE.

Para enviar informações por push para a janela Propriedades , o IDE usa ISelectionContainero . ISelectionContainer é chamado por VSPackages para cada janela que contém objetos selecionáveis com propriedades relacionadas a serem exibidas na janela Propriedades . Implementação de chamadas pelo Gerenciador de ISelectionContainer Soluções GetProperty usando __VSHPROPID. VSHPROPID_BrowseObject na hierarquia do projeto para adquirir os objetos navegáveis na hierarquia.

Se o VSPackage não suportar __VSHPROPID. VSHPROPID_BrowseObject, o IDE tenta usar GetProperty o valor para __VSHPROPID. VSHPROPID_SelContainer que o item ou itens de hierarquia sejam fornecidos.

Seu projeto VSPackage não precisa ser criado ISelectionContainer porque o pacote de janela fornecido pelo IDE que o implementa (por exemplo, Gerenciador de Soluções) constrói ISelectionContainer em seu nome.

ISelectionContainer consiste em três métodos que são chamados pelo IDE:

  • CountObjects contém o número de objetos selecionados para serem exibidos na janela Propriedades .

  • GetObjects retorna os IDispatch objetos selecionados para serem exibidos na janela Propriedades .

  • SelectObjects possibilita que qualquer um dos objetos retornados por GetObjects seja selecionado pelo usuário. Isso permite que o VSPackage atualize visualmente a seleção exibida para o usuário na interface do usuário.

A janela Propriedades extrai informações dos IDispatch objetos para recuperar as propriedades que estão sendo navegadas. O navegador Propriedades usa IDispatch para perguntar ao objeto quais propriedades ele oferece suporte consultando ITypeInfo, que é obtido de IDispatch::GetTypeInfo. Em seguida, o navegador usa esses valores para preencher a janela Propriedades e alterar os valores de propriedades individuais exibidas na grade. As informações de propriedades são mantidas dentro do próprio objeto.

Como os objetos retornados oferecem suporte IDispatch, o chamador pode obter informações como o nome do objeto chamando ou ITypeInfo::InvokeIDispatch::Invoke com um identificador de despacho predefinido (DISPID) que representa as informações desejadas. Os DISPIDs declarados são negativos para garantir que não entrem em conflito com identificadores definidos pelo usuário.

A janela Propriedades exibe diferentes tipos de campos, dependendo dos atributos de propriedades específicas de um objeto selecionado. Esses campos incluem caixas de edição, listas suspensas e links para caixas de diálogo personalizadas do editor.

  • Os valores contidos em uma lista enumerada são recuperados por uma GetObjects consulta ao IDispatch. Os valores obtidos de uma lista enumerada podem ser alterados na grade de propriedades clicando duas vezes no nome do campo ou clicando no valor e selecionando o novo valor na lista suspensa. Para propriedades que têm configurações predefinidas de listas enumeradas, clique duas vezes no nome da propriedade na lista Propriedades percorre as opções disponíveis. Para propriedades predefinidas com apenas duas opções, como true/false, clique duas vezes no nome da propriedade para alternar entre as opções.

  • Se HasDefaultValue for false, indicando que o valor foi alterado, o valor será exibido em negrito. CanResetPropertyValue é usado para determinar se o valor pode ser redefinido para o valor original. Em caso afirmativo, você pode voltar ao padrão clicando com o botão direito do mouse no valor e escolhendo Redefinir no menu exibido. Caso contrário, você terá que alterar o valor de volta para o padrão manualmente. IVsPerPropertyBrowsing Também permite localizar e ocultar os nomes das propriedades exibidas durante o tempo de design, mas não afeta os nomes de propriedades exibidos durante o tempo de execução.

  • Clicar no botão de reticências (...) exibe uma lista de valores de propriedade dos quais o usuário pode selecionar (como um seletor de cores ou uma lista de fontes). IProvidePropertyBuilder fornece esses valores.

Confira também