Файл: Учебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.05.2024

Просмотров: 150

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Таблица 8.6. Важнейшие свойства и события компонентов
OpenDialog и SaveDialog.

Компоненты OpenDialog и SaveDialog очень схожи между собой, оба являются объектно-ориентированными оболочками стандартных диалоговых окон Windows: Open и Save. На следующем рисунке показано окно Open (рисунок 8.29).



Рисунок 8.29. Стандартное окно Open для выбора открываемого файла

Приблизительный сценарий работы с каждым из компонентов OpenDialog и SaveDialog таков. Компонент помещается на форму и конфигурируется для выбора тех или иных файлов. По команде меню Open... или SaveAs... у соответствующего компонента вызывается метод Execute. Он вызывает диалог и возвращает значение True, если пользователь выбрал файл. Полный маршрут к файлу запоминается в свойстве FileName. Ход дальнейших действий зависит от прикладной задачи и, как правило, включает или чтение, или запись файла, в зависимости от обрабатываемой команды меню.

Придерживаясь написанного сценария, приспособим компоненты OpenDialog и SaveDialog для выбора графических файлов, поддерживаемых нашей программой. Чтобы пользователь мог просматривать файлы выборочно (какого-то одного типа) в диалоговых блоках имеется набор фильтров, оформленный в виде раскрывающегося списка с подписью Files of type (см. рис. выше). Исходные данные для этого списка устанавливаются в свойстве Filter. Номер активного в данный момент фильтра записывается в свойстве FilterIndex.

Шаг 31. Приступим к формированию списка фильтров. Активизируйте на форме компонент OpenDialog и в окне свойств выберите свойство Filter (рисунок 8.30). Щелчком кнопки с многоточием откройте редактор фильтров — окно Filter Editor (рисунок 8.31).



Рисунок 8.30. Нажатие кнопки с многоточием вызывает редактор фильтров

Окно Filter Editor представляет собой список с двумя столбцами. В левой колонке вводится текст, отображаемый в раскрывающемся списке Filesoftype окна диалога. В правом столбце через точку с запятой записываются маски, на основании которых выполняется фильтрация файлов.

Шаг 32. Установите в компоненте OpenDialog фильтры, как показано на рисунке 8.31.



Рисунок 8.31. Окно для редактирования фильтров — Filter Editor


Шаг 33. Аналогичным образом установите фильтры в компоненте SaveDialog. Самый простой и быстрый способ в данном случае — скопировать текст свойства Filter из компонента OpenDialog в компонент SaveDialog через буфер обмена (результат показан на рисунке 8.32):



Рисунок 8.32. Фильтры для окна Save скопированы из окна Open

Компоненты OpenDialog и SaveDialog имеют большое количество булевских параметров, организованных в виде составных свойств Options и OptionsEx. Эти параметры влияют на то, как окно диалога выглядит и работает. Их смысл поясняет таблица 8.7.

Параметр

Описание

ofReadOnly

Если равно True, то переключатель Read-only в окне диалога включен.

ofOverwritePrompt

Если равно True, то пользователю выдается предупреждение при попытке сохранить файл с именем, которое уже существует.

ofHideReadOnly

Если равно True, то переключатель Read-only отсутствует в окне диалога.

ofNoChangeDir

Если равно True, то пользователь не сможет сменить каталог в окне диалога.

ofShowHelp

Если равно True, то в окне диалога присутствует кнопка Help.

ofNoValidate

Если равно True, то пользователь может вводить в имени файла любые символы, даже недопустимые.

ofAllowMultiSelect

Если равно True, то пользователь может выделить сразу несколько файлов.

ofExtensionDifferent

Этот параметр устанавливается после завершения диалога, если расширение в имени файла отличается от начального расширения.

ofPathMustExist

Если равно True, то пользователь не сможет ввести для файла несуществующий маршрут.

ofFileMustExist

Если равно True, то пользователь не сможет ввести имя несуществующего файла.

ofCreatePrompt

Если равно True и пользователь вводит имя несуществующего файла, то пользователю задается вопрос, желает ли он создать новый файл с таким именем.

ofShareAware

Если равно True, то ошибки одновременного доступа к файлу со стороны нескольких приложений игнорируются.

ofNoReadOnlyReturn

Если равно True, то пользователь не сможет ввести файл с атрибутом read-only (только для чтения).

ofNoTestFileCreate

Если равно True, то проверка на возможность записи в каталог не выполняется.

ofNoNetworkButton

Если равно True, то кнопка Network отсутствует в окне диалога. Этот параметр работает только в паре с параметром ofOldStyleDialog.

ofNoLongNames

Если равно True, то длинные имена файлов запрещены.

ofOldStyleDialog

Если равно True, то окно диалога отображается в старом стиле Windows 3.1.

ofNoDereferenceLinks

Если равно True, то ярлыки к каталогам трактуются как обычные файлы. В противном случае они трактуются как каталоги.

ofEnableIncludeNotify

Если равно True, то при формировании списка отображаемых файлов происходит событие OnIncludeItem (для каждого файла). В обработчике этого события обычно выполняется дополнительная фильтрация файлов.

ofEnableSizing

Если равно значению True, то пользователь имеет возможность изменять размеры окна диалога.

ofDontAddToRecent

Если равно значению True, то файл не помещается в список последних открытых файлов.

ofShowHidden

Если равно True, то в окне показываются скрытые файлы (файлы с атрибутом Hidden).

ofExNoPlaceBar

Если равно True, то боковая панель не показывается в окне диалога. Флажок ofExNoPlaceBar относится к свойству OptionsEx.


Таблица 8.7. Параметры компонентов OpenDialog и SaveDialog

Шаг 34. В нашем простом примере ограничимся тем, что установим в компоненте SaveDialog параметр ofOverwritePrompt в значение True (см. табл. 6.6).

Заметим, что проверить работу компонентов OpenDialog и SaveDialog можно с помощью команды Test Dialog. Она находится в контекстном меню значка компонента в форме.

8.2.2. Отображение рисунков

Шаг 35. Ну вот, диалоговые компоненты настроены. Теперь нужен компонент, обеспечивающий отображение рисунков различных форматов. Такой компонент в среде Delphi есть, он называется Image и находится в палитре компонентов на вкладке Additional (рисунок 8.33). Выберите его из палитры и поместите на форму. Назовите новый компонент Image, а свойствам Left и Top установите значение 0.



Рисунок 8.33. Компонент Image

Характерные свойства компонента Image кратко описаны в таблице 8.8.

Свойство

Описание

AutoSize

Если равно значению True, то размеры компонента автоматически подгоняются под размеры рисунка.

Center

Центрирует рисунок в пределах компонента.

IncrementalDisplay

Обеспечивает постепенное (по мере загрузки) отображение больших рисунков. Используется для устранения эффекта блокировки пользовательского ввода во время отображения рисунка.

Picture

Cодержит рисунок, отображаемый в области компонента. Свойство Picture является объектом класса TPicture и может хранить точечный рисунок (bitmap), метафайл (metafile), значок (icon).

Proportional

Если равно значению True, то при масштабировании сохраняется пропорция между вертикальным и горизонтальным размерами рисунка.

Stretch

Если равно значению True, то рисунок масштабируется так, чтобы его размеры совпадали с размерами компонента. Масштабирование выполняется только для точечных рисунков и метафайлов.

Transparent

Если равно значению True, то фон рисунков становится прозрачным. Эффект появляется только после установки свойства Picture.

OnProgress

Происходит по мере выполнения длительных операций, например во время загрузки больших рисунков.


Таблица 8.8. Основные свойства компонента Image

Компонент Image позволяет отображать рисунки разных форматов: точечные рисунки (BMP), значки (ICO), метафайлы (WMF, EMF). Сам рисунок хранится в свойстве Picture.

Шаг 36. Размеры установленного рисунка могут не совпадать с текущими размерами компонента. В этом случае лишняя часть изображения отсекается. Чтобы подогнать размеры компонента под размеры рисунка установите свойство AutoSize в значение True (рисунок 8.34). После этого при каждой установке свойства Picture размеры компонента (но не рисунка) будут изменяться автоматически.



Рисунок 8.34. Свойство AutoSize в компоненте Image установлено в значение True

Бывает и обратная ситуация, когда нужно подогнать размеры рисунка под заданные размеры компонента. Для этого свойство Stretch устанавливается в значение True, а AutoSize — в значение False. Масштабирование целесообразно применять только для векторных изображений; для точечных рисунков оно не всегда дает приятный результат — начинает сказываться точечная природа изображения.

Сейчас компонент Image находится на своем месте и подготовлен к работе (свойство AutoSize имеет значение True). Рассмотрим, как осуществляется загрузка и сохранение рисунка по командам меню Open... и Save As... .

Шаг 37. В исходном тексте уже имеется недописанный обработчик команды Open... . В нем нужно вызвать стандартное диалоговое окно открытия файла и загрузить рисунок в том случае, если пользователь ввел в этом окне имя файла:

procedure TPictureForm.OpenMenuItemClick(Sender: TObject);

begin

if OpenDialog.Execute then

begin

Image.Picture.LoadFromFile(OpenDialog.FileName);

EnableCommands(True);

NormalSizeMenuItem.Click;

end;

end;

В данном обработчике обратите внимание на вызов метода Click у компонента NormalSizeItem. Он имитирует выбор пункта меню NormalSize, чтобы сразу после загрузки рисунок имел нормальный размер.

Шаг 38. Пункт меню SaveAs... еще не имеет обработчика события OnClick, поэтому вам придется его создать (напомним, что это делается в окне свойств на вкладке Events). Обработка команды Save As... состоит в вызове стандартного диалогового окна Save с последующем сохранением рисунка в файле:

procedure TPictureForm.SaveAsMenuItemClick(Sender: TObject);

begin

if SaveDialog.Execute then

Image.Picture.SaveToFile(SaveDialog.FileName);

end;

Шаг 39. Чтобы наш пример, наконец, заработал, осталось дописать несколько обработчиков событий. В обработчике команды меню Close добавим операторы удаления рисунка из компонента