Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Como na maioria das caixas de diálogo, a troca de dados entre a folha de propriedades e o aplicativo é uma das funções mais importantes da folha de propriedades. Este artigo descreve como realizar essa tarefa.
A troca de dados com uma folha de propriedades é, na verdade, uma questão de troca de dados com as páginas de propriedades individuais da folha de propriedades. O procedimento para trocar dados com uma página de propriedades é o mesmo que para trocar dados com uma caixa de diálogo, uma vez que um objeto CPropertyPage é apenas um objeto CDialog especializado. O procedimento aproveita o recurso de troca de dados de diálogo (DDX) da estrutura, que troca dados entre controles em uma caixa de diálogo e variáveis membros do objeto de caixa de diálogo.
A diferença importante entre trocar dados com uma folha de propriedades e com uma caixa de diálogo normal é que a folha de propriedades tem várias páginas, portanto, você deve trocar dados com todas as páginas da folha de propriedades. Para obter mais informações sobre DDX, consulte Dialog Data Exchange and Validation.
O exemplo a seguir ilustra a troca de dados entre uma vista e duas páginas de uma folha de propriedades:
void CMyView::DoModalPropertySheet()
{
CPropertySheet propsheet;
CMyFirstPage pageFirst; // derived from CPropertyPage
CMySecondPage pageSecond; // derived from CPropertyPage
// Move member data from the view (or from the currently
// selected object in the view, for example).
pageFirst.m_nMember1 = m_nMember1;
pageFirst.m_nMember2 = m_nMember2;
pageSecond.m_strMember3 = m_strMember3;
pageSecond.m_strMember4 = m_strMember4;
propsheet.AddPage(&pageFirst);
propsheet.AddPage(&pageSecond);
if (propsheet.DoModal() == IDOK)
{
m_nMember1 = pageFirst.m_nMember1;
m_nMember2 = pageFirst.m_nMember2;
m_strMember3 = pageSecond.m_strMember3;
m_strMember4 = pageSecond.m_strMember4;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(NULL);
}
}