- •Сборник лекций по дисциплине «Объектно – ориентированное программирование»
- •2202 «Автоматизированные системы обработки информации и управления»
- •Рассмотрено
- •Рецензент:
- •Содержание
- •Пояснительная записка
- •Лекция №1 Тема: Введение
- •1. Определение объектно-ориентированного программирования
- •2. Свойства, события и методы объекта
- •3. Конструкторы
- •4. Компоненты: визуальные и невизуальные
- •5. Классы, наследование
- •Лекция №2 Тема: Язык Object Pascal
- •1. Синтаксические правила языка
- •2. Компилятор и его директивы
- •3. Файлы проекта Delphi
- •4. Области видимости и время жизни
- •Лекция №3 Тема: Константы, переменные, типизированные константы, процедуры и функции
- •1. Константы
- •2. Переменная
- •3. Типизированные константы
- •4. Процедуры и функции
- •1. Определение операций
- •2. Арифметические операции
- •3. Операции отношения
- •4. Булевы операции
- •5. Операции со строками
- •6. Операции с указателями
- •7. Операции с множествами
- •8. Операции с классами
- •9. Операция @
- •10. Приоритет и ассоциативность операций
- •Лекция №5 Тема: Операторы
- •1. Оператор присваивания и его соотношение с методом Assign
- •2. Оператор передачи управления goto
- •3. Оператор with
- •4. Условные операторы выбора if
- •5. Условный оператор множественного выбора case
- •6. Оператор цикла for
- •7. Оператор цикла repeat
- •8. Оператор цикла while
- •9. Прерывание цикла: оператор break, процедуры Continue, Exit и Abort
- •Лекция № 6 Тема: Динамическое распределение памяти. Исключения. Сообщения Windows.
- •1. Динамическое распределение памяти
- •2. Исключения
- •3. Последовательность обработки исключений
- •4. Преднамеренная генерация исключений
- •5. Сообщения Windows и их обработка
- •Лекция №7 Тема: Типы данных в языке Object Pascal
- •Символьные типы данных
- •Типы строк
- •1. Классификация типов данных
- •2. Порядковые типы данных
- •3. Целые типы данных
- •4. Действительные типы данных
- •5. Булевы типы данных
- •6. Символьные типы данных
- •7. Типы строк
- •8. Перечислимые типы
- •9. Ограниченные типы
- •10. Множества
- •Лекция №8 Тема: Структурные типы данных
- •1. Указатели
- •2. Файлы
- •3. Массивы
- •4. Записи
- •Лекция №9 Тема: Интегрированная Среда Разработки (иср) Delphi
- •1. Основные положения интегрированной среды разработки
- •2. Палитра компонентов
- •3. Редактор кода и инспектор объектов
- •4. Перетаскивание и встраивание окон в иср
- •5. Настройка инструментальной панели, палитры компонентов и редктора кода
- •6. Настройка интегрированной среды
- •7. Проекты Delphi
- •Лекция №10 Тема: Формы
- •1. Использование форм
- •2. Характеристики формы
- •3. Организация взаимодействия форм
- •4. Особенности модальных форм
- •5. Процедуры и функции, реализующие диалоги
- •Лекция №11 Тема: Компоненты ввода и отображения текстовой информации
- •1. Классификация компонентов ввода и отображения текстовой информации
- •2. Основные свойства, события и методы компонентов Label, StaticText и Panel
- •3. Основные свойства, события и методы окон редактирования Edit и MaskEdit
- •Символы шаблона маски:
- •4. Основные свойства, события и методов многострочных окон редактирования Memo и Richedit
- •Общие свойства окон редактирования:
- •5. Основные свойства, события и методы компонентов выбора из списков — ListBox, CheckListBox и ComboBox
- •6. Основные свойства, события и методы таблицы строк — компонент StringGrid
- •Лекция №12 Тема: Кнопки, индикаторы, управляющие элементы
- •1. Классификация компонентов кнопок, индикаторов и управляющих эелементов
- •2. Основные свойства, события и методы управляющих кнопок Button и BitBtn
- •3. Основные события и свойства кнопки с фиксацией SpeedButton
- •4. Основные свойства и события группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
- •5. Основные свойства и события индикаторов CheckBox и CheckListBox
- •6. Основные свойства и события ползункиов и полос прокруток — компоненты TrackBar и ScrollBar
- •7. Основные свойства и события компонента Timer
- •Лекция №13 Тема: Компоненты меню
- •1. Основные свойства, события и методы главного меню — компонент MainMenu
- •2. Основные свойства, события и методы контекстного всплывающего меню — компонент PopupMenu
- •3. Горячие клавиши — компонент HotKey
- •Лекция №14 Тема: Системные диалоги
- •1. Общая характеристика компонентов — диалогов
- •2. Диалоги открытия и сохранения файлов — компоненты OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog
- •3. Фрагменты диалогов — компоненты DriveComboBox, DirectoryListBox, FilterComboBox, FileListBox и DirectoryOutline
- •4. Диалог выбора шрифта — компонент FontDialog
- •5. Диалог выбора цвета — компонент ColorDialog
- •6. Диалоги печати и установки принтера — компоненты PrintDialog и PrinterSetupDialog
- •Лекция №15 Тема: Ввод и отображение чисел, дат и времени
- •1. Классификация компонентов ввода и отображения чисел, дат и времени
- •2. Основные свойства, события и методы компонентов UpDown и SpinEdit
- •3. Основные свойства, события и методы компонента DateTimePicker
- •4. Основные свойства, события и методы компонентов MonthCalendar и Calendar
- •5. Компонент f1Book
- •Лекция №16 Тема: Компоненты отображения заголовков и иерархических данных
- •1. Классификация компонентов отображения заголовков и иерархических данных
- •2. Основные свойства, события и методы компонентов Header HeaderControl
- •3. Основные свойства, события и методы компонентов TreeView и OutLine
- •4.Основные свойства, события и методы компонента ListView
- •Лекция №17 Тема: Отображение графической и мультимедиа информации
- •1. Классификация компонентов отображения графической информации
- •2. Основные свойства, события и методы таблиц изображений — компоненты DrawGrid и StringGrid
- •3. Основные свойства, события и методы компонента Shape
- •4. Основные свойства, события и методы компонента Chart
- •5. Основные свойства, события и методы компонентов страницы ActiveX — fiBook, Chartfx, Graph
- •6. Классификация компонентов отображения мультимедиа - компоненты Animate, MediaPlayer, ProgressBar, Gauge
- •7. Основные свойства, события и методы компонентов ProgressBar и Gauge
- •Лекция №18 Тема: Панели и компоненты внешнего оформления
- •1. Общая характеристика компонентов внешнего оформления
- •2. Панели общего назначения — компоненты Panel, GroupBox, Bevel, ScrollBox, Splitter
- •Некоторые свойства компонента Panel:
- •3. Многостраничные панели — компоненты TabControl, PageControl, TabSet, TabbedNoteBook, NoteBook
- •4. Инструментальные панели — компоненты ToolBar и PageScroller
- •5. Перестраиваемые панели - компоненты ControlBar и CoolBar
- •6. Полоса состояния StatusBar
- •7. Фреймы
- •Лекция №19 Тема: Компоненты организации управления приложением
- •1. Характеристика компонентов организации управления приложением
- •2. Диспетчеризация событий — компоненты, связанные с ActionList
- •3. Список изображений — компонент ImageList
- •4. Приложение — компонент ApplicationEvents и объект Application
- •Лекция № 20
- •1.8. Изменение размеров панелей при использовании выравнивания
- •1. Требования к интерфейсу пользователя приложений для Windows
- •1.1. Цветовое решение приложения
- •1.2. Шрифты текстов
- •1.3. Требования к меню
- •1.4. Компоновка форм
- •1.5. Последовательность фокусировки элементов
- •1.6. Подсказки и контекстно-зависимые справки
- •1.7. Проектирование окон с изменяемыми размерами
- •1.8. Изменение размеров панелей при использовании выравнивания
- •1.9. Изменение местоположения и размеров компонентов
- •1.10. Панели с перестраиваемыми границами
- •1.11. Ограничение пределов изменения размеров окон и компонентов
- •Контрольные вопросы:
- •Рекомендуемая литература: 1.1. Лекция № 21 Тема: Перетаскивание объектов
- •1. Перетаскивание информации об объектах — технология Drag&Drop
- •2. Перетаскивание и встраивание объектов — Drag&Doc. Плавающие окна
- •Лекция№22 Тема: Печать и разработка отчетов
- •1. Печать с помощью функций файлового ввода/вывода
- •2. Методы компонентов, обеспечивающие печать
- •3. Печать файлов средствами стандартных приложений Windows с помощью функции ShellExecute и обращения к серверам сом
- •4. Печать с помощью объекта Printer
- •5. Подготовка и печать отчетов с помощью QuickReport
- •5.1.Быстрый отчет (QuickRep)
- •Специфичные свойства
- •5.2. Специфичные методы
- •5.3.Специфичные события
- •5.4. Компоненты отчета
- •5.5. Основные свойства компонентов
- •Самостоятельная работа: Сформировать составной отчет.
- •Лекция № 23 Тема: Графика План:
- •2. Форматы графических файлов
- •3. Классы для хранения графических объектов tPicture, tBitMap, Tlcon и tMetafile
- •4. Редактор Изображений Image Editor
- •4.1. Создание файла изображения
- •4.2. Работа с файлами ресурсов
- •4.2.1.Создание файла ресурсов
- •4.2.2.Подключение файла ресурсов
- •5. Графические возможности Delphi
- •5.1. Холст
- •5.2. Карандаш и кисть
- •Карандаш
- •5.3. Вывод текста
- •5.4. Методы вычерчивания графических примитивов
- •5.4.1. Линия
- •5.4.2 Ломаная линия
- •5.4.3 Окружность и эллипс
- •5.4.4 Дуга
- •5.4.5 Прямоугольник
- •5.4.6 Многоугольник
- •5.4.7 Сектор
- •5.4.8 Точка
- •Самостоятельная работа: На поверхности диалогового окна, в точке нажатия левой кнопки мыши вычертить контур пятиконечной звезды.
- •Лекция № 24 Тема: Мультимедиа и анимация План:
- •1.1.2 Процедуры воспроизведения звуков Веер, MessageBeep и PlaySound
- •1.1.3. Универсальный проигрыватель MediaPlayer
- •1.1.4 Воспроизведение немых видео клипов — компонент Animate
- •2. Мультипликация
- •2.1. Метод базовой точки
- •3. Создание анимации
- •Лекция № 25 Тема: Взаимодействие приложения с внешними программами
- •2. Управление окнами внешних программ
- •1.1. Запуск внешней программы функцией WinExec
- •2. Управление окнами внешних программ
- •2.1. Определение дескриптора окна приложения
- •2.2. Некоторые функции api Windows для управления окнами
- •3. Создание динамически подключаемых библиотек (dll)
- •Лекция№26 Тема: Сообщения Windows и их обработка
- •2. Посылка сообщений
- •3. Обработка сообщений
- •4. Определение собственных сообщений
- •1. Сообщения Windows
- •2. Посылка сообщений
- •2.1. Функция SendMessage
- •2.2. Функция PostMessage
- •3. Обработка сообщений
- •4. Определение собственных сообщений
- •Лекция№27
- •1. Внедрение объектов
- •2. Технология связывания и внедрения объектов (ole)
- •3. Многопоточные приложения
- •4. Технология применения объектов com, dcom
- •Лекция №28 Тема: Динамический обмен данными — dde
- •1. Общие сведения
- •2. Установление контакта с сервером
- •3. Обмен данными между клиентом и сервером
- •3.1. Построение приложения-сервера
- •3.2. Построение приложения-клиента
- •4. Запрос данных сервера
- •5. Постоянное отслеживание информации на сервере
- •6. Передача информации от клиента к серверу
- •Лекция №29 Тема: Разработка собственных компонентов
- •1. Создание новых компонентов
- •2.Создание и установка ActiveX-элементов
- •3. Создание и установка пакетов
- •4. Использование пакетов
- •Лекция №30 Тема: Создание справочной системы. Разработка тестовых файлов
- •1. Этапы разработки
- •2. Планирование системы справок
- •3. Создание текстовых файлов
- •3.1. Задание идентифицирующей строки и организация перекрестных ссылок
- •3.2. Задание названия раздела
- •3.3. Определение ключевых слов
- •3.4. Определение условий компиляции
- •3.5. Указание порядка просмотра связанных разделов
- •3.6. Вставка графики
- •3.7. Выполнение макрокоманд
- •3.8. Отображение текста раздела в дополнительном окне
- •Лекция №31 Тема: Разработка проектного файла справочной системы
- •1. Разработка проектного файла
- •1.1. Секция options
- •1.2. Секция files
- •1.3. Секция windows
- •1.4. Секция map
- •3. Компиляция, тестирование и связывание Help-файла с программой
- •4. Макрокоманды WinHelp
- •Рекомендуемая литература
Лекция № 20
Тема: Проектирование графического интерфейса пользователя
План:
1. Требования к интерфейсу пользователя приложений для Windows
1.1. Цветовое решение приложения
1.2. Шрифты текстов
1.3. Требования к меню
1.4. Компоновка форм
1.5. Последовательность фокусировки элементов
1.6. Подсказки и контекстно-зависимые справки
1.7. Проектирование окон с изменяемыми размерами
1.8. Изменение размеров панелей при использовании выравнивания
1.9. Изменение местоположения и размеров компонентов
1.10. Панели с перестраиваемыми границами
1.11. Ограничение пределов изменения размеров окон и компонентов
1. Требования к интерфейсу пользователя приложений для Windows
Под графическим интерфейсом пользователя (Graphical User Interface — GUI) подразумевается тип экранного представления, при котором пользователь может выбирать команды, запускать задачи и просматривать списки файлов, указывая на пиктограммы или пункты в списках меню, показанных на экране. Действия могут, как правило, выполняться с помощью мыши, либо нажатием клавиш на клавиатуре. Типичным примером графического интерфейса пользователя является Windows 95/98.
Для пользователя одним из принципиальных преимуществ работы с Windows является то, что большинство имеющихся приложений выглядят и ведут себя сходным образом.
1.1. Цветовое решение приложения
Цвет является мощным средством воздействия на психику человека. Именно поэтому обращаться с ним надо очень осторожно. Неудачное цветовое решение может приводить к быстрому утомлению пользователя, работающего с вашим приложением, к рассеиванию его внимания, к частым ошибкам. Слишком яркий или неподходящий цвет может отвлекать внимание пользователя или вводить его в заблуждение, создавать трудности в работе. А удачно подобранная гамма цветов, осмысленные цветовые акценты снижают утомляемость, сосредоточивают внимание пользователя на выполняемых в данный момент операциях, повышают эффективность работы. С помощью цвета вы можете на что-то намекнуть или привлечь внимание к определенным областям экрана. Цвет может также связываться с различными состояниями объектов.
Надо стремиться использовать ограниченный набор цветов и уделять внимание их правильному сочетанию. Расположение ярких цветов, таких, как красный, на зеленом или черном фоне затрудняет возможность сфокусироваться на них. Не рекомендуется использовать дополнительные цвета. Обычно наиболее приемлемым цветом для фона будет нейтральный цвет, например, светло-серый (используется в большинстве продуктов Microsoft). Помните также, что яркие цвета кажутся выступающими из плоскости экрана, в то время как темные как бы отступают вглубь.
Цвет не должен использоваться в качестве основного средства передачи информации. Можно использовать различные панели, формы, штриховку и другие методики выделения областей экрана. Microsoft даже рекомендует разрабатывать приложение сначала в черно-белом варианте, а уже потом добавлять к нему цвет.
Нельзя также забывать, что восприятие цвета очень индивидуально. По оценке Microsoft девять процентов взрослого населения вообще страдают нарушениями цветовосприятия. Поэтому не стоит навязывать пользователю свое видение цвета, даже если оно безукоризненно. Надо предоставить пользователю возможность самостоятельной настройки на наиболее приемлемую для него гамму. К тому же не стоит забывать, что может быть кто-то захочет использовать вашу программу на машине с монохромным монитором.
Посмотрим теперь, как задаются цвета приложения, разрабатываемого в Delphi. Большинство компонентов имеют свойство Color (цвет), который вы можете изменять в Инспекторе Объектов при проектировании или программно во время выполнения (если хотите, чтобы цвета в различных режимах работы приложения были разные). Щелкнув на этом свойстве в Инспекторе Объектов, вы можете увидеть в выпадающем списке большой набор предопределенных констант, обозначающих цвета. Все их можно разбить на две группы: статические цвета типа cIBlack — черный, clGreen — зеленый и т.д., и системные цвета типа clWindow — текущий цвет фона окон, clMenuText — текущий цвет текста меню и т.д.
Статические цвета вы выбираете сами, и они будут оставаться неизменными при работе приложения на любом компьютере. Это не очень хорошо, поскольку пользователь не сможет адаптировать вид вашего приложения к своим потребностям. При выборе желательной ему цветовой схемы пользователь может руководствоваться самыми разными соображениями: начиная с практических (например, он может хотеть установить черный фон, чтобы экономить энергию батареи), и, кончая эстетическими (он может предпочитать, например, шкалу оттенков серого, потому что не различает цвета). Все это он не может делать, если вы задали в приложении статические цвета. Но уж если по каким-то соображениям вам надо их задать, старайтесь использовать базовый набор из 16 цветов. Если вы попытаетесь использовать 256 (или, что еще хуже, 16 миллионов) цветов, это может замедлить работу вашего приложения, или оно будет выглядеть плохо на машине пользователя с 16 цветами. К тому же подумайте (а, как правило, это надо проверить и экспериментально), как будет выглядеть ваше приложение на монохромном дисплее.
Исходя из изложенных соображений, везде, где это имеет смысл, следует использовать для своего приложения палитру системных цветов. Это те цвета, которые устанавливает пользователь при настройке Windows. Когда вы создаете новую форму или размещаете на ней компоненты, Delphi автоматически присваивает им цвета в соответствии со схемой цветов, установленной в Windows. Конечно, вы будете менять эти установки по умолчанию. Но если при этом вы используете соответствующие константы системных цветов, то, когда пользователь изменит цветовую схему оформления экрана Windows, ваше приложение также будет соответственно меняться, и не будет выпадать из общего стиля других приложений. Не злоупотребляйте в приложении яркими цветами. Пестрое приложение - обычно признак дилетантизма разработчика, утомляет пользователя, рассеивает его внимание. Как правило, используйте системные цвета, которые пользователь может перестраивать по своему усмотрению. Из статических цветов обычно имеет смысл использовать только clBlack — черный, clWhite - белый и cIRed - красный цвет предупреждения об опасности.
Единству цветового решения отдельных частей экрана способствует также использование свойства ParentColor. Если это свойство установлено в true, то цвет компонента соответствует цвету содержащего его контейнера или формы. Это обеспечивает единство цветового решения окна и, кроме того, позволяет программно изменять цвет сразу группы компонентов, если вы, например, хотите, чтобы их цвет зависел от текущего режима работы приложения. Для такого группового изменения достаточно изменить только цвет контейнера.
