- •Предисловие
- •Основы программирования
- •Понятие алгоритма.
- •Алгоритм Евклида.
- •Задача о поездах и мухе
- •Вместо лирического отступления
- •Этапы подготовки задачи для решения на компьютере
- •Примеры разработки алгоритмов
- •Решение квадратного уравнения.
- •Вычисление интегралов
- •Обработка результатов эксперимента
- •Решение системы линейных алгебраических уравнений
- •Введение в язык программирования Pascal
- •Основные элементы языка
- •Переменные. Стандартные типы.
- •Операции отношения
- •Раздел описаний переменных
- •Выражения. Порядок выполнения операций.
- •Константы
- •Комментарии в программе
- •Операторы
- •2.1.7.1. Оператор присваивания
- •2.1.7.2. Операторы ввода/вывода
- •2.1.7.3. Операторы инкремента и декремента
- •Среда разработки Lazarus
- •Русский язык в консольных приложениях
- •Первая программа
- •Открытие существующего проекта
- •Другие способы создания консольных приложений
- •Типовой пустой проект
- •Операции с целыми числами
- •Вместо лирического отступления 2
- •Стандартные функции с целыми аргументами
- •Операции с вещественными числами (тип real).
- •Форматирование вывода
- •Одновременное использование вещественных и целых чисел.
- •Другие стандартные функции с вещественными аргументами
- •Булевы переменные
- •Условные операторы.
- •2.1.22.1 Оператор if …. then
- •2.1.22.2. Оператор if …then ... else
- •Операторы цикла
- •2.1.23.1. Оператор цикла с предусловием
- •2.1.23.2. Оператор цикла с постусловием
- •2.1.23.3. Оператор цикла с параметром.
- •2.1.23.4. Второй вариант оператора цикла с параметром
- •Оператор выбора case
- •Организация простейшего контроля ввода данных.
- •Вычисление сумм сходящихся рядов
- •Реализация некоторых алгоритмов главы 1.
- •Программа решения задачи о поездах и мухе
- •Программа вычисления определенного интеграла
- •Более сложные элементы языка
- •Общая структура Паскаль – программы
- •Процедуры и функции
- •3.1.1.1 Структура процедуры
- •3.1.1.2. Структура функции
- •3.1.1.3 Глобальные и локальные переменные
- •3.1.1.4 Способы передачи параметров
- •3.1.1.5 Процедуры завершения
- •Еще раз о типах данных
- •Классификация типов данных
- •3.2.1.1 Целый тип
- •3.2.1.2. Интервальный тип
- •3.2.1.3. Перечислимый тип
- •3.2.1.4. Множества
- •3.2.1.5. Логический тип
- •3.2.1.6. Вещественный тип
- •3.2.1.7. Указатели
- •Обработка символьной информации в Паскале
- •Символьные и строковые типы данных.
- •3.3.1.1. Тип Char
- •3.3.1.2. Функции для работы с символами
- •3.3.1.3. Тип String
- •3.3.1.4. Строковые процедуры и функции
- •Массивы
- •Динамические массивы
- •Программа решения системы линейных алгебраических уравнений методом Гаусса
- •3.4.1.1. Вариант 1 – с goto
- •3.4.1.2. Вариант 2 – без goto
- •3.4.1.3. Вариант 3 – наилучшая реализация
- •Модули в Паскале
- •Структура модуля
- •Системные модули
- •3.5.2.1. Модуль CRT
- •Файлы
- •Тип данных – запись
- •Файловые типы
- •Процедуры для работы с файлами
- •3.6.3.1. Общие процедуры для работы с файлами всех типов
- •3.6.3.2. Процедуры для работы с текстовыми файлами
- •3.6.3.3. Процедуры для работы с типизированными файлами
- •3.6.3.4. Процедуры для работы с нетипизированными файлами
- •3.6.3.5. Организация контроля ввода/вывода при работе файлами
- •3.6.3.6. Создание простой базы данных с типизированными файлами.
- •Алгоритмы сортировки
- •Обменная сортировка (метод "пузырька")
- •Сортировка выбором
- •Сортировка вставками
- •Метод быстрой сортировки
- •Алгоритмы поиска
- •Поиск в массивах
- •Вставка и удаление элементов в упорядоченном массиве
- •Динамические структуры данных
- •Представление в памяти компьютера динамических структур.
- •Реализация стека с помощью массивов
- •Указатели
- •Стандартные операции с линейными списками
- •Реализация динамических структур линейными списками
- •4.3.6.1. Реализация стека
- •4.3.6.2. Реализация очереди с помощью линейного списка
- •4.3.6.3. Реализация двоичного дерева с помощью линейного списка
- •Сортировка и поиск с помощью двоичного дерева
- •Три источника и три составные части ООП.
- •Классы и объекты.
- •Обращение к членам класса.
- •Инкапсуляция
- •Спецификаторы доступа.
- •Свойства.
- •Наследование
- •Полиморфизм
- •Раннее связывание.
- •Позднее связывание.
- •Конструкторы и деструкторы.
- •Элементы графического интерфейса
- •Различия между консольными и графическими приложениями
- •Визуальное программирование в среде Lazarus
- •Создание графического приложения
- •Форма и ее основные свойства
- •Компоненты
- •Обработчики событий
- •Простейшие компоненты
- •6.3.5.1. Компонент TLabel
- •6.3.5.2. Кнопки TButton, TBitBtn и TSpeedButton
- •6.3.6.1. Компонент TEdit
- •6.3.6.2. Компонент TLabeledEdit
- •6.3.7.1. Компонент TMaskEdit
- •Специальные компоненты для ввода чисел
- •Тестирование и отладка программы
- •Компоненты отображения и выбора данных
- •6.3.10.1. Компонент TMemo
- •6.3.10.2. Компонент TStringGrid
- •6.3.10.3. Компоненты выбора
- •Компонент TListBox
- •Компонент TComboBox
- •Компоненты выбора – переключатели
- •6.3.10.4. Компоненты отображения структурированных данных
- •Компонент TTreeView
- •Компонент TListView
- •Организация меню. Механизм действий - Actions
- •6.3.11.1. Компонент TMainMenu
- •6.3.11.2. Компонент TToolBar
- •6.3.11.3. Компонент TActionList
- •6.3.11.4. Создание приложений с изменяемыми размерами окон
- •Послесловие
- •Литература
- •Алфавитный указатель
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
земпляр класса. Это делается с помощью объявления
var
Form1: TForm1;
Теперь мы можем работать с этим объектом, обращаясь к нему по имени
Form1.
6.3.2 Форма и ее основные свойства
При создании нового проекта появляется пустая форма (рис. 6.8.). Следует заметить, что форма и окно приложения это не одно и то же. Форма – это то,
что вы видите во время проектирования, а окно – это то, что видит пользова-
тель во время выполнения вашего приложения. Таким образом, с помощью формы вы проектируете вид окна вашего приложения. Кроме того, форме соот-
ветствует класс, производный от базового класса TForm.
В главе V мы с вами рассматривали спецификаторы доступа private, protected и public с помощью которых можно управлять видимостью членов класса извне.
Имеется еще один спецификатор – published (опубликованный). В этом разделе помещаются свойства, которые пользователь может устанавливать на этапе проектирования, но доступны и во время выполнения, т.е. содержат так называемую RTTI – информацию (run-time type information). Обычно в разделе published размещаются только свойства и события.
Все компоненты Lazarus имеют опубликованный интерфейс, который ото-
бражается в инспекторе объектов.
Рассмотрим подробнее некоторые свойства формы. Как вы уже поняли,
свойства формы, равно как и события, представляют собой опубликованную часть интерфейса класса формы. Их можно будет увидеть в инспекторе объек-
475
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
тов во вкладке Свойства, рис 6.12.
Рис. 6.12. Вкладка "Свойства" Инспектора объектов
Свойство Caption – заголовок окна, представляет собой некоторый текст.
По умолчанию присваивается значение "Form1". Желательно здесь указывать краткое содержание программы, например "Расчет заработной платы". Очень часто разработчики здесь выводят название программы и имя документа, свя-
занного с этой программой.
Свойство Name – имя формы в программе. По этому имени можно обра-
щаться к форме как к объекту в программе. По умолчанию присваивается имя
Form1. Желательно давать осмысленные имена, особенно если в программе имеется несколько форм. Именование должно подчиняться требованиям языка Паскаль, т.е. имя не должно содержать недопустимые символы, пробелы и т.д. (см. главу 2).
Свойство Left устанавливает координаты левого верхнего угла окна по горизонтали.
476
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
Свойство Top устанавливает координаты левого верхнего угла окна по вертикали.
Сами размеры окна задаются свойствами Height и Width. Размеры за-
даются в пикселах.
Положение окна при запуске определяется свойством Position, оно мо-
жет принимать следующие значения:
poDesigned – положение окна и его размеры остаются такими же, что и при проектировании;
poDefault – положение окна и его размеры определяется автоматически операционной системой;
poDefaultPosOnly – положение окна определяется автоматически опе-
рационной системой, а размеры соответствуют установкам при проектирова-
нии;
poDefaultSizeOnly – размеры окна определяется автоматически опе-
рационной системой, а положение соответствуют установкам при проектирова-
нии;
poScreenCenter или poDesktopCenter – окно выводится в центре экрана, размер определяется при проектировании;
poMainFormCenter – форма отображается в центре главной формы,
размер определяется при проектировании, если имеется только одна главная форма, то этот параметр соответствует poScreenCenter;
poOwnerFormCenter – форма отображается в центре той формы, кото-
рая является владельцем данной формы.
Для того чтобы выбрать нужное значение, необходимо щелкнуть на назва-
ние свойства. Появится раскрывающийся список, из которого и можно выбрать требуемое значение, рис. 6.13.
477
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
Рис. 6.13. Возможные значения свойства "Position"
Управлять положением формы на экране можно также с помощью свойст-
ва Align. Оно может принимать значения:
alNone – положение формы и его размеры не меняются; alBottom – форма располагается внизу экрана; alLeft – форма располагается в левой части экрана; alRight – форма располагается в правой части экрана; alTop – форма располагается вверху экрана; alClient – форма занимает весь экран;
478
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
Перечисленные свойства относятся к так называемым простым свойствам,
для задания которых достаточно просто ввести одно необходимое значение или выбрать из раскрывающегося списка также только одно значение.
Есть свойства, которые называются составными или сложными. Они поме-
чаются в инспекторе объектов знаком "+" или кнопкой с троеточием. Напри-
мер, свойство Font является составным. Составные свойства, как следует из названия, состоят из нескольких значений. На рис. 6.14 показан пример задания значений для свойства Font.
Рис. 6.14. Окно выбора шрифта (Linux)
С другими свойствами формы мы будем знакомиться в дальнейшем по ме-
ре необходимости.
Над объектами – экземплярами класса можно производить некоторые дей-
ствия, причем перечень действий определен в самом классе. Никаких других действий с ними производить нельзя. Эти действия иначе называются метода-
ми.
Например, для класса формы существует метод Show – показать, метод
479
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
Hide – скрыть, метод Close – закрыть.
В редакторе исходного кода Lazarus есть прекрасный инструмент
CodeTools с помощью которого можно просмотреть все свойства и методы того или иного класса.
Посмотрим, например свойства и методы класса TForm1. Для этого в ре-
дакторе исходного кода после строк
initialization
{$I unit1.lrs}
наберите Form1. и немного подождите. Перед вами появится список всех свойств и методов класса TForm1, рис. 6.15.
Рис. 6.15. Окно "Code Tools"
Пользуясь подсказками CodeTools можно значительно ускорить процесс набора кода программы.
Форма может быть модальной и немодальной. Модальная форма это такая форма, которая не позволяет открывать другие формы, пока она сама не будет закрыта. К таким формам чаще всего относятся диалоговые окна. Чтобы ото-
бразить форму в модальном режиме необходимо вызвать метод ShowModal.
По умолчанию главная форма приложения открывается в немодальном режиме.
480