Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 usar para criar uma folha de propriedades modeless que permite ao usuário manter a folha de propriedades aberta ao usar outras partes do aplicativo.
Para exibir uma folha de propriedades como uma caixa de diálogo modeless em vez de como 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 está aberta. Geralmente, essa é a mesma tarefa das caixas de diálogo modeless padrão. Parte dessa tarefa está implementando um canal de comunicação entre a folha de propriedades modeless e o objeto externo ao qual as configurações de propriedade se aplicam. Essa implementação é muito mais fácil se você derivar uma classe de CPropertySheet para sua folha de propriedades de modelagem. Este artigo pressupõe que você tenha feito isso.
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 SetMyExternalObject função precisa redefinir as configurações de cada página de propriedade para refletir o objeto externo recém-selecionado. Para fazer isso, a SetMyExternalObject função deve ser capaz de acessar os objetos CPropertyPage que pertencem à CPropertySheet classe.
A maneira mais conveniente de fornecer acesso a páginas de propriedades dentro de uma folha de propriedades é inserir os CPropertyPage objetos no CPropertySheetobjeto derivado. Inserir 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 modeless 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 emiti-las ao objeto externo. Para obter informações sobre maneiras de lidar com o botão Aplicar, consulte o artigo Manipulando o botão Aplicar.
Consulte também
Folhas de Propriedades
Troca de dados
Trabalhando com caixas de diálogo no MFC