Intercambio de datos
Al igual que con la mayoría de los cuadros de diálogo, el intercambio de datos entre la hoja de propiedades y la aplicación es una de las funciones más importantes de la hoja de propiedades. En este artículo se describe cómo realizar esta tarea.
Intercambiar datos con una hoja de propiedades es una cuestión de intercambiar datos con las páginas de propiedades individuales de la hoja de propiedades. El procedimiento para intercambiar datos con una página de propiedades es el mismo que para intercambiar datos con un cuadro de diálogo, ya que un objeto CPropertyPage es simplemente un objeto CDialog especializado. El procedimiento aprovecha la utilidad de intercambio de datos de diálogo (DDX) del marco, que intercambia datos entre los controles de un cuadro de diálogo y las variables miembro del objeto de cuadro de diálogo.
La diferencia importante entre intercambiar datos con una hoja de propiedades y con un cuadro de diálogo normal es que la hoja de propiedades tiene varias páginas, por lo que debe intercambiar datos con todas las páginas de la hoja de propiedades. Para obtener más información sobre DDX, vea Intercambio y validación de datos de cuadro de diálogo.
En el ejemplo siguiente se muestra el intercambio de datos entre una vista y dos páginas de una hoja de propiedades:
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);
}
}