Czasami pojawia się błąd, który występuje w programie Word podczas próby zamknięcia dokumentu przy otwartym oknie dialogowym, ale nigdy nie byłem w stanie zrozumieć, dlaczego tak się dzieje.
Czasami pojawia się błąd, który występuje w programie Word podczas próby zamknięcia dokumentu przy otwartym oknie dialogowym, ale nigdy nie byłem w stanie zrozumieć, dlaczego tak się dzieje.
Odpowiedzi:
Ponieważ większość okien dialogowych jest uważana za „ modalne ”, co oznacza, że sterowanie nie wraca do programu głównego lub do wywoływania kontenera, dopóki samo okno dialogowe nie zostanie zamknięte. Jest to zgodne z projektem, a programista ma opcję wykonania okna modalnego lub niemodalnego. Zazwyczaj okno jest zdefiniowane jako modalne, jeśli główny program nie może lub nie powinien kontynuować, dopóki otwarte okno dialogowe nie zostanie obsłużone przez wybór (OK) lub przerwanie (Anuluj).
W oknie dialogowym może być coś takiego:
Dokonałeś zmian w dokumencie, czy chcesz je zapisać? (Tak nie)
Nie ma tutaj oczywistej właściwej odpowiedzi. Być może przypadkowo uszkodziłeś dokument (na przykład kot przeszedł przez klawiaturę), w którym to przypadku odpowiedź brzmi „Nie” lub być może spędziłeś godziny, wpisując zmiany, w którym to przypadku odpowiedź brzmi „Tak”.
Najbezpieczniejszą rzeczą dla Worda jest odmowa zamknięcia, dopóki nie odpowiesz na pytanie.
Ponieważ program został zaprojektowany w ten sposób, aby uniknąć działań, których użytkownik może nie chcieć.
Zazwyczaj okno dialogowe jest wyświetlane, gdy program wymaga od użytkownika wykonania pewnych czynności. Zamykanie niezapisanego dokumentu jest doskonałym przykładem: okno dialogowe oferuje zapisanie zmian, odrzucenie zmian lub przerwanie zamykania i powrót do edycji. Program celowo odmawia zamknięcia bez odpowiedzi na to pytanie, ponieważ zamknięcie wymusi NIEKTÓRE działanie. Program nie może sam zdecydować np. odrzuć ostatnią edycję, a wręcz przeciwnie, zastąp prawidłową wersję pisaniem cat-on-the-keyboard.
Nawet jeśli weźmiemy pod uwagę okno dialogowe niezwiązane z zamykaniem, zwykle oznacza to, że jakiś proces jest w toku, jeszcze się nie zakończył, a użytkownik musi zdecydować, którą drogą wybrać. Nie można go po prostu „przerwać”, ponieważ przerywanie to także działanie, którego użytkownik może nie chcieć.
Upraszcza także projektowanie programu, ponieważ jego twórcy nie muszą tworzyć „bezpiecznego wyjścia” z każdej funkcji.
Obecnie większość okien dialogowych nie jest modalna w sensie technicznym (program pozostaje odpowiedzialny), ale nadal łatwiej jest uczynić je modalnymi w szerszym sensie logiki przepływu programu.
Mogę się mylić, ale podejrzewam, że to sięga do starego, typowego zachowania kontrolnego dialogu.
Niektóre z nich, jeśli zostały zabite nagle bez powrotu, miały nieprzyjemne skutki uboczne, czasem nawet poza martwym programem i nie było sposobu, aby uciec od nich grzecznie we wszystkich przypadkach, jeśli robili coś na poziomie systemu, który wymagałby wkładu użytkownika.
Co do tego, dlaczego nadal tak jest, ludzie przyzwyczaili się do tego, programiści programowali to założenie przez dziesięciolecia, a co ważniejsze, nie-programiści używali tych okien dialogowych w swoich skryptach automatyzacji biura, a Microsoft jest niczym, jeśli nie ściśle przestrzega celów wstecznej kompatybilności .
Za zasłonami program (w naszym przypadku jest to MS Word) tworzy „moduł obsługi zdarzenia kliknięcia przycisku X” podczas tworzenia okna. Gdy pojawia się okno dialogowe, Word to rejestruje. Następnie w module obsługi przycisku X kliknięcie przycisku X sprawdza nagrane otwarte okna dialogowe. Jeśli są, program obsługi przerywa operację zamykania. Jeśli nie, to kończy działanie programu, a system operacyjny czyści pamięć zajętą przez program. Tak to działa.