
- •Содержание
- •1. PASCAL
- •1.1 Алфавит
- •1.2 Типы данных
- •1.3 Переменные
- •1.4 Константы
- •1.5 Стандартные функции
- •1.6 Выражения
- •1.7 Операторы
- •1.7.1 Оператор присваивания
- •1.7.2 Составной оператор
- •1.7.3 Условный оператор IF
- •1.7.4 Условный оператор CASE
- •1.7.5 Оператор цикла FOR
- •1.7.6 Оператор цикла REPEAT
- •1.7.7 Оператор цикла WHILE
- •1.8 Одномерные массивы
- •1.9 Многомерные массивы
- •1.10 Строки
- •1.11 Записи
- •1.12 Множества
- •1.13 Пользовательские типы
- •1.14 Файлы
- •1.15 Перечисляемый тип
- •1.16 Тип-диапазон
- •1.17 Функции и процедуры
- •1.18 Локализация имен
- •1.19 Модули
- •1.20 Операторы прерывания
- •1.21 Комментарии
- •1.22 Указатели
- •1.23 Динамические массивы Delphi
- •2. Основные положения ООП
- •3. Базовые классы Delphi
- •3.1 TObject
- •3.2 Exception
- •3.3 TList
- •3.4 TPersistent
- •3.5 TCollection
- •3.6 TCollectionItem
- •3.7 TStrings
- •3.8 TStringList
- •3.9 TGraphicsObject
- •3.10 TPen
- •3.11 TBrush
- •3.12 TCanvas
- •3.13 TGraphics
- •3.14 TPicture
- •3.15 TComponent
- •3.16 TControl
- •3.17 TWinControl
- •3.18 TGraphicControl
- •3.19 TTimer
- •3.20 TThread
- •3.21 TTreeView
- •3.22 TTreeNodes
- •3.23 TTreeNode
- •3.24 TForm
- •3.25 TMainMenu
- •3.26 TMenuItem
- •3.27 TStatusBar
- •3.28 TStatusPanels
- •3.29 TStatusPanel
- •3.30 TToolBar
- •3.31 TToolButton
- •3.32 TActionList
- •3.33 TAction
57
3.19 TTimer
Класс TTimer является наследником TComponent и служит для организации потоков команд. Имеет низкий приоритет выполнения.
Свойства, методы и события класса TTimer:
property Enabled: boolean; – включение и выключение таймера;
property onTimer: TNotifiEvent; – процедура, описывающая действия при срабатывании таймера;
property Interval: cardinal; – определяет время (в ms), через которое срабатывает таймер.
3.20 TThread
Абстрактный класс TThread является наследником TObject и служит для организации потоков команд.
Свойства, методы и события класса TThread:
property FreeOnTerminate: boolean; – указание на саморазрушение при за-
вершении процедуры выполнения;
property Priority: TThreadPriority; – задание приоритета выполнения дей-
ствий;
property Suspended: boolean; – проверка на паузу в работе потока;
property Terminated: boolean; – указаний на необходимость завершения потока;
constructor Create(CreateSuspended : boolean); – при создании указывается,
требуется ли поток установить в режим “пауза”;
procedure Execute: virtual; abstract; – метод, описывающий действия, которые должен выполнять поток. Данный метод должен проверять завершение работы потока и прервать свою работу при получении команды “завершение”;
procedure Resume; – запустить после “паузы”;
procedure Suspend; – включить “паузу”;
procedure Synchronize(Method : TThreadMethod); – синхронизация выполне-
ния действий с VCL;
procedure Terminate; – дать команду на завершение работы потока;
Пример работы потока.
TMyThread = class(TThread) protected
x : integer;
constructor Create(CreateSuspended: Boolean); procedure Execute; override;
procedure ThreadSyn; end;
var
MyThread : TMyThread;
58
constructor TMyThread.Create(CreateSuspended: Boolean); begin
inherited Create(CreateSuspended); x := 0;
end;
procedure TMyThread.Execute; begin
while not Terminated do x := x+5; Synchronize(ThreadSyn)
end;
procedure TMyThread.ThreadSyn; begin
Form1.StaticText1.Caption := IntToStr(x); end;
procedure TForm1.Button1Click(Sender : TObject); begin
MyThread := TMyThread.Create(True); MyThread.FreeOnTerminate := True; MyThread.Resume;
Button1.Enabled := False;
Button2.Enabled := True; end;
procedure TForm1.Button2Click(Sender : TObject); begin
MyThread.Terminate; Button1.Enabled := True; Button2.Enabled := False;
end;
3.21 TTreeView
Класс TTreeView является непрямым наследником TWinControl и служит для создания иерархического списка элементов.
Свойства, методы и события класса TTreeView:
property AutoExpand: boolean; – если установлено, то автоматически раскрывается список для выбранного компонента и закрываются невыбранные;
property Images: TCustomImageList; – задает список изображений, отобража-
емых в компоненте;
property Items: TTreeNodes; – задает набор элементов компонента, позволяя обращаться к ним по номеру;
property ReadOnly: Boolean; – определяет, разрешено ли изменение меток элементов;
property Selected: TTreeNode; – получение или задание выбранного элемента;
59
property ShowButtons: Boolean; – определяет, требуется ли выводить значки
“+” и “-”;
property ShowLines: Boolean; – определяет, требуется ли выводить соединительные линии;
property TopItem: TTreeNode; – получение или установка верхнего видимого на данный момент элемента;
procedure FullCollapse; – сворачивает всю структуру;
procedure FullExpand; – разворачивает всю структуру;
procedure LoadFromFile(const FileName: string); – считывает структуру из файла;
procedure SaveToFile(const FileName: string); – сохраняет структуру в файл;
property OnChange: TTVChangedEvent; – позволяет обрабатывать переход от одной структуры к другой;
3.22 TTreeNodes
Класс TTreeNodes является наследником TPersistent и служит для хранения и управления элементами TTreeView.
Свойства и методы класса TTreeNodes:
property Count: Integer; – описывает количество элементов;
property Item[Index: Integer]: TTreeNode; default; – позволяет получать доступ к заданному элементу;
function Add(Node: TTreeNode; const S: string): TTreeNode; – добавление ново-
го элемента уровня Node;
function AddChild(Node: TTreeNode; const S: string): TTreeNode; – добавление нового элемента в подуровень Node;
function AddObject(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;
– добавление нового элемента уровня Node со связанным с ним объектом;
function AddChildObject(Node: TTreeNode; const S: string; Ptr: Pointer
): TTreeNode; – добавление нового элемента в подуровень Node со связанным с ним объектом;
procedure Clear; – удаление всех элементов;
function GetFirstNode: TTreeNode; – получение первого элемента TTreeView;
function GetNode(ItemId: HTreeItem): TTreeNode; – получение элемента по уникальному номеру;
3.23 TTreeNode
Класс TTreeNode является наследником TPersistent и служит для описания одного элемента TTreeView.
Свойства и методы класса TTreeNode:
property AbsoluteIndex: Integer; – абсолютный индекс элемента. Если элемент имеет потомков, то он на один меньше, чем у первого потомка;
60
property Count: Integer; – число прямых наследников элемента;
property Data: Pointer; – связанные с элементом данные;
property Expanded: Boolean; – управляет развертыванием данного элемента;
property HasChildren: Boolean; – указывает, имеет ли элемент потомков;
property ImageIndex: TImageIndex; – номер рисунка в списке рисунков, когда элемент не выбран;
property SelectedIndex: TImageIndex; – номер рисунка в списке рисунков, ко-
гда элемент выбран;
property Index: Longint; – указывает на номер среди потомков;
property Item[Index: Integer]: TTreeNode; – доступ к потомкам;
property ItemId: HTreeItem; – уникальный номер элемента;
property Level: Integer; – указывает на общий уровень элемента;
property Owner: TTreeNodes; – указывает на список элементов, которому принадлежит данный элемент;
property Parent: TTreeNode; – указывает на родителя;
property Selected: Boolean; – указывает, выбран ли данный элемент;
property TreeView: TCustomTreeView; – указывает, какому TTreeView принад-
лежит элемент;
procedure Collapse(Recurse: Boolean); – позволяет свернуть выбранный эле-
мент. Если Recurse имеет значение True, то свернуться и все потомки;
procedure Delete; – удаляет элемент и всех его потомков;
procedure DeleteChildren; – удаляет всех потомков элемента;
procedure Expand(Recurse: Boolean); – разворачивает элемент. Если Recurse
имеет значение True, то разворачиваются и потомки;
function GetFirstChild: TTreeNode; – получение первого потомка;
function GetPrevChild(Value: TTreeNode): TTreeNode; – получение предыду-
щего потомка;
function GetNextChild(Value: TTreeNode): TTreeNode; - получение следующего потомка;
function GetLastChild: TTreeNode; – получение последнего потомка;
function GetNext: TTreeNode; – получение следующего элемента независимо от его уровня;
function GetPrev: TTreeNode; – получение предыдущего элемента независимо
от его уровня; Пример: описание каталога книг по разделам. Каждый раздел имеет
наименование, шифр, список книг. Каждая книга имеет наименование, автора, количество страниц.

61
type
TBook = class(TCollectionItem) public
Name,Autor : ShortString; Count : integer;
end;
TRazdel = class(TCollectionItem) public
Name,Shifr : ShortString; Books : TCollection;
constructor Create(Collection: TCollection); override; destructor Destroy; override;
end;
{ TRazdel }
constructor TRazdel.Create(Collection: TCollection); begin
inherited Create(Collection); Books := TCollection.Create(TBook);
end;
destructor TRazdel.Destroy; begin
Books.Free; inherited Destroy;
end;
procedure TForm1.AddButtonClick(Sender: TObject); var
MyTN : TTreeNode;
Razdel : TRazdel; Book : TBook;
62
TempCol : TCollection; begin
case TreeView1.Selected.Level of 0 : with RazdelForm do
begin
NameEdit.Text := '';
ShifrEdit.Text := ''; if ShowModal=mrOk then begin
Razdel := TRazdel.Create(Razdels);
Razdel.Name := Trim(NameEdit.Text);
Razdel.Shifr := Trim(ShifrEdit.Text); MyTN :=
TreeView1.Items.AddChildObject(TreeView1.Selected,
Razdel.Shifr,Razdel); TreeView1.Items.AddChild(MyTN,'Раздел: '+Razdel.Name); TreeView1.Items.AddChildObject(MyTN,'Книги',
Razdel.Books);
end;
end;
2 : with BookForm do begin
NameEdit.Text := '';
AutorEdit.Text := '';
CountEdit.Text := ''; if ShowModal=mrOk then begin
TempCol := TCollection(TreeView1.Selected.Data); Book := TBook.Create(TempCol);
Book.Name := Trim(NameEdit.Text); Book.Autor := Trim(AutorEdit.Text); Book.Count := StrToInt(CountEdit.Text); MyTN :=
TreeView1.Items.AddChildObject(TreeView1.Selected,
Book.Name,Book); TreeView1.Items.AddChild(MyTN,'Автор: '+Book.Autor); TreeView1.Items.AddChild(MyTN,'Кол-во страниц: '+
IntToStr(Book.Count));
end;
end;
end;
end;
procedure TForm1.DelButtonClick(Sender: TObject); begin
TObject(TreeView1.Selected.Data).Free; TreeView1.Selected.Delete;
end;
procedure TForm1.FormCreate(Sender: TObject); begin
Razdels := TCollection.Create(TRazdel);
63
TreeView1.Items.AddObject (TreeView1.Items.GetFirstNode,'Разделы',Razdels);
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if TreeView1.Selected=nil then begin
Edit1.Text := '';
AddButton.Enabled := False;
end else
case TreeView1.Selected.Level of 0 : begin
Edit1.Text := 'Это корень нашей структуры';
AddButton.Enabled := True;
end; 1 : begin
Edit1.Text := 'Вы выбрали раздел '+ TreeView1.Selected.Text; AddButton.Enabled := False;
end;
2 : if TObject(TreeView1.Selected.Data) is TCollection then begin
Edit1.Text := 'Это список книг раздела '+
TreeView1.Selected.Parent.Text; AddButton.Enabled := True;
end else begin
Edit1.Text := 'Это название раздела '+ TreeView1.Selected.Parent.Text; AddButton.Enabled := False;
end; 3 : begin
Edit1.Text := 'Это книга '+ TreeView1.Selected.Text+
' из раздела '+TreeView1.Selected.Parent.Parent.Text; AddButton.Enabled := False;
end; 4 : begin
Edit1.Text := 'Это характеристики книги '+ TreeView1.Selected.Parent.Text; AddButton.Enabled := False;
end;
end;
end;