В состав Windows входит ряд типовых диалоговых окон, таких как окно выбора загружаемого файла, выбора шрифта, настройки принтера и т.д. В Delphi реализованы классы, объекты которых дают программисту удобные способы создания и использования таких окон.
Работа со стандартными диалоговыми окнами осуществляется в три этапа.
Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств. Настройка свойств может проходить как на этапе конструирования, так и в ходе прогона программы. Как и для любых других компонентов, программист не должен заботиться о вызове конструктора и деструктора класса диалогового окна – эти вызовы реализуются автоматически в момент старта и завершения программы.
На втором этапе осуществляется вызов стандартного для классов диалоговых окон метода Execute, который создает и показывает на экране диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, обработчик выбора в меню команды Открыть файл может вызвать метод Execute компонента TOpenDialog, обработчик щелчка на кнопке Сохранить панели инструментов может вызвать такой же метод компонента TSaveDialog и т.д. Только после обращения к методу Execute дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно.
Для компонентов OpenDialog – диалог «Открыть файл» и SaveDialog — диалог «Сохранить файл как» свойства одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, – FileName. Значение этого свойства можно задать и перед обращением к диалогу.
Свойство Title позволяет задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе (например, «Открытие файла»). Но можно задать и свой заголовок, подсказывающий пользователю ожидаемые действия. Например, «Укажите имя открываемого файла».
Обработка команды Открыть может сводиться к следующему оператору:
if OpenDialog1.Execute then
begin
FName := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(FName);
end;
Обработка команды Сохранить как…
выполняется операторами:
SaveDialog1.FileName := FName;
if SaveDialog1.Execute then
begin
FName := SaveDialog1.FileName;
Memo1.Lines.SaveToFile(FName);
end;