
Типы методов
Методы могут быть статическими, динамическими, виртуальными, абстрактными (abstract). Тип метода определяется тем, как это метод будет перекрываться в потомках.
Все методы по умолчанию – статические. Статические методы могут перекрываться внутри потомков.
Свойства
Type TStudent = class
private
_Age: Integer;
_Name: String;
Public
Property Age: integer read GetAge write SetAge;
End;
Function TStudent.GetAge: integer;
Begin
Result := _Age;
End;
Procedure TSudent.SetAge(a: integer);
Begin
If (a>0) then _Age := a
Else ShowMessage(’Нельзя вводить отрицательный возраст!!!’);
End;
Var: s1: TStudent;
Begin
S1 := TStudent.Create;
S1.Age := 19;
ShowMessage(IntToStr(S1.Age));
Векторные свойства
Property Apoints [Index:integer]: TPoint read GetPoint write SetPoint;
По умолчанию – добавляется описание default;
Тип класса – Бобровский 93
Области видимости
Принцип инкапсуляции требует скрыть от других поля и методы определяющие внутренне устройство класса. (для этого и придуманы свойства) С другой стороны необходимо обеспечить достаточный набор средств для использования классов, в частности для порождения классов-потомков.
Любой элемент класса (поле, метод, свойство) принадлежит одной из 4 секций, определяющих область видимости элемента. Внутри каждой секции описываются поля, а далее – методы и свойства.
Общие элементы – public – видны из любых процедур и методов в данном модуле и из всех других, имеющих доступ к данному модулю
Личные – private – доступны только в методах класса и в подпрограммах из того же модуля, где описан класс. Внутрення реализация класса скрыта от внешних модулей и может быть изменена – это не будет сказываться на программах, использующих класс. По умолчанию считается, что элементы класса имеют область видимости private
Защищенные – protected – доступны только внутри модуля с описанием класса и во всех классах – потомках этого класса в других модулях. Такие элементы необходимы разработчикам новых компонентов.
Опубликованные – published. Аналогичны public, но содержат только свойства класса, которые доступны из среды Delphi для визуальнгого проектирования. Эти свойства можно изменять на этапе разработки программы из инспектора объектов.
Примеры
Любая секция может повторяться произвольное количество раз. Порядок следования секций может быть произвольным.
Программирование для Windows. События и сообщения.
Программа для Windows отличается от программы для DOS тем, что нет единого строгого алгоритма последовательного выполнения действий. Windows выполняет одновременно много программ и функционирует по другому принципу.
Она обрабатывает возникающие события – щелчок мышью, выбор пункта меню, нажатие на клавишу, достижение встроенным таймером определенного времени.
Windows посылает программам сообщения о произошедших событиях. Программы обычно находятся в состоянии ожидания и активизируется только при получении сообщений от windows –реагируют на них.
Сообщения обрабатываются программой последовательно – существует специальная очередь сообщений, пока не будут обработаны предыдущие сообщения из очереди, программа не выполнит новое.
Программа для Windows представляет собой набор процедур, обрабатывающих события. Системные события – изменения размеров окна, закрытие программы , переключение в программу программа на Delphi умеет выполнять автоматически используя стандартные обработчики событий. Но пользователь может и сам обработать события.
Событие – свойство объекта процедурного типа, значением которого является указатель на обработчик события. События имеют стандартные имена
OnCreate
OnDblClick
OnMouseDown
Обработчик события – метод объекта, имеющий стандартные параметры.
Для любых событий – параметр Sender:TObject, указывающий на объект источник события,
Для событий от мыши содержатся параметры
Button:TmouseButton, Shift:TshiftState, X,Y: integer)
Событие OnKeyDown
Key:Word; Shift:TshiftState
Визуальная разработка программ – компонентное программирование
Программа составляется из готовых компонентов – экземпляров классов, свойства которых настраиваются в инспекторе объектов.
Там же настраиваются обработчики событий – алгоритмы, составляющие программу.
Компонентный подход позволяет повторно использовать классы, созданные другими….
Программа состоит из нескольких окон, которые назыв. Формы и могут содержать визуальные компоненты. Описание формы и компонентов внутри нее обычно располагается в отедльном модуле. Форма создается командой NewForm из меню File
Создание программы состоит из двух этапов – этап конструирование формы и этап программирования.
На этапе конструирования формы
На форме размещаются компоненты из Палитры компонентов (для этого щелкаем мышью на компоненте, а затем в том месте формы, где нужно вставить объект ). Объект с помощью мыши можно перемещать по форме и изменять его размеры.
Настраиваются свойства компонента в инспекторе объектов вкладка Properties.
На этапе программирования
Задать имена обработчиков событий на вкладке Events инспектора объектов. По умолчанию обработчик – метод класса формы, имеющий имя, состоящее из двух частей – имени компонента и имени события без предлога On. Например обработчик щелчка мыши на компоненте Label1 будет называться Label1Click
Выполняем двойной щелчок на имени обработчика. При этом в исходный текст вставится заготовка обработчика событий с пустым телом. Остается написать тело обработчика.
Структура проекта Windows.
Главный файл – с расширением dpr,
Модули – расширение pas
Откомпилированные модули – dcu
Файлы ресурсов (иконки, курсоры и т.д.) – res
Описание формы – dfm
Иерархия визуальных компонентов в Delphi
TObject – TPersistent– TComponent – TControl– TGraphicControl —--- Label,Shape, Image,…
|-------TWinControl –––– TCustomControl –Form,Button, Edit…..
Каждый следующий класс наследует поля, методы и свойства предка.
TObject – предок всех классов. Содержит
constructor Create —создает объект, выделяя динмаческую память
destructor Destroy – освобождает память
procedure Free – уничтожает объект, если он был создан.
TPersistent добавляет методы, необходимые для размещения компонента в памяти ли в файле. Содержит в частности метод
procedure Assign(Source:TPersistent); Копирующий все данные из объекта Source в текущий объект.
TComponent – предок компонентов – объектов, свойства которых можно изменять при риазработке программы из среды Delphi. Содержит свойства
property Name:string — имя компонента (Delphi дает стандартные имена типа Label1,Edit2, но их можно изменить)
property Tag:longint – число, которое программист может использовать по своему усмторению.
Компонент может быть владельцем других компонентов и быть собственностью другого компонента (форма владеет кнопками).
Для этого используются свойства, например
property Owner:TComponent – содержит указатель на компонент-владелец данного
property ComponentCount: integer – количество компонентов, которыми владеет данный
property Components[index:integer]:TComponent – список компонентов, которыми владеет данный и т.д.
TControl – содержит свойства, методы и события общие для всех визуальных компонентов. Они называются элементы управления. Элементы управления отображаются на экране и могут реагировать на мышь и клавиатуру. Каждый элемент управления, кроме Формы имеет родительский элемент – указатель на него хранится в свойстве Parent. Элемент управления наследует от родителя стиль и премещается по экрану вместе с родителем. Элементы бывают либо оконные (могут получать управление и размещать на себе другие элементы) – TWinControl либо обычные – просто отображаемые на экране TGraphicControl.
Рассмотрим важнейшие свойства и методы элементов управления.
Размер и расположение на экране. Используют тип TPoint =record
x,y:integer
end;
Свойства целого типа
Left, Top определяют координаты левого верхнего угла компонента в пикселах относительно координат компонента-родителя.
Height, Width – высота и ширина компонента.
Изменить эти параметры можно либо по одному, присваивая новые значения свойствам, либо все вместе методом
procedure SetBounds (Left,Top, Width, Height:integer)
Из локальных координат относительно родителя в глобальные координаты на экране можно преобразовать с помощью метода
function ClientToScreen(P:TPoint):TPoint;
обратно-
function ScreenToClient(P:TPoint):TPoint;
2. Выравнивание и масштабирование.
Если логическое свойство AutoSize = true, то размер элемента подстраивается под его содержимое. (например под размер шрифта).
Свойство Align – выравнивание может принимать одно из значений
alNone – выравнивание отсутствует
alTop, alBottom, alLeft, alRight – по соответствующему краю
alClient – во весь размер родителя.
Свойство Anchors содержит множество привязок элемента к краям родителя.
Может содержать значения akTop,akBottom,akLeft,akRight.
Свойство Constraints содержит значение объекта из 4-х свойств – MinWidth,MaxWidth,MinHeight,MaxHeight – задающие минимальные и максимальные размеры компонента.
Внешний вид компонента.
Свойство Color задает цвет компонента (определены константы типа clBlue или clWindow), Cursor – указатель мыши, Font – шрифт для текста.
Строковое свойство Сaption задает заголовок компонента, Text – редактируемый текст.
Логическое свойство Visible может сделать объект видимым (присваивая true) или невидимым (false). То же самое можно сделать с помощью методов Hide и Show.
Свойство Enabled если в него записать False делает компонент неактивным (он отображатеся серым цветом)..
Свойство PopupMenu содержит указатель на контекстное меню.
Элемент управления может обрабатывать следующие события
OnClick – на элементе нажата и отпущена левая кнопка мыши
OnDblClick – произведен двойной щелчок мышью.
OnMouseDown – была нажата клавиша мыши. Параметр Button содержит информацию о том, какая кнопка была нажата mbLeft,mbRight или mbMiddle. X,Y – координаты указателя оносительно левого вехнего угла области компонента. Shift – состояние Shift,Ctrl,Alt.
OnMouseUp – была отпущена клавиша мыши.
OnMouseMove – мышь перемещается надо объектом.
Также есть события для реализации Drag’n’Drop.
Оконные элементы управления наследуются от TWinControl. Оконный элемент может быть родительским для других элементов (св-во Controls).
Оконные элементы обрабатывают событие от клавиатуры
OnKeyDown
Key:Word; Shift:TshiftState
OnKeyPress параметр Key:Char;
OnEnter – возникает, когда элемент становится активным – получает фокус ввода (мышь или TAB).
OnExit – когда элемент теряет фокус ввода
Предками всех визуальных элементов являются TCustomControl или TGraphicControl. Они имеют свойство Canvas (в переводе холст или канва) – с помощью которого можно рисовать элемент на экране и метод Paint выполняющий перерисовку элемента.
Стандартные элементы управления Windows (панель Standard)
Метка TLabel.
Метки предназначены для размещения текстовой информации – различных пояснений, заголовков и т.д.
Основное свойство, содержащее текст метки – Caption. Его можно менять в ходе выполнения программы. Метка обрабатывает события от мыши.
Свойства Alignment и Layout определяют выравнивание метки по горизонтали и вертикали.
Логическое свойство WordWrap позволяет разрешать или запрещать перенос текста на новую строку.
Компоненты для редактирования строк.
Одна строка ввода – TEdit
Многострочный редактор – TMemo.
Общие свойства –
AutoSelect:boolean – если свойство имеет значение True, то текст выделяется при активизации редактора.
CharCase – определяет вид букв текста ecUpperCase, ecLowerCase, ecNormal.
MaxLength:integer — максимальное число символов для редактирования.
PasswordChar:Char – символ, который будет оторажаться вместо букв (по умолч. #0)
ReadOnly:boolean —можно ли изменять текст.
Строка ввода TEdit для установки и чтения строки ввода использует свойство Text. Если нужно вводить числа, то надо использовать функции преобразования.
Редактор TMemo содержит список строк Lines:TString;
В свойстве ScrollBalls можно задать наличие полосок прокрутки.
Оба редактора обрабатывают свойство OnChange при изменении введенного текста.
Кнопка TButton.
При нажатии вызывает обработчик события OnClick. Текст кнопки задается свойством Caption. Логические свойства Cancel и Default устанавливаются в true, если хотите, чтобы нажатие Esc или Enter было эквивалентно нажатию на кнопку.
Вызов метода Click эквивалентен щелчку по кнопке.
В Delphi есть кнопки с картинкаии – компонент TBitBtn. Он имеет дополнительные свойства и находится во вкладке Additional.
Glyph – определяет имя BMP-файла, отображаемого на кнопке.
Kind – указывает один из стандартных типов кнопок — bkOk, bkCancel, bkHelp, bkYes, bkNo и т.д.
Флажки TCheckBox и переключатели RadioButton.
Форма. Ее свойства и методы. Виды форм. Отображение форм на экране. Дарахвелидзе.
Графика в Delphi. Холст, перо, кисть. Свойства и методы холста. Кандзюба.
Обработка исключительных ситуаций.
ИС происходит при ошибке во время выполнения программы, либо специально возбуждается программистом. ИС контролируются специальным обработчиком ИС. Он перехватывает все ошибки, приостанавливает программу и сообщает пользователю о возникновении ИС.
Программист может контролировать возникновение ИС с помощью конструкции Try.
Try
оператор 1;
оператор 2;
…
Except
on имя:класс_ошибки do оператор;
on имя:класс_ошибки do оператор;
….
else
оператор;
end;
Ключевое слово try начинает блок контроля операторов, следующих до слова except. В случае возникновения ИС в списке классов, перечисленном после except ищется соответствующий класс и выполняется оператор после do. Затем управление передается на 1-й оператор после end.
Если ИС не относится ни к одному из классов, то выполняется оператор после необязательного Else.
Пример.
try
x:=StrToFloat(Edit1.Text);
y:=1/x;
except
on E:EConvertError do ShowMessage(‘Ошибка ввода’);
on E: EMathError do ShowMessage(‘Деление на ноль’);
else ShowMessage(‘Неизвестная ошибка’);
end;
Классы ИС начинаются с буквы E и имеют общим предком класс Exception. Это класс имеет свойство Message:string (сообщение о ИС) и несколькометодов для создания объектов например Create(Msg:String)..
Основные классы ошибок
EAbstractError – вызов абстрактного метода
EAxxessViolation – выход за пределы массива
EConvertError – ошибка преобразования типов
EInOutError — ошибка ввода вывода.
EInOutError is raised when an operating-system file input/output error occurs, provided the $I+ directive is in effect. The resulting error code is returned in the local ErrorCode variable, which can take the following values.
Error code Meaning
2 File not found.
3 Invalid file name.
4 Too many open files.
5 Access denied.
100 EOF.
101 Disk full.
106 Invalid input.
EMathError – Математическая ошибка.
EOutofMemory – не хватает памяти.
EOverflow – переполнение.
EZeroDivide – деление на ноль.
Если для всех ошибок один обработчки, то в блоке Except строки on не пишутся.
Программист может сгенерировать исключительную ситуацию с помощью оператора raise
Raise <объект>
Raise EintOverFlow.Create(‘Возможно переполнение’);
Если программисту не нужна обработка ошибок, а нужно чтобы программа гарантированно выполнила определенные дейтсвия, независимо от того, была ли ошибка, то можно использовать конструкцию
try
операторы
finally
закл.действия
end;
Try
SetLength(DynArray,100000);
finally
DynArray:=nil
end;
Элементы пользовательского интерфейса.