Datenaustausch

Wie bei den meisten Dialogfeldern ist der Datenaustausch zwischen dem Eigenschaftenblatt und der Anwendung eine der wichtigsten Funktionen des Eigenschaftenblatts. In diesem Artikel wird beschrieben, wie Sie diese Aufgabe ausführen.

Der Austausch von Daten mit einem Eigenschaftenblatt ist eigentlich eine Frage des Austauschs von Daten mit den einzelnen Eigenschaftenseiten des Eigenschaftenblatts. Das Verfahren zum Austauschen von Daten mit einer Eigenschaftenseite ist das gleiche wie beim Austauschen von Daten mit einem Dialogfeld, da ein CPropertyPage-Objekt nur ein spezialisiertes CDialog-Objekt ist. Die Prozedur nutzt die DDX-Einrichtung (Dialog Data Exchange) des Frameworks, die Daten zwischen Steuerelementen in einem Dialogfeld und Membervariablen des Dialogfeldobjekts austauscht.

Der wichtige Unterschied zwischen dem Austausch von Daten mit einem Eigenschaftenblatt und einem normalen Dialogfeld ist, dass das Eigenschaftenblatt über mehrere Seiten verfügt, sodass Sie Daten mit allen Seiten im Eigenschaftenblatt austauschen müssen. Weitere Informationen zu DDX finden Sie unter Dialog Data Exchange and Validation.

Im folgenden Beispiel wird der Datenaustausch zwischen einer Ansicht und zwei Seiten eines Eigenschaftenblatts veranschaulicht:

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);
   }
}

Siehe auch

Eigenschaftenblätter