Partilhar via


Criando uma folha de propriedades sem janela restrita

Normalmente, as folhas de propriedades criadas serão modais. Ao usar uma folha de propriedades modal, o usuário deve fechar a folha de propriedades antes de usar qualquer outra parte do aplicativo. Este artigo descreve os métodos que você pode empregar para criar uma folha de propriedades sem modo que permite que o usuário mantenha a folha de propriedades aberta ao usar outras partes do aplicativo.

Para exibir uma folha de propriedades como uma caixa de diálogo sem modo em vez de uma caixa de diálogo modal, chame CPropertySheet::Create em vez de DoModal. Você também vai precisar implementar algumas tarefas extras para dar suporte a uma folha de propriedades sem modo.

Uma das tarefas adicionais é trocar dados entre a folha de propriedades e o objeto externo que ela está modificando quando a folha de propriedades estiver aberta. Geralmente, essa é a mesma tarefa das caixas de diálogo de sem modo padrão. Parte dessa tarefa é implementar um canal de comunicação entre a folha de propriedades sem modo e o objeto externo ao qual as configurações de propriedade se aplicam. Essa implementação será muito mais fácil se você derivar uma classe do CPropertySheet para sua folha de propriedades de sem modo. Este artigo pressupõe que você tenha feito dessa forma.

Um método de se comunicar entre a folha de propriedades sem modo e o objeto externo (a seleção atual em um modo de exibição, por exemplo) é definir um ponteiro da folha de propriedades para o objeto externo. Defina uma função (chamada de algo como SetMyExternalObject) na classe derivada CPropertySheet para alterar o ponteiro sempre que o foco mudar de um objeto externo para outro. A função SetMyExternalObject precisa redefinir as configurações de cada página de propriedade para refletir o objeto externo recém-selecionado. Para fazer isso, a função SetMyExternalObject deve ser capaz de acessar os objetos CPropertyPage pertencentes à classe CPropertySheet.

A maneira mais conveniente de fornecer acesso a páginas de propriedades dentro de uma folha de propriedades é inserir os objetos CPropertyPage no objeto derivado CPropertySheet. A inserção de objetos CPropertyPage no objeto derivado CPropertySheet difere do design típico para caixas de diálogo modais, em que o proprietário da folha de propriedades cria os objetos CPropertyPage e os passa para a folha de propriedades por meio de CPropertySheet::AddPage.

Há muitas alternativas de interface do usuário para determinar quando as configurações da folha de propriedades sem modo devem ser aplicadas a um objeto externo. Uma alternativa é aplicar as configurações da página de propriedades atual sempre que o usuário alterar qualquer valor. Outra alternativa é fornecer um botão Aplicar, que permite que o usuário acumule alterações nas páginas de propriedades antes de confirmá-las no objeto externo. Para obter informações sobre maneiras de manipular o botão Aplicar, consulte o artigo Manipular o Botão Aplicar.

Confira também

Folhas de propriedades
Trocando dados
Trabalhando com caixas de diálogo no MFC