BrainenjiiЯ уже говорил и повторю еще раз. У Купера в книге "Об интерфейсе" есть готовое решение - как должна организовываться работа с файлами. Одна из глав этому посящена, дома посмотрю, как называется.
Так вот. Там все абсолютно по-другому. Никаких окон - ни модальных, ни немодальных. Пользователя никто не беспокоит вопросами. Пользователь может жать на что угодно, забывать о чем угодно. Но при этом ничего не теряется.
Звучит как фантастика?
А все на самом деле просто. Порассуждаем так, как рассуждал автор.
Первый вопрос, который нужно задать себе: зачем пользователь вообще сел за компьютер? Наверно, чтобы поработать.
Он долго работал с данными. Неужели для того, чтобы выкинуть потом все результаты? Конечно нет!
Как соотносится количество случаев, когда пользователь хочет выйти
без сохранения, и количество случаев, когда пользователь хочет выйти
с сохранением? Примерно как 1:100.
Следовательно, что захочет сделать пользователь, когда закончит работу? На помощь приходит Капитан Очевидность: "Пользователь захочет сохраниться!!!"
А если я уже сейчас знаю, что пользователь хочет - почему бы это не сделать???
- Код: Выделить всё
TMainForm.OnClose(Sender: TObject);
begin
SaveAllUserData;
end;
На тот один случай из ста, когда пользователь передумал: сохраняем старые данные во временный файл. Пользователь вышел - удаляем временный файл. Пользователь выбрал пункт меню "Выйти без сохранения" - удаляем всё, что он сделал, а в качестве основного файла сохраняем старый - без изменений.
И не надо никаких окон.
Добавлено спустя 3 минуты 36 секунд:P. S. Я во всех своих программах теперь буду делать именно так (уже делаю, сам пользуюсь, офигительно удобно). Когда пользователи привыкнут к моим программам, к моим конкурентам они будут относится с отвращением. Ну вы поняли, кто в итоге победит
Технологии прошлого века бессильны, их время прошло.