- •Содержание
- •Введение
- •Лабораторная работа № 13 Создание простых форм. Программирование кнопок
- •Теоретические сведения Назначение и состав окон для визуальной разработки по в Delphi 7
- •Объект tForm(форма)
- •Объект tLabel (текстовое поле)
- •Объект tButton (кнопка)
- •Преобразование типов
- •Метод установления фокуса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 14 Интерактивный ввод и вывод. Обработка исключительных ситуаций
- •Теоретические сведения Компонент tEdit (поле редактирования)
- •Компонент tRadioButton (переключатель)
- •Пример 14.1. При нажатии на кнопки «Ответ» в окне появляется строка, соответствующая выбранному переключателю (рис. 14.1)
- •Обработка события, вызванного нажатием на кнопку, имеет такой вид:
- •Процедуры и функции, реализующие диалоговые окна
- •Обработчики исключений
- •Пример 14.2. Вычислить значение функции . Экранная форма программы показана на рис. 14.5.
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 15 Программирование циклов. Компоненты: флажок, группа компонентов, главное меню, контекстное меню, список действий, область просмотра
- •Теоретические сведения Компонент tMemo (область просмотра)
- •Пример 15.1. В многострочный редактор при нажатии кнопки выводятся номера строк. Экранная форма программы показана на рис. 15.1.
- •Компонент tCheckBox (флажок)
- •Пример 15.2. Флажками отмечаются используемые кредитные карточки и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.2.
- •Панель tGroupBox (группы компонентов)
- •Пример 15.3. С помощью флажков выбирают продукты из списка и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.3.
- •Список действий (tActionList)
- •Главное меню (tMainMenu)
- •Пример 15.5. Создан простой редактор содержащий меню. Экранная форма программы показана на рис. 15.7.
- •Обработка событий выбора пунктов меню имеет вид
- •Всплывающее меню (tPopupMenu)
- •Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 16Обработка динамических массивов данных. КомпонентTStringGrid(Таблица строк)
- •Теоретические сведения Компонент tStringGrid (таблица строк)
- •Implementation
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 17Работа с объектами. Инкапсуляция. Наследование. Полиморфизм. Создание заставки
- •Теоретические сведения Понятие класса и объекта
- •Инкапсуляция и свойства объекта
- •Наследование
- •Полиморфизм и виртуальныеметоды
- •Директивы, используемые при объявлении класса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 18Компоненты для работы с файлами и каталогами
- •Теоретические сведения Компоненты для работы с файлами и каталогами
- •Выбор дисковода
- •Просмотр и перемещение по дереву каталогов
- •Просмотр списка и выбор имени файла
- •Выбор маски для списка файлов
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 19Создание многооконных приложений (mdi). Строка Состояний
- •Теоретические сведения Компонент tStatusBar(строка состояний)
- •Многооконные приложения
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 20КомпонентTChart для Построение диаграмм различных типов. Создание библиотек динамической компоновки (Dll). Статическое подключение Dll
- •Теоретические сведения Компонент tChart (диаграмма)
- •Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
- •Implementation
- •Создание библиотеки динамической компоновки (dll)
- •Пример 20. 2. Создать библиотеку содержащую функции сложения целых и вещественных чисел, а также строк. Код библиотеки имеет вид
- •Статический вызов библиотеки
- •Пример 20.3. Используем статически функции, описанные в библиотеке (см. Пример 20.2). Экранная форма программы показана на рис. 20.5. Фрагмент кода с использованием функций из библиотеки:
- •Implementation
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 21Использование форм в библиотеках динамической компоновки (Dll). Динамическое подключение Dll.
- •Теоретические сведения Динамический вызов библиотеки
- •Implementation
- •Использование форм в библиотеках
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Домашнее задание № 6Компоненты: Поля редактирования, группа переключателей. Обработка событий клавиатуры
- •Теоретические сведения Компонент группа переключателей (tRadioGroup)
- •События клавиатуры
- •Порядок выполнения работы
- •Варианты:
- •Контрольные вопросы
- •Домашнее задание № 7Создание Справочного файла
- •Теоретические сведения Создание справочной системы
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Многооконные приложения
Многооконное приложение может работать одновременно с несколькими различными документами (объектами). В таком приложении главное окно содержит дочерние окна, размещенные в его пределах. В дочерних окнах обычно выполняется просмотр и редактирование документов.
Многодокументное приложение имеет одну главную форму, внутри которой может размещаться несколько дочерних окон. Тип окна (главное или дочернее) определяется свойством Formstyle, которое может принимать значения:
fsMDiForm — для главной формы приложения;
fsMDichild — для дочерних окон.
При разработке приложения описываются классы форм главного и одного дочернего окна. По умолчанию в проекте предусматривается автоматическое создание и отображение этих форм на экране после запуска приложения. Остальные дочерние окна (второе, третье и т. д.) должны динамически создаваться программным способом.
В процессе выполнения программы можно динамически создавать требуемое число экземпляров дочерней формы, например:
fmChild:=TfmChild.Create(Application) ;
fmChild.Caption:='Hoвoe дочернее окно';
После создания новой формы ее имя (в примере fmChild) указывает на экземпляр последней созданной формы. Для доступа ко всем дочерним формам используют свойство MDIChildren [I: Integer] типа TForm главной формы приложения.
Это свойство является массивом, который содержит дочерние окна многодокументного приложения. Нумерация окон начинается с нуля, нулевой номер имеет верхнее окно. Число дочерних окон многодокументного приложения определяется свойством MDIChildCount типа Integer.
Например, в процедуре
procedure TfmMain.mnuNuitiberClick(Sender: TObject) ;
var n: integer;
begin
for n:=0 to fmMain.MDIChildCount-1 do
fmMain.MDIChildren[n].Caption:='OKHO номер '+IntToStr(n); end;
в названия дочерних окон приложения выводятся номера этих окон (в свойстве MDichildren главной формы fmMain приложения).
Для доступа к активному дочернему окну удобно использовать свойство ActiveMDichild типа TForm главной формы. Это свойство определяет, какое дочернее окно находится в фокусе, и его можно использовать, например, для закрытия окна.
Так, например, в процедуре
procedure TfmMain.mnuCloseChildClick (Sender: TObject);
begin
if fmMain. ActiveMDichild <> nil then fmMain. ActiveMDichild. Close;
end;
перед закрытием формы выполняется проверка на ее существование.
Свойства MDichildren, MDichildCount и ActiveMDichild доступны для чтения и действуют во время выполнения программы.
Закрытие главного окна многодокументного приложения, как и в однодокументном приложении, приводит к завершению работы всего приложения. Закрытие дочернего окна имеет особенность, связанную с тем, что при попытке его закрыть по умолчанию происходит минимизация окна. Чтобы окно закрывалось привычным для пользователя способом, следует создать обработчик события OnClose дочерней формы:
procedure TfmChild.FormClose (Sender: TObject; var Action: TCloseAction) ;
begin
Action:=caFree;
end;
По умолчанию параметр-признак Action для дочерних окон имеет значение caMinimize и вместо закрытия дочерняя форма минимизируется.
Для управления дочерними окнами главная форма имеет несколько методов, с помощью которых можно упорядочивать окна и перемещаться между ними.
При использовании методов Cascade и Tile дочерние окна упорядочиваются располагаясь каскадом или мозаикой соответственно. По умолчанию новые дочерние окна располагаются каскадом.
При упорядочивании окон мозаикой вариант их размещения определяется свойством TileMode типа TTileMode, принимающим следующие значения:
tbHorizontal — дочернее окно располагается во всю ширину клиентской области родительской формы (по умолчанию);
tbVertical — дочернее окно располагается во всю высоту клиентской области родительской формы.
Для программного перемещения между окнами можно использовать методы Previous и Next, которые передают фокус и делают активным предыдущее и следующее дочернее окно, соответственно. Пользователь может переключаться между окнами с помощью мыши или комбинаций клавиш <Ctrl>+<Tab> и <Ctrl>+ +<Shift>+<Tab>.
Главная форма содержит Arrangeicons, предназначенный для упорядочивания пиктограмм свернутых окон. На несвернутые (неминимизированные) окна метод Arrangeicons не оказывает влияния.
Многие многодокументные приложения в главном меню имеют подменю Окно, в котором обычно размещаются команды, предназначенные для манипулирования дочерними окнами. Содержание этого подменю может быть следующим:
каскад;
мозаика;
следующее окно;
предыдущее окно.
При выборе одного из пунктов происходит вызов соответствующих методов, например, cascade или Next. Формируется это подменю обычным образом, т. е. путем создания пунктов меню и обработчиков события его выбора.
Кроме того, в пункте Окно главного меню часто содержится список раскрытых дочерних окон, в котором активное окно отмечается галочкой. Для автоматического отображения такого списка используется свойство windowMenu типа TMenuitem. В качестве пункта меню можно указывать только пункт верхнего уровня, т. е. пункт, название которого отображается непосредственно в строке меню.
Большинство событий формы многодокументного приложения генерируется и используется обычным способом. Исключением является событие OnActivate, генерируемое двумя способами. Когда приложение активно, при переключении между его дочерними окнами событие onActivate возникает при получении фокуса управления окном. Если приложение было неактивно, то в момент его активизации событие OnActivate возникает для главной формы.