Tworzenie niemodalnego arkusza właściwości
Zwykle tworzone arkusze właściwości będą modalne. W przypadku korzystania z arkusza właściwości modalnych użytkownik musi zamknąć arkusz właściwości przed użyciem jakiejkolwiek innej części aplikacji. W tym artykule opisano metody, których można użyć do utworzenia bez moderowego arkusza właściwości, który umożliwia użytkownikowi otwieranie arkusza właściwości podczas korzystania z innych części aplikacji.
Aby wyświetlić arkusz właściwości jako okno dialogowe bez moderowania zamiast jako modalne okno dialogowe, wywołaj metodę CPropertySheet::Create zamiast doModal. Należy również zaimplementować kilka dodatkowych zadań, aby obsługiwać arkusz właściwości bez moderowania.
Jednym z dodatkowych zadań jest wymiana danych między arkuszem właściwości a obiektem zewnętrznym, który modyfikuje podczas otwierania arkusza właściwości. Jest to zazwyczaj to samo zadanie co w standardowych oknach dialogowych bez moderowania. Część tego zadania implementuje kanał komunikacji między arkuszem właściwości modeless a obiektem zewnętrznym, do którego mają zastosowanie ustawienia właściwości. Ta implementacja jest znacznie łatwiejsza w przypadku utworzenia klasy z arkusza właściwości CPropertySheet dla arkusza właściwości bez moderowania. W tym artykule założono, że zostało to zrobione.
Jedną z metod komunikacji między arkuszem właściwości modeless a obiektem zewnętrznym (na przykład bieżącym wyborem w widoku) jest zdefiniowanie wskaźnika z arkusza właściwości do obiektu zewnętrznego. Zdefiniuj funkcję (o nazwie podobną SetMyExternalObject
do ) w klasie -pochodnej CPropertySheet
, aby zmienić wskaźnik za każdym razem, gdy fokus zmieni się z jednego obiektu zewnętrznego na inny. Funkcja SetMyExternalObject
musi zresetować ustawienia dla każdej strony właściwości, aby odzwierciedlić nowo wybrany obiekt zewnętrzny. Aby to osiągnąć, SetMyExternalObject
funkcja musi mieć dostęp do obiektów CPropertyPage należących do CPropertySheet
klasy.
Najwygodniejszym sposobem zapewnienia dostępu do stron właściwości w arkuszu właściwości jest osadzanie CPropertyPage
obiektów w obiekcie pochodnym CPropertySheet
. CPropertyPage
Osadzanie obiektów w CPropertySheet
obiekcie pochodnym różni się od typowego projektu modalnych okien dialogowych, w których właściciel arkusza właściwości tworzy CPropertyPage
obiekty i przekazuje je do arkusza właściwości za pośrednictwem CPropertySheet::AddPage.
Istnieje wiele alternatyw interfejsu użytkownika do określania, kiedy ustawienia arkusza właściwości bez moderowania powinny być stosowane do obiektu zewnętrznego. Jedną z alternatywnych opcji jest zastosowanie ustawień bieżącej strony właściwości za każdym razem, gdy użytkownik zmieni dowolną wartość. Inną alternatywą jest udostępnienie przycisku Zastosuj, który umożliwia użytkownikowi gromadzenie zmian na stronach właściwości przed zatwierdzeniem ich do obiektu zewnętrznego. Aby uzyskać informacje na temat sposobów obsługi przycisku Zastosuj, zobacz artykuł Obsługa przycisku Zastosuj.
Zobacz też
Arkusze właściwości
Wymiana danych
Praca z oknami dialogowymi w MFC