В программе используется 1 главный модуль MainGraf - модуль с вкладками ввода, параметров, настроек и небольшой справки.
Рассмотрим процедуры и функции основного модуля MainGraf:
Таблица 2
Заголовок процедуры или функции | Формальные параметры | Выполняемые действия |
function TmainGraf.FindKS(_Type: byte): byte; | - | Функция нахождения количества компонент связности и их вывода |
procedure TMainGraf.Depth(v:byte;_Type:byte); | u,z:byte; | Обходит граф в глубину и выводит результат обхода |
Procedure TMainGraf.Recursiya(ii: integer); | a,b: integer; | Обходит граф в ширину и выводит результат |
procedure Reach(); | S,T:set of 1..255; i,j,l:integer; | Проверка графа на связность |
procedure TMainGraf.SpeedButton1Click(Sender: TObject); | i,j,a: integer; | Авто заполнение матрицы смежности (таблицы) |
Продолжение Таблица 2.
procedure TMainGraf.DrawArrow(Canvas: TCanvas;x0, y0,x1,y1: Integer; __type,penwidth: byte); | XB, YB, XE, YE, XM, YM,x11,y11: Integer; Angle_Line, Angle_Arrow: Extended; Length_Line, Length_Arrow: integer; | Процедура построения линии двух вариантов: направленную (1) или нет (2) с настройкой ширины и цвета линии |
Procedure TMainGraf.Visualization(Canvas: TCanvas;_Type: byte); | i,j: integer; //cчетчики a,b,c: integer; //переменный для дополниельных вычислений Xx,Yy:integer; //переменные для хранения координаты вершины cosS,SinS: real; // син и косинус угла наклона Ugol: real; // угол наклона прямой alpha: real; // угол наклона стрелки у прямой Step: integer; //шаг для построения квадрата s1,s2: string; //строки для записи в лейбл | Визуализация графа |
procedure TMainGraf.SpeedButton2Click(Sender: TObject); | - | Визуализация графа |
Продолжение таблица 2.
|
|
procedure TMainGraf.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | Xpos, Ypos,i: integer; | Нажатие по изображению графа, выделяется вершина |
procedure TMainGraf.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); | - | Передвижение курсора по изображению графа |
procedure TMainGraf.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | - | Отпустить нажатие по изображению графа, строиться граф |
procedure TMainGraf.Button1Click(Sender: TObject); | i,j: integer; | Задает граф, настраивает начальное состояние программы |
procedure TMainGraf.FormCreate(Sender: TObject); | i,j: integer; a,b,c: byte; F: textFile; S: string; | Настраивает программу при запуске. |
procedure TMainGraf.SpeedButton5Click(Sender: TObject); | TypeG: boolean; | Вызывает процедуру проверки графа на связность и выводит результат |
procedure TMainGraf.SpeedButton7Click(Sender: TObject); | z: integer; | Вызывает процедуру обхода в ширину и выводит полученный результат |
procedure TMainGraf.SpeedButton4Click(Sender: TObject); | i: integer; | Вызывает процедуру построения графа |
procedure TMainGraf.SpeedButton3Click(Sender: TObject); | a,b: integer; k: integer; b1: boolean; | Вызывает процедуру поиска точек сочленения и анализирует данные |
Продолжение Таблица 2.
procedure TMainGraf.SpeedButton6Click(Sender: TObject); | TypeG: boolean; a,k,b: integer; PSP: array of integer; //масси тпа вершины (со связями или нет) empty: boolean; //относится к массиву выше. MAXGroups: byte; //число компонент связности, без точек сочленения consist: boolean; //есть ли дуги из вершины colKD: byte; //Число компонент двусвязнсти | Вызывает необходимые процедуры для определения двусвязных компонент графа, анализирует данные и выводит полученный результат |
procedure TMainGraf.SpeedButton8Click(Sender: TObject); | s: integer; | Вызывает процедуру для обхода графа в глубину |
procedure TMainGraf.FormResize(Sender: TObject); | x,y: integer; | Изменение размера формы |
procedure TMainGraf.BitBtn1Click(Sender: TObject); | a,b,c: byte; | Задает массив цветов, для визуализации компонентов двусвязности и связности |
procedure TMainGraf.Timer1Timer(Sender: TObject); | - | Процедура задержки конечной визуализации графа, если выделить вершину |
Продолжение Таблица 2.
|
|
procedure TMainGraf.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); | CSel:=ACol; RSel:=ARow; | Выделение дуги графа |
procedure TMainGraf.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); | - | Ввод данных в таблицу |
procedure TMainGraf.StringGrid1KeyPress(Sender: TObject; var Key: Char); | - | Запрет на ввод в таблицу символов кроме 0 и 1 |