Controles ActiveX MFC: páginas de propriedade

As páginas de propriedades permitem que um usuário de controle ActiveX exiba e altere as propriedades de controle ActiveX. Essas propriedades são acessadas invocando uma caixa de diálogo de propriedades de controle, que contém uma ou mais páginas de propriedade que fornecem uma interface gráfica personalizada para exibir e editar as propriedades de controle.

Importante

O ActiveX é uma tecnologia herdada que não deve ser usada para novo desenvolvimento. Para mais informações sobre tecnologias modernas que substituem o ActiveX, confira Controles do ActiveX.

As páginas de propriedades de controle ActiveX são exibidas de duas maneiras:

  • Quando o verbo Propriedades do controle (OLEIVERB_PROPERTIES) é invocado, o controle abre uma caixa de diálogo de propriedade modal que contém as páginas de propriedade do controle.

  • O contêiner pode exibir sua própria caixa de diálogo modeless que mostra as páginas de propriedade do controle selecionado.

A caixa de diálogo propriedades (ilustrada na figura a seguir) consiste em uma área para exibir a página de propriedade atual, guias para alternar entre páginas de propriedade e uma coleção de botões que executam tarefas comuns, como fechar a caixa de diálogo da página de propriedade, cancelar quaisquer alterações feitas ou aplicar imediatamente quaisquer alterações ao controle ActiveX.

Properties dialog box for Circ3.
Caixa de diálogo Propriedades

Este artigo aborda tópicos relacionados ao uso de páginas de propriedades em um controle ActiveX. Estão incluídos:

Para obter mais informações sobre como usar páginas de propriedades em um controle ActiveX, consulte os seguintes artigos:

Para obter informações sobre como usar folhas de propriedades em um aplicativo MFC diferente de um controle ActiveX, consulte Folhas de Propriedades.

Implementando a Página de propriedade padrão

Se você usar o Assistente de controle ActiveX para criar seu projeto de controle, o Assistente de Controle ActiveX fornecerá uma classe de página de propriedade padrão para o controle derivado da classe COlePropertyPage. Inicialmente, essa página de propriedade está em branco, mas você pode adicionar qualquer controle de caixa de diálogo ou conjunto de controles a ela. Como o Assistente de controle ActiveX cria apenas uma classe de página de propriedade por padrão, classes de página de propriedade adicionais (também derivadas de COlePropertyPage) devem ser criadas usando o Modo de exibição de classe. Para obter mais informações sobre este procedimento, consulte Controles ActiveX do MFC: Adicionando outra página de propriedade personalizada.

Implementar uma página de propriedade (nesse caso, o padrão) é um processo de três etapas:

Para implementar uma página de propriedade

  1. Adicione uma classe derivada deCOlePropertyPage ao projeto de controle. Se o projeto foi criado usando o Assistente de controle ActiveX (como neste caso), a classe de página de propriedade padrão já existe.

  2. Use o editor de diálogo para adicionar quaisquer controles ao modelo de página de propriedade.

  3. Personalize a função DoDataExchange da classe derivada de COlePropertyPage para trocar valores entre o controle de página de propriedade e o controle ActiveX.

Para exemplificar, os procedimentos a seguir usam um controle simples (chamado "Amostra"). O exemplo foi criado usando o Assistente de Controle ActiveX e contém apenas a propriedade Legenda fixa.

Adicionando controles a uma Página de propriedades

Adicionar controles a uma página de propriedades

  1. Com o projeto de controle aberto, abra o Modo de Exibição de Recursos.

  2. Clique com o botão direito no ícone de diretório Diálogo.

  3. Abra a caixa de diálogo IDD_PROPPAGE_SAMPLE.

    O Assistente de controle ActiveX acrescenta o nome do projeto ao final da ID da caixa de diálogo, nesse caso, Amostra.

  4. Arraste e solte o controle selecionado da Caixa de Ferramentas na área da caixa de diálogo.

  5. Para este exemplo, um controle de rótulo de texto "Caption :" e um controle de caixa de edição com um identificador IDC_CAPTION são suficientes.

  6. Clique em Salvar na Barra de ferramentas para salvar suas alterações.

Agora que a interface do usuário foi modificada, você precisa vincular a caixa de edição à propriedade Caption. Isso é feito na seção a seguir editando a função CSamplePropPage::DoDataExchange.

Personalizando a função DoDataExchange

A função CWnd::D oDataExchange da página de propriedades permite vincular valores de página de propriedade com os valores reais das propriedades no controle. Para estabelecer links, você deve mapear os campos de página de propriedade apropriados para suas respectivas propriedades de controle.

Esses mapeamentos são implementados usando as funções DDP_ da página de propriedades. As funções DDP_ funcionam como as funções DDX_ usadas em caixas de diálogo MFC padrão, com uma exceção. Além da referência a uma variável de membro, funções DDP_ levam o nome da propriedade de controle. Veja a seguir uma entrada típica na função DoDataExchange para uma página de propriedade.

DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));

Essa função associa a variável de membro m_caption da página de propriedade à Legenda, usando a função DDP_TEXT.

Depois de inserir o controle de página de propriedade, é necessário estabelecer um vínculo entre o controle de página de propriedade, IDC_CAPTION e a propriedade de controle real, Caption, usando a função DDP_Text conforme descrito acima.

As Páginas de propriedades estão disponíveis para outros tipos de controle de caixa de diálogo, como caixas de seleção, botões de opção e caixas de listagem. A tabela a seguir lista todo o conjunto de funções DDP_ das páginas de propriedades e suas finalidades:

Funções da página de propriedades

Nome da função Use essa função para vincular
DDP_CBIndex A cadeia de caracteres selecionada em uma caixa de combinação com a propriedade de um controle.
DDP_CBString A cadeia de caracteres selecionada em uma caixa de combinação com a propriedade de um controle. A cadeia de caracteres selecionada pode começar com as mesmas letras que o valor da propriedade, mas não precisa corresponder totalmente a ela.
DDP_CBStringExact A cadeia de caracteres selecionada em uma caixa de combinação com a propriedade de um controle. A cadeia de caracteres selecionada e o valor da cadeia de caracteres da propriedade devem ter correspondência exata.
DDP_Check Uma caixa de seleção com uma propriedade de controle.
DDP_LBIndex A cadeia de caracteres selecionada em uma caixa de listagem com a propriedade de um controle.
DDP_LBString A cadeia de caracteres selecionada em uma caixa de listagem com a propriedade de um controle. A cadeia de caracteres selecionada pode começar com as mesmas letras que o valor da propriedade, mas não precisa corresponder totalmente a ela.
DDP_LBStringExact A cadeia de caracteres selecionada em uma caixa de listagem com a propriedade de um controle. A cadeia de caracteres selecionada e o valor da cadeia de caracteres da propriedade devem ter correspondência exata.
DDP_Radio Um botão de opção com uma propriedade de controle.
DDP_Text Texto com uma propriedade de controle.

Confira também

Controles ActiveX do MFC
Classe COlePropertyPage