Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 implica en realidad intercambiar datos con las páginas individuales de dicha hoja. 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 facilidad de intercambio de datos de diálogo (DDX) del marco, que intercambia datos entre controles de un cuadro de diálogo y 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 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);
}
}