Verwenden der Schaltfläche „Anwenden“
Eigenschaftenblätter verfügen über eine Funktion, die Standarddialogfelder nicht haben: Sie ermöglichen es dem Benutzer, vor dem Schließen des Eigenschaftenblatts vorgenommene Änderungen anzuwenden. Dazu wird die Schaltfläche "Übernehmen" verwendet. In diesem Artikel werden Methoden erläutert, mit deren Hilfe Sie dieses Feature ordnungsgemäß implementieren können.
Modale Dialogfelder wenden in der Regel die Einstellungen auf ein externes Objekt an, wenn der Benutzer auf "OK" klickt, um das Dialogfeld zu schließen. Das gleiche gilt für ein Eigenschaftenblatt: Wenn der Benutzer auf "OK" klickt, werden die neuen Einstellungen im Eigenschaftenblatt wirksam.
Möglicherweise möchten Sie dem Benutzer jedoch erlauben, Einstellungen zu speichern, ohne das Eigenschaftenblatt-Dialogfeld schließen zu müssen. Dies ist die Funktion der Schaltfläche "Übernehmen". Die Schaltfläche "Übernehmen" wendet die aktuellen Einstellungen auf allen Eigenschaftenseiten auf das externe Objekt an, anstatt nur die aktuellen Einstellungen der aktuell aktiven Seite anzuwenden.
Standardmäßig ist die Schaltfläche "Übernehmen" immer deaktiviert. Sie müssen Code schreiben, um die Schaltfläche "Anwenden" zu den entsprechenden Zeiten zu aktivieren, und Sie müssen Code schreiben, um die Auswirkung von Apply zu implementieren, wie unten erläutert.
Wenn Sie dem Benutzer die Funktion "Anwenden" nicht anbieten möchten, ist es nicht erforderlich, die Schaltfläche "Übernehmen" zu entfernen. Sie können sie deaktiviert lassen, wie es bei Anwendungen üblich ist, die standardmäßige Eigenschaftenblattunterstützung verwenden, die in zukünftigen Versionen von Windows verfügbar ist.
Rufen Sie auf, um eine Seite als geändert zu melden und die Schaltfläche "Übernehmen" zu CPropertyPage::SetModified( TRUE )
aktivieren. Wenn ein seitenbericht geändert wird, wird die Schaltfläche "Übernehmen" erneut aktiviert Standard unabhängig davon, ob die aktuell aktive Seite geändert wurde.
Sie sollten CPropertyPage::SetModified aufrufen, wenn der Benutzer einstellungen auf der Seite ändert. Eine Möglichkeit, zu erkennen, wann ein Benutzer eine Einstellung auf der Seite ändert, besteht darin, Änderungsbenachrichtigungshandler für jedes Steuerelement auf der Eigenschaftenseite zu implementieren, z . B. EN_CHANGE oder BN_CLICKED.
Um die Auswirkung der Schaltfläche "Übernehmen" zu implementieren, muss das Eigenschaftenblatt seinen Besitzer oder ein anderes externes Objekt in der Anwendung anweisen, die aktuellen Einstellungen auf den Eigenschaftenseiten anzuwenden. Gleichzeitig sollte das Eigenschaftenblatt die Schaltfläche "Übernehmen" deaktivieren, indem CPropertyPage::SetModified( FALSE )
alle Seiten aufgerufen werden, die ihre Änderungen auf das externe Objekt angewendet haben.
Ein Beispiel für diesen Prozess finden Sie im MFC General Sample PROPDLG.For an example of this process, see the MFC General sample PROPDLG.