Intercambiar datos
Como 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 realmente una cuestión de intercambiar datos con páginas de propiedades individuales de la hoja de propiedades. El procedimiento para intercambiar datos con una página de propiedades es igual que para intercambiar datos con un cuadro de diálogo, ya que un objeto de CPropertyPage es simplemente un objeto especializado de CDialog . El procedimiento aprovecha la facilidad de intercambio de datos del cuadro de diálogo de marco (DDX), que intercambia datos entre los controles en un cuadro de diálogo y las variables miembro del objeto del 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 Diálogo Data Exchange y validación.
El ejemplo siguiente muestra intercambiando 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);
}
}