- •Лабораторная работа №1
- •Методические указания.
- •Панель инструментов содержит стандартный набор значков «быстрых кнопок», а палитра компонент открыта на вкладке Standard.
- •Шаг 10. В теле функции наберите строку:
- •Аналогично перетащите кнопки Copy, Paste, Undo и разместите на поле панели инструментов:
- •Лабораторная работа № 2
- •1. Цель работы
- •2. Порядок выполнения работы
- •2.1. Консольное приложение
- •2.2. Понятие класса
- •2.3. Настройка панели инструментов
- •2.4. Добавление кода
- •2.5. Сохранение файлов проекта
- •2.6. Метки класса
- •2.7. Создание объекта класса в динамической памяти
- •2. Порядок выполнения работы.
- •3. Методические указания.
- •4. Задания к лабораторной работе
- •4.1. Порядок выполнения работы.
- •4.2. Методические указания.
- •5. Содержание отчета
- •6. Контрольные вопросы
- •Литература
- •Лабораторная работа №3
- •1. Цель работы
- •2. Постановка задачи
- •3. Порядок выполнения работы
- •Основные свойства формы
- •Основные события формы
- •Основные события компонента tButton:
- •4. Задания к лабораторной работе
- •Варианты заданий
- •5. Содержание отчета по лабораторной работе
- •6. Контрольные вопросы
- •Лабораторная работа №4
- •Цель работы
- •Порядок выполнения работы
- •Форма 1
- •Форма 2
- •Форма 3
- •Методические рекомендации по выполнению задания «Калькулятор»
- •Методические материалы по теме «Медиаплеер»
- •2.Постановка задачи:
- •3.Порядок выполнения задания:
- •Методические рекомендации к выполнению задания «Просмоторщик рисунков»
- •Создание меню
- •Шаг 12.1. По аналогии с созданием пункта Toolbar1 создайте самостоятельно пункт меню Statu Bar1 для отображения или закрытия панели состояния
- •Запрещенные пункты меню
- •Всплывающее меню
- •Диалоговые окна открытия и сохранения файла
- •Проектирование строки состояния
- •Подсказки на строке состояния
- •Прокрутка в рабочей области формы
- •Прокрутка в отдельной прямоугольной области
- •Полосы прокрутки
- •Кнопки-инструменты
- •Картинки на кнопках
- •Взаимоисключающие кнопки
- •Обработка нажатий кнопок
- •Подсказки к кнопкам
- •Управление видимостью панели инструментов
- •Методические материалы по теме «Текстовый редактор»
- •Методические материалы выполнения задания «Графический редактор»
- •2.Постановка задачи:
- •1. Основные теоретические сведения
- •1.1. Работа с ядром пакета прикладных программ mathlab
- •Выражение
- •Элементарные функции в mathlab (Большими буквами обозначены массивы, малыми – элемент массива или число)
- •Первой строки на три (б), объединение 3-й и 2-й строк (в)
- •Name(список_параметров)
- •Var1-выражение
- •1.2. Работа с пакетом Control System Toolbox
- •Создание объекта в tf-форме. Пусть требуется создать объект с передаточной функцией вида
- •Исследование переходной функции и весовой функции
- •Исследование реакции на произвольно заданное воздействие
- •Исследование афчх – амплитудно-фазовой частотной характеристики
- •Исследование лчх – логарифмических частотных характеристик
- •2. Порядок выполнения лабораторной работы
- •2.2. Содержание отчета
- •3. Контрольные вопросы
Диалоговые окна открытия и сохранения файла
Шаг 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 очень схожи между собой, оба являются объектно-ориентированными оболочками стандартных диалоговых окон Windows: 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 с тем, чтобы сразу после загрузки картинка имела нормальный размер.
Шаг 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.