Слайд 1Система визуального
объектно-ориентированного программирования Delphi
Слайд 2ОАиП 2 курс 2 семестр
Компонент Chart
Используется для создания диаграмм
и графиков.
Слайд 3ОАиП 2 курс 2 семестр
Свойства Chart
Основное свойство SeriesList, которое
устанавливает вид диаграммы и ее настройки
Слайд 4ОАиП 2 курс 2 семестр
TreeChart Gallery
Каждая диаграмма это отдельная
серия данных, которая может отображаться на экране. Серия может быть
одна или несколько
Слайд 5ОАиП 2 курс 2 семестр
Для задания отображаемых значений надо
использовать методы серий Series.
Метод Clear очищает серию от занесенных
ранее данных.
Метод Add:
Add(Const AValue: Double; Const ALabel: String; AColor:
TColor)
позволяет добавить в диаграмму новую точку.
Параметр AValue соответствует добавляемому значению, параметр ALabel — название, которое будет отображаться на диаграмме и в легенде,
AColor — цвет. Параметр ALabel — не обязательный, его можно задать пустым: ''.
Метод AddXY:
AddXY(Const AXValue, AYValue: Double; Const ALabel:
String; AColor: TColor)
позволяет добавить новую точку в график функции. Параметры AXValue и AYValue соответствуют аргументу и функции.
Слайд 6ОАиП 2 курс 2 семестр
Программа строит диаграммы двух типов
по выбору пользователя по результатам контрольной работы
Слайд 7ОАиП 2 курс 2 семестр
По созданию формы заполняем таблицу
StringGrid
Слайд 8ОАиП 2 курс 2 семестр
Обработка события нажатия клавиши:
программный подсчет
общего числа учащихся
Слайд 9ОАиП 2 курс 2 семестр
Обработка события нажатия клавиши:
заполнение диаграммы
и ее отображение
Слайд 10Системные диалоги (Dialogs)
Страница Dialogs содержит компоненты, используемые для создания различных
диалоговых окон, общепринятых в приложениях Windows. Диалоги используются для указания
файлов или выбора установок.
Слайд 11ОАиП 2 курс 2 семестр
Основные диалоги
Слайд 12ОАиП 2 курс 2 семестр
Основные диалоги
Слайд 13ОАиП 2 курс 2 семестр
Основные свойства
Execute - основной метод,
которым производится обращение к любому диалогу.
Эта функция открывает диалоговое
окно и, если пользователь произвел в нем какой-то выбор, то функция возвращает true.
Если же пользователь в диалоге нажал кнопку Отмена или клавишу Esc, то функция Execute возвращает false.
Поэтому стандартное обращение к диалогу имеет вид:
if <имя компонента-диалога>.Execute
then <операторы, использующие выбор пользователя>;
Слайд 14ОАиП 2 курс 2 семестр
Основные свойства
FileName – имя выбранного
пользователем файла в виде строки.
Filter - типы искомых файлов,
появляющиеся в диалоге в выпадающем списке <Тип файла>.
Слайд 15ОАиП 2 курс 2 семестр
Основные свойства
Все диалоги
являются невизуальными компонентами, и могут быть расположены в любой части
окна или скрыты. Пользователю они не видны.
Слайд 16Все свойства этих компонентов одинаковы, только их смысл несколько различен
для открытия и закрытия файлов.
Основное свойство, в котором возвращается
в виде строки выбранный пользователем файл, — FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.
Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла, задаются свойством Filter.
Диалоги открытия и сохранения файлов — компоненты OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog
ОАиП 2 курс 2 семестр
Слайд 17В процессе проектирования это свойство проще всего задать с помощью
редактора фильтров, который вызывается нажатием кнопки с многоточием около имени
этого свойства в Инспекторе Объектов.
При этом открывается окно редактора, в левой панели которого (Filter Name) вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра.
ОАиП 2 курс 2 семестр
Слайд 18Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан
пользователю в момент открытия диалога.
Свойство InitialDir определяет начальный каталог,
который будет открыт в момент начала работы пользователя с диалогом. Если значение этого свойства не задано, то открывается текущий каталог или тот, который был открыт при последнем обращении пользователя к соответствующему диалогу в процессе выполнения данного приложения.
Свойство DefaultExt определяет значение расширения файла по умолчанию. Если значение этого свойства не задано, пользователь должен указать в диалоге полное имя файла с расширением.
Свойство Title позволяет вам задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе.
ОАиП 2 курс 2 семестр
Слайд 19В компонентах диалогов открытия и сохранения файлов предусмотрена возможность обработки
ряда событий.
Событие OnCanClose возникает при нормальном закрытии пользователем диалогового
окна после выбора файла.
При отказе пользователя от диалога — нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает.
В обработке события OnCanClose можно произвести дополнительные проверки выбранного пользователем файла и, если по условиям вашей задачи этот выбор недопустим, вы можете известить об этом пользователя и задать значение false передаваемому в обработчик параметру CanClose. Это не позволит пользователю закрыть диалоговое окно.
ОАиП 2 курс 2 семестр
Слайд 20Можно также написать обработчики событий OnFolderChange — изменение каталога, OnSelectionChange
— изменение имени файла, OnTypeChange — изменение типа файла. В
этих обработчиках вы можете предусмотреть какие-то сообщения пользователю.
В Delphi имеются специализированные диалоги открытия и закрытия графических файлов: OpenPictureDialog и SavePictureDialog.
Диалоговые окна, открываемые этими файлами, отличаются от открываемых компонентами OpenDialog и SaveDialog удобной возможностью просматривать изображения в процессе выбора файла.
Свойства компонентов OpenPictureDialog и SavePictureDialog ничем не отличаются от свойств компонентов OpenDialog и SaveDialog.
ОАиП 2 курс 2 семестр
Слайд 21Единственное отличие — заданное значение по умолчанию свойства Filter в
OpenPictureDialog и SavePictureDialog.
В этих компонентах заданы следующие фильтры:
All
(*.jpg; *.jpeg; *.bmp; *.ico; *.emf; *.wmf)
JPEG Image File (*.jpg)
JPEG Image File (*.jpeg)
Bitmaps (*.bmp)
Icons (*.ico)
Enhanced Metafiles (*.emf)
Metafiles (*.wmf).
ОАиП 2 курс 2 семестр
Слайд 22Компонент ColorDialog вызывает диалоговое окно выбора цвета.
Диалог выбора цвета —
компонент ColorDialog
ОАиП 2 курс 2 семестр
Основное свойство компонента ColorDialog
— Color.
Это свойство соответствует тому цвету, который выбрал в диалоге пользователь.
Слайд 23Компонент FontDialog вызывает диалоговое окно выбора атрибутов шрифта. В нем
пользователь может выбрать имя шрифта, его стиль (начертание), размер и
другие атрибуты.
Диалог выбора шрифта — компонент FontDialog
ОАиП 2 курс 2 семестр
Слайд 24Свойства MaxFontSize и MinFontSize устанавливают ограничения на максимальный и минимальный
размеры шрифта. Если значения этих свойств равны 0 (по умолчанию),
то никакие ограничения на размер не накладываются.
Если же значения свойств заданы, то в списке Размер диалогового окна появляются только размеры, укладывающиеся в заданный диапазон.
При попытке пользователя задать недопустимый размер ему будет выдано предупреждение вида «Размер должен лежать в интервале ...» и выбор пользователя отменится.
ОАиП 2 курс 2 семестр
Слайд 25Компоненты FindDialog и ReplaceDialog, вызывающие диалоги поиска и замены фрагментов
текста, очень похожи и имеют одинаковые свойства, кроме одного, задающего
заменяющий текст в компоненте ReplaceDialog.
Диалоги поиска и замены текста — компоненты FindDialog и ReplaceDialog
ОАиП 2 курс 2 семестр
Слайд 26Компоненты имеют следующие основные свойства:
FindText - Текст, заданный пользователем
для поиска или замены. Программно может быть установлен как начальное
значение, предлагаемое пользователю.
ReplaceText - Только в компоненте ReplaceDialog — текст, который должен заменять FindText.
Position - Позиция левого верхнего угла диалогового окна, заданная типом TPoint — записью, содержащей поля X (экранная координата по горизонтали) и Y (экранная координата по вертикали) .
Options - Множество опций.
ОАиП 2 курс 2 семестр
Слайд 27Сами по себе компоненты FindDialog и ReplaceDialog не осуществляют ни
поиска, ни замены. Они только обеспечивают интерфейс с пользователем. А
поиск и замену надо осуществлять программно.
Для этого можно пользоваться событием OnFind, происходящим, когда пользователь нажал в диалоге кнопку Найти далее, и событием OnReplace, возникающим, если пользователь нажал кнопку Заменить или Заменить все.
В событии OnReplace узнать, какую именно кнопку нажал пользователь, можно но значениям флагов frReplace и frReplaceAll.
ОАиП 2 курс 2 семестр
Слайд 28ОАиП 2 курс 2 семестр
Программа демонстрирует работу
с основными диалогами, меню, компонентами Memo, CheckBox, Image, ColorBox и
разными формами.
Слайд 29ОАиП 2 курс 2 семестр
Размещаем на форме
все нужные компоненты и создаем меню
Слайд 30ОАиП 2 курс 2 семестр
Создание контекстного меню и быстрых
клавиш
Слайд 31ОАиП 2 курс 2 семестр
Создание дополнительных форм – Form2,
Form3
Слайд 32ОАиП 2 курс 2 семестр
Обработка меню
Справка | Системные
диалоги
Слайд 33ОАиП 2 курс 2 семестр
Обработка меню
Справка | Об
авторе
Слайд 34ОАиП 2 курс 2 семестр
Функция MessageDlg используется для вывода
сообщения пользователю
function MessageDlg ( const Message : string; DialogType :
TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint ) : Integer;
Вызов MessageDlg выводит на экран диалоговое окно и ожидает ответа пользователя. Сообщение в окне задается параметром функции Message
Вид отображаемого окна задается параметром DialogType. Возможные значения этого параметра:
mtWarning - Окно замечаний (желтый восклицательный знак)
mtError - Окно ошибок (красный стоп-сигнал).
mtInformation - Информационное окно (голубой символ “I”)
mtConfirmation - Окно подтверждения (зеленый вопросительный знак)
mtCustom - Заказное окно без рисунка. Заголовок соответствует имени выполняемого файла приложения.
Слайд 35ОАиП 2 курс 2 семестр
Параметр Buttons определяет, какие кнопки
будут присутствовать в окне. Тип TMsgDlgBtns параметра AButtons является множеством,
которое включает различные кнопки. Возможные значения видов кнопок:
mbYes Кнопка с надписью 'Yes'
mbNo Кнопка с надписью 'No'
mbOK Кнопка с надписью 'OK'
mbCancel Кнопка с надписью 'Cancel'
mbHelp Кнопка с надписью 'Help'
mbAbort Кнопка с надписью 'Abort'
mbRetry Кнопка с надписью 'Retry'
mbIgnore Кнопка с надписью 'Ignore'
mbAll Кнопка с надписью 'All'
Список необходимых кнопок заключается в квадратные скобки [ ], поскольку параметр Buttons является множеством.
Слайд 36ОАиП 2 курс 2 семестр
Параметр HelpContext определяет экран контекстной
справки, соответствующий данному диалоговому окну. Этот экран справки будет появляться
при нажатии пользователем клавиши F1. Если вы справку не планируете, при вызове MessageDlg надо задать нулевое значение параметра HelpContext.
Функция MessageDlg возвращает значение, соответствующее выбранной пользователем кнопке. Возможные возвращаемые значения:
mrNone mrAbort mrYes
mrOk mrRetry mrNo
mrCancel mrIgnore mrAll
Слайд 37ОАиП 2 курс 2 семестр
Обработка меню
Файл | Открыть
и Файл | Сохранить
Слайд 38ОАиП 2 курс 2 семестр
Обработка меню
Файл | Сохранить
как
Слайд 39ОАиП 2 курс 2 семестр
Обработка меню
Файл |
Редактирование | Изменить шрифт
Слайд 40ОАиП 2 курс 2 семестр
Обработка меню
Файл |
Редактирование | Изменить цвет | ColorDialog
Слайд 41ОАиП 2 курс 2 семестр
Обработка меню
Файл |
Редактирование | Изменить цвет | ColorBox
Слайд 42ОАиП 2 курс 2 семестр
Обработка меню
Файл |
Редактирование | Изменить цвет | ColorBox
Слайд 43ОАиП 2 курс 2 семестр
Обработка меню
Рисунок | Открыть
и Рисунок | Сохранить
Слайд 44ОАиП 2 курс 2 семестр
Обработка меню
Текст | Найти
и Текст | Заменить
Слайд 45ОАиП 2 курс 2 семестр
Обработка индикатора
Только чтение
Слайд 46ОАиП 2 курс 2 семестр
Timer
Позволяет задавать в приложении интервалы
времени. Таймер — невизуальный компонент.
Свойства:
Interval – интервал времени в миллисекундах
Enabled
- доступность.
Если Interval = 0 или Enabled=false, то таймер перестает работать.
Основное событие – OnTimer. В нем записываются операторы, которые должны выполняться по запуску таймера (по истечению времени, указанному в Interval).
Чтобы запустить отсчет времени надо или задать Enabled = true, если установлено положительное значение Interval, или задать положительное значение Interval, если Enabled = true.
Слайд 47ОАиП 2 курс 2 семестр
Способы получения системной даты и
времени
Слайд 48ОАиП 2 курс 2 семестр
Программа отображает на форме
текущее
время и дату
Слайд 49ОАиП 2 курс 2 семестр
Компонент отображения
иерархических данных -
TreeView
Отображает данные в виде дерева, в котором пользователь может выбирать
нужный ему узел.
Во время проектирования формирование дерева осуществляется в окне редактора узлов дерева. Это окно вызывается двойным щелчком на компоненте TreeView или нажатием кнопки с многоточием около свойства Items в окне Инспектора Объектов.
Слайд 50ОАиП 2 курс 2 семестр
Основные свойства
Items – узлы дерева.
Каждый узел имеет тип TTreeNodes.
Доступ к информации об отдельных узлах
осуществляется через этот индексный список узлов.
Например, TreeView1.Items[1] — это узел дерева с индексом 1 (второй узел дерева).
Каждый узел является объектом типа TTreeNodes, обладающим своими свойствами и методами.
Selected – выбранный узел.
Items.Text – содержание узла.
Дерево можно формировать или перестраивать и во время выполнения приложения. Для этого служит ряд методов объектов типа TTreeNodes. Следующие методы позволяют вставлять в дерево новые узлы:
Слайд 51Items.Add(Node,s) – Добавляет новый узел с текстом S как последний
узел уровня, на котором расположен Node.
Items.AddFirst (Node,s) – Вставляет
новый узел с текстом S как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1.
Items.Insert (Node,s) - Вставляет новый узел с текстом S сразу после узла Node на тот же уровень. Индексы последующих узлов увеличиваются на 1.
AddChild(Node,s) - Добавляет узел с текстом S как последний дочерний узла Node.
Items.AddChildFirst(Node,s) – Вставляет новый узел с текстом S как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1.
Каждый из этих методов возвращает вставленный узел.
Для удаления узлов имеется два метода: Clear, очищающий все дерево, и Delete(Node: TTreeNode), удаляющий указанный узел Node и все его узлы — потомки.
ОАиП 2 курс 2 семестр
Слайд 52ОАиП 2 курс 2 семестр
Компонент отображения
иерархических данных -
ListView
Позволяет отображать данные в виде списков, таблиц, крупных и мелких
пиктограмм.
Слайд 53Классы и объекты.
Поля, методы, свойства, события.
Области видимости элементов
класса
ОАиП 2 курс 2 семестр
Слайд 54Классом называется структура языка, которая может иметь в своем составе
переменные, функции и процедуры. Переменные, в зависимости от предназначения именуются
полями или свойствами. Процедуры и функции класса - методами.
Например:
type TMyObject = class(TObject)
MyField: Integer;
function MyMethod: Integer;
end;
Поля объекта аналогичны полям записи [record]. Методы - это процедуры и функции. описанные внутри класса и предназначенные для операций над его полями. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который и вызвал.
Класс и объект
ОАиП 2 курс 2 семестр
Слайд 55Чтобы использовать класс в программе, нужно объявить переменные этого типа.
Переменная объектного типа называется экземпляром класса или объектом:
var AMyObject: TMyObject;
Класс
- это описание, объект - то, что создано в соответствии с этим описанием. Объект "появляется на свет" в результате вызова специального метода, который инициализирует объект - конструктора. Созданный объект уничтожается другим методом – деструктором.
ОАиП 2 курс 2 семестр
Слайд 56Поля класса являются переменными, объявленными внутри класса. Они предназначены для
хранения данных во время работы экземпляра класса [объекта].
Ограничений на тип
полей в классе не предусмотрено. В описании класса поля должны предшествовать методам и свойствам. Обычно поля используются для обеспечения выполнения операций внутри класса.
Методом называется объявленная в классе функция или процедура, которая используется для работы с полями и свойствами класса.
Обращаться к свойствам класса можно только через его методы. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который вызвал. Поэтому обрабатываться будут данные именно того объекта, который вызвал метод.
Поля и методы
ОАиП 2 курс 2 семестр
Слайд 57В Delphi все классы являются потомками класса "TObject". Унаследованные от
класса-предка поля и методы доступны в дочернем классе; если имеет
место совпадение имен методов, то говорят что они перекрываются.
В зависимости от того, какие действия происходят при вызове, методы делятся на три группы.
Статические методы (полностью перекрываются в классах потомках при их переопределении. При этом можно полностью изменить объявление метода),
Виртуальные [virtual] и динамические [dynamic] (при наследовании должны сохранять наименование и тип)
Перегружаемые [overload] методы (дополняют механизм наследования возможностью использовать нужный вариант метода [собственный или родительский] в зависимости от условий применения).
ОАиП 2 курс 2 семестр
Слайд 58Те из явлений или процессов, которые не изменяют своего содержания,
должны быть реализованы в виде статических методов.
Те же, которые
изменяются при переходе от общего к частному, лучше облечь в форму виртуальных методов.
Основные методы надо описать в классе-предке и затем перекрывать их в классах потомках.
В этом состоит принцип полиморфизма.
ОАиП 2 курс 2 семестр
Слайд 59При описании нового класса важен разумный компромисс. С одной стороны,
требуется скрыть от других методы и поля, представляющие собой внутренне
устройство класса. Маловажные детали на уровне пользователя объекта будут бесполезны и только помешают целостности восприятия.
С другой стороны, если слишком ограничить того, кто будет порождать классы потомки, и не обеспечить ему достаточный набор инструментальных средств и свободу маневра, то он и не станет использовать ваш класс.
Области видимости
ОАиП 2 курс 2 семестр
Слайд 60В модели языка Delphi существует механизм доступа к составным частям
объекта, определяющий области, где ими можно пользоваться [области видимости].
Поля
и методы могут относиться к четырем группам, отличающимися областями видимости.
Методы и свойства могут быть
общими [секция "public"],
личными [секция "private"],
защищенными [секция "protected"],
опубликованными [секция "published"].
Области видимости, определяемые директивами, таковы:
ОАиП 2 курс 2 семестр
Слайд 61поля, свойства и методы секции "public" не имеют ограничений на
видимость. Они доступны из других функций и методов объектов как
в данном модуле, так и во всех прочих, ссылающихся на него;
поля, свойства и методы, находящиеся в секции "private", доступны только в методах класса и в функциях, содержащихся в том же модуле, что и описываемый класс. Такая директива позволяет полностью скрыть детали внутренней реализации класса. Свойства и методы из секции "private" можно изменять, и это не будет сказываться на программах, работающих с объектами этого класса;
ОАиП 2 курс 2 семестр
Слайд 62поля, свойства и методы секции "protected" также доступны только внутри
модуля с описываемым классом. Но - и это главное -
они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях. Такие элементы особенно необходимы для разработчиков новых компонентов-потомков уже существующих. Оставляя свободу модернизации класса, они все же скрывают детали реализации от того, кто только пользуется объектами этого класса;
ОАиП 2 курс 2 семестр
Слайд 63область видимости, определяемая четвертой директивой - "published", имеет особое значение
для интерфейса визуального проектирования Delphi. В этой секции должны быть
собраны те свойства объекта, которые будут видны не только во время исполнения приложения, но и из среды разработки. Все свойства компонентов доступны через "Инспектор объектов", являются их опубликованными свойствами. Во время выполнения такие свойства общедоступны как и "public".
ОАиП 2 курс 2 семестр