Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Диалоговые окна открытия и сохранения файла

Читайте также:
  1. Cтворення командного файла
  2. PCX. Формат появился как формат хранения растровых данных программы PC PaintBrush фирмы Z-Soft и является одним из наиболее распространенных (расширение имени файла .PCX).
  3. Алгоритм открытия агентства недвижимости
  4. Вектор в растр: преобразование CDR - файла в ВМР.
  5. Використання файла-образу
  6. Вот серия встреч с парнем из Арройо по имени Кага, которую я обнаружил в файлах внутри master.dat.

Шаг 23. Диалоговые окна для выбора открываемого или сохраняемого файла организуется с помощью компонентов OpenDialog и SaveDialog.

Найдите их в пали­тре компонент на странице Dialogs:

и поместите на форму:

Присвойте компонентам имена OpenDialog и SaveDialog:

Шаг 23.1. Познакомьтесь со свойствами этих компонент, которые приведены в таблице 5.

Таблида.5. Важнейшие свойства компонентов OpenDialog и SaveDialog.

Свойство Описание
DefaultExt   FileName Filter FilterIndex InitialDir     Options   Title Расширение, которое добавляется к имени файла, если пользователь его пропустил. Начальное имя файла. Фильтр имени файла. Номер активного фильтра. Начальный каталог, открываемый при первом появлении окна диалога. Параметры, определяющие внешний вид и поведение окна диалога (см. таблицу 4.6). Заголовок окна диалога. Если значение свойства не указано, то заголовок будет стандартным — Open (Открыть) или Save (Сохранить) в зависимости от типа компонента.

 

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

Типичный сценарий работы с каждым из компонент OpenDialog и SaveDialog состоит вследующем. Компонент помещается на форму и конфигурируется для выбора тех или иных файлов. По команде меню Open... или Save As... у соответствующего компонента вызывается метод Execute(). Метод Execute() выполняет диалог и возвращает значение true, если пользователь выбрал файл. Пол­ный маршрут к файлу запоминается в значении свойства FileName. Ход даль­нейших действий зависит от прикладной задачи и, как правило, включает или чтение, или запись файла, в зависимости от обрабатываемой команды меню.

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

Шаг 24. Сформируйте фильтры для приложения. Активизируйте на форме ком­понент OpenDialog и в инспекторе объектов сделайте двойной щелчок мыши на значении свойства Filter:

Шаг 25. В результате на экране появится редактор фильтра. Он представляет собой список с двумя колонками. В левой колонке вводится текст, отображаемый в выпадающем списке Тип файлов. В правой колонке через точку с запятой записываются маски, на основании которых выполняется фильтрация файлов в окне диалога. Для того чтобы предоставить пользователю максималь­ное удобство при выборе графических файлов, установите в компоненте OpenDialog фильтры, показанные на рис.

Обратите внимание на первую строку фильтра. В списке расширения отделяются друг от друга точкой с запятой.

Шаг 26. Действуя аналогично, установите фильтр в компоненте SaveDialog, как показано на рис:

Компоненты OpenDialog и SaveDialog имеют большое количество булевых пара­метров, организованных в виде флагов составного свойства Options. По умолчанию все параметры имеют значение false. Результат установки параметров в значе­ние true прокомментирован в таблице 6.

Шаг 27. В нашем простом примере ограничимся тем, что установим в значе­ние true в обоих компонентах (OpenDialog и SaveDialog) параметр ofHideReadOnly, а в компоненте SaveDialog — еще и параметр ofOverwitePrompt (см. таблицу 6).

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

Параметр Описание
ofAllowMultiSelect Если равен true, то пользователь может выделить сразу несколько файлов.
ofCreatePrompt Если равен true и пользователь вводит имя несуществующего файла, то пользователю задается вопрос, желает ли он создать новый файл с таким именем
ofExtensionDifferent Этот параметр устанавливается после завершения диалога, если расширение в имени файла отличается от начального расширения.
ofFileMustExist Если равен true, то пользователь не сможет ввести имя несуществующего файла.
ofHideReadOnly Если равен true, то переключатель Read-only отсутствует в окне диалога.
ofNoChangeDir Если равен true, то пользователь не сможет сменить каталог в окне диалога.
ofNoDereferenceLinks Если равен true, то ярлыки к каталогам трактуются как обычные файлы. В противном случае они трактуются как каталоги.
ofNoLongNames Если равен true, то длинные имена файлов запрещены.
ofNoNetworkButton Если равен true, то кнопка Network отсутствует в окне диалога. Этот параметр работает только в паре с параметром ofOldStyleDialog.
ofNoReadOnlyReturn Если равен true, то пользователь не сможет ввести файл с атрибутом read-only (только для чтения).
ofNoTestFileCreate Если равен true, то проверка на возможность записи в каталог не выполняется.
ofNoValidate Если равен true, то пользователь может вводить в имени файла любые символы, даже недопустимые.
ofOldStyleDialog Если равен true, то окно диалога отображается в старом стиле Windows 3.1.
ofOverwritePrompt Если равен true, то пользователю выдается предупреждение при попытке сохранить файл с именем, которое уже существует.
ofReadOnly Если равен true, то переключатель Read-only в окне диалога включен.
ofPathMustExist Если равен true, то пользователь не сможет ввести для файла несуществующий маршрут.
ofShareAware Если равен true, то ошибки одновременного доступа к файлу со стороны нескольких приложений игнорируются.
OfShowHelp Если равен true, то в окне диалога присутствует кнопка Help.

Отображение картинок

Шаг 28. Теперь нужен компонент, обеспечивающий отображение картинок различных форматов. Такой компонент в C++Builder есть, он называется Image и находится в палитре компонентов на странице Additional (рис. 23). Выберите его из палитры и опустите в левый вер­хний угол формы. Назовите новый компонент Image.

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

Таблица 7. Важнейшие свойства компонента Image.

Свойство Описание
AutoSize   Center Picture   Stretch Если равно true, то размеры компонента автоматически подгоняются под размеры картинки. Центрирует картинку в пределах компонента. Содержит картинку, отображаемую в области компонента. Свойство Picture является объектом класса TPicture и может хранить точечный рисунок (bitmap), метафайл (metafile), значок (icon). Если равно true, то картинка масштабируется так, чтобы ее размеры совпадали с размерами компонента. Масштабирование выполняется только для точечных рисунков и метафайлов.

Компонент Image позволяет выводить картинки трех основных форматов: то­чечный рисунок (bitmap), метафайл (metafile) и значок (icon). Отображаемая картинка хранится в свойстве Picture, доступном и на этапе разработки, и на этапе выполнения приложения.

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

Бывает и обратная ситуация, когда нужно выполнить масштабирование кар­тинки, подогнав ее размеры под заданные размеры управляющего элемента. Для этого свойство Stretch устанавливается в true, a Autosize — в false. Масшта­бирование целесообразно применять только для метафайлов; для точечных рисунков оно не всегда дает приятный результат — начинает сказываться точечная природа изображения.

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

Шаг 30. В файле Main.cpp уже имеется недописанный обработчик команды меню Open... В нем нужно выполнить стандартное диалоговое окно Open и загру­зить картинку в том случае, если пользователь ввел в окне имя файла. Добавьте в обработчик строки, выделенные жирным шрифтом:

void __fastcall TPictureForm::OpenltemClick(TObject *Sender)

{if(OpenDialog->Execute())

{

Image->Picture->LoadFromFile

(OpenDialog->FileName);

EnableCommands(true);

NormalSizeItem->Click();

}

}

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


Шаг 30.1. Запустите приложение на выполнение и откройте файл с расширением *.bmp, который находится в той же директории, в которой находится текстовый файл лабораторной работы. Вы увидите следующую картинку:

 

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

void __fastcall TPictureForm::SaveAsItemClick (TObject *Sender)

{

if (SaveDialog->Execute())

Image->Picture->SaveToFile(SaveDialog->FileName);

}

Шаг 31.1. Снова запустите приложение на выполнение и откройте тот же файл с расширением *.bmp. Затем сохраните этот файл с новым именем в директорию, в которой находится текстовый файл лабораторной работы. Затем откройте сохраненный файл и убедитесь, что приложение делает то, что Вам необходимо.

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

 

void __fastcall TPictureForm::CloseItemClick (TObject *Sender)

{

Image->Picture = NULL;

Image->Width = 0;

Image->Height = 0;

NormalSizeItem->Click();

EnableCommands(false);

}

 

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

 

void __fastcall PictureForm::HalfSizeItemClick (TObject *Sender)

{

HalfSizeItem->Checked = true;

PopHalfSizeItem->Checked = true;

Image->AutoSize = true; // восстановить нормальные размеры компонента

Image->Width = Image->Width/2;// уменьшить ширину наполовину

Image->Height = Image->Height/2;// уменьшить высоту наполовину

}

// -------------------------------------------

void __fastcall TPictureForm:: NormalSizeItemClick (TObject *Sender)

{

NormalSizeItem->Checked = true;

PopNormalSizeItem->Checked = true;

Image->AutoSize = true; // восстановить нормальные размеры компонента

}

// -------------------------------------------

void __fastcall TPictureForm:: DoubleSizeItemClick (TObject *Sender)

{

DoubleSizeItem->Checked = true;

PopDoubleSizeItem->Checked = true;

Image->AutoSize = true; // восстановить нормальные размеры компонента

Image->Width = Image->Width * 2; // удвоить ширину

Image->Height = Image->Height * 2; // удвоить высоту

}

В первом приближении приложение для просмотра графических файлов гото­во. Вы­полните компиляцию приложения и проверьте его работоспособность. Обратите внимание на способность формы прокручивать картинки, которые в ней не умещаются. Это явление называет­ся автоматической прокруткой. Автоматическая прокрутка не требует ника­ких усилий со стороны программиста. Попробуйте изменять свойства Stertch и AvtoSize компоненты Image.


Дата добавления: 2015-10-28; просмотров: 187 | Нарушение авторских прав


Читайте в этой же книге: Методические указания. | Decision Cube. | Порядок выполнения работы | Сохранение файлов проекта | Основные события формы | Порядок выполнения работы | Постановка задачи | Выполнение работы | Подсказки на строке состояния | Прокрутка в отдельной прямоугольной области |
<== предыдущая страница | следующая страница ==>
Всплывающее меню| Проектирование строки состояния

mybiblioteka.su - 2015-2024 год. (0.014 сек.)