|
||||||||
|
Диалоги. TOpenDialog, TSaveDialog
Эти компоненты-диалоги предназначены для выбора имени файла, который будет в дальнейшем использован для чтения или записи. Рассмотрим их совместно, т. к. они отличаются только интерпретацией некоторых опций. Диалог может быть настроен на представление имен файлов какого-нибудь одного типа или нескольких типов. При этом только эти типы отображаются в списке, и только из них может сделать выбор пользователь, с помощью свойства:
Формат строки фильтра состоит из двух частей. В первой задается краткое описание типа. Во второй части, которая отделяется символом '|' ? маска поиска нужных файлов по расширению. В список файлов попадут только те, которые имеют указанные расширения. Примеры задания фильтра: 'Delphi projects | *.dpr' или 'All graphics files | *.bmp,*.ico,*.wmf'. Таких пар строк для разных типов в фильтре может быть несколько, при этом форматы представления фильтра в самой системе Windows и в Delphi имеют одно отличие. При вызове стандартных диалогов Windows эти пары строк должны разделяться нулевым байтом, после последней строки также должен стоять нулевой байт. В рассматриваемых компонентах все строки разделяются символом 'Г. Создавать строки вручную нужно лишь в редких случаях ? для ввода значения свойства на этапе проектирования предназначен специальный редактор. Есть также простой способ составить фильтр для графических файлов ? для этого предназначена процедура GraphicFilter (ее описание см. в разделе "Графическая подсистема"). В качестве начального фильтра при вызове диалога будет выбрана та пара строк, номер (индекс) которой совпадает со значением свойства:
Если свойству не присваивалось значения, то по умолчанию выбирается первая пара. Путь к файлам, которые первоначально будут отображены в диалоге, задается свойством:
В случае, если в поле ввода имени файла пользователь при ручном наборе не определил его расширение, это за него пытается сделать диалог. Для этого свойству
присваивается строка (до трех символов, без точки), которая и будет использоваться в качестве расширения по умолчанию. Например, если пользователь ввел в попе имени файла 'mybitmap', a DefaultExt равно 'bmp', то компонент вернет полное имя 'mybitmap.bmp'. Поле ввода FileName, где отображаются и редактируются имена файлов, может быть простым редактирующим элементом, а может быть и комбинированным списком. В этот список должны попасть имена файлов, которые были прежде прочитаны (записаны). Стиль редактирующего элемента задан свойством
а содержимое списка ранее возвращавшихся имен ? свойством:
В случае действия стиля fsEdit это свойство не играет роли. Если же установлено fsComboBox, в выпадающем списке появляется содержимое HistoryList. Можно создать список для этого свойства во время разработки программы. Но для того, чтобы оно действительно играло роль "предыстории", программист должен пополнять список после успешного окончания диалога, что иллюстрируется следующим фрагментом кода:
У двух диалогов имеется большой набор опций. Часть из них является общей, часть ? играет роль только для одного из диалогов:
Три опции отвечают за работу с файлами со статусом "только для чтения":
Также три опции ограничивают ввод имен для новых (несуществующих) файлов:
Другие опции:
Наконец, одна опция ? ofExtensionDifferent ? является выходной. Она устанавливается после завершения диалога в том случае, если расширение у введенного имени файла отличается от того, которое определено по умолчанию (в свойстве DefaultExt). Текст, появляющийся в заголовке диалога, определяется свойством:
Если оно не было задано, то в заголовках диалогов появится "Open" для TOpenDialog и "SaveAs" для TSaveDialog. В случае успешного завершения диалога в свойстве
содержатся имена выбранных пользователем файлов. Если выбран один файл, его имя можно получить как Files.Strings[0], но есть для этого и отдельное свойство:
Для комментария : kadan@grsu.grodno.by | |||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |