Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
197
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

файла.

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

именем.

ofShareAware

ofNoReadOnlyReturn

ofNoTestFileCreate

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

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

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

ofNoNetworkButton

ofNoLongNames ofOldStyleDialog

ofNoDereferenceLinks

ofEnableIncludeNotify

ofEnableSizing

ofDontAddToRecent

ofShowHidden

ofExNoPlaceBar

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

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

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

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

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

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

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

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

Hidden).

Если равно 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). Выберите его из

368

палитры и поместите на форму. Назовите новый компонент Image, а свойствам Left и Top установите значение 0.

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

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

Свойство

AutoSize

Center

Описание

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

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

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

время отображения рисунка.

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

метафайл (metafile), значок (icon).

Proportional

Stretch

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

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

Transparent

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

появляется только после установки свойства Picture.

 

OnProgress

Происходит по мере выполнения длительных операций, например во время

загрузки больших рисунков.

 

 

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

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

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

369

Рисунок 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;

370

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

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

procedure TPictureForm.SaveAsMenuItemClick(Sender: TObject); begin

if SaveDialog.Execute then Image.Picture.SaveToFile(SaveDialog.FileName);

end;

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

procedure TPictureForm.CloseMenuItemClick(Sender: TObject); begin

with Image do begin

Picture := nil; Width := 0; Height := 0;

end;

NormalSizeMenuItem.Click;

EnableCommands(False);

end;

Шаг 40. Еще остались незавершенными обработчики команд меню Half Size, Normal Size и Double Size, которые тоже нужно доработать. С ними вы легко разберетесь:

procedure TPictureForm.HalfSizeMenuItemClick(Sender: TObject); begin

HalfSizeMenuItem.Checked := True;

HalfSizePopupItem.Checked := True; with Image do

begin

AutoSize := False;

Width := Picture.Width div 2; Height := Picture.Height div 2; Stretch := True;

371

end;

end;

procedure TPictureForm.NormalSizeMenuItemClick(Sender: TObject); begin

NormalSizeMenuItem.Checked := True;

NormalSizePopupItem.Checked := True;

Image.AutoSize := True; // восстановить нормальные размеры компонента end;

procedure TPictureForm.DoubleSizeMenuItemClick(Sender: TObject); begin

DoubleSizeMenuItem.Checked := True;

DoubleSizePopupItem.Checked := True; with Image do

begin

AutoSize := False;

Width := Picture.Width * 2;

Height := Picture.Height * 2; Stretch := True;

end;

end;

В первом приближении программа для просмотра графических файлов готова. Выполните компиляцию программы и проверьте ее работоспособность. Например, откройте файл Chemical.bmp из стандартной коллекции изображений среды Delphi (C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color). Вашему взору предстанет следующая картина (рисунок 8.35):

Рисунок 8.35. Программа для просмотра графических файлов в работе

372

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]