- •Розділ 1. Об’єктно-орієнтоване програмування
- •Тема 1.1. Візуальне програмування.
- •Тема 1.2. Приклади та застосування інкапсуляції, успадкування, поліморфізму.
- •Тема 1.3. Бібліотека візуальних компонентів vcl та її базові класи.
- •1. Клас tWinControl.
- •2. Клас tСustomControl.
- •3. Клас tGraphicControl.
- •Тема 1.4. Обробка виняткових ситуацій.
- •1. Використовування виняткових ситуацій.
- •2. Протоколювання виняткових ситуацій.
- •3. Коди помилок у виняткових ситуаціях.
- •4. Виняткова ситуація eAbort. Функція Assert.
- •Розділ 2. Мова програмування Object Pascal.
- •Тема 2.1. Середовище Delphi.
- •Тема 2.2. Елементи мови Object Pascal.
- •1. Коментарі.
- •2. Логічні вирази.
- •Тема 2.3. Типи даних, процедури та функції.
- •1. Вказівники та динамічна пам'ять. Динамічна пам'ять
- •Вказівники
- •Виділення і звільнення динамічної пам'яті
- •Процедури і функції для роботи з динамічною пам'яттю
- •Тема 2.4. Управляючі структури Object Pascal.
- •Розділ 3. Програмування в середовищі Delphi.
- •Тема 3.1. Застосування списків. Способи запису/читання зі списків.
- •Є списком CheckBox елементів.
- •Тема 3.2. Масиви.
- •1. Пошук мінімального (максимального) елементу масиву.
- •2. Пошук в масиві заданого елементу.
- •Тема 3.3. Робота з файлами.
- •Тема 3.4. Типи даних визначені програмістом.
- •1. Показники.
- •2. Динамічні змінні.
- •Тема 3.5. Графічні програми.
- •1. Бітові образи.
- •2. Мультиплікація.
- •Властивості компоненту Timer
- •Тема 3.6. Приклади застосування анімацій у Delphi.
- •Тема 3.7. Рекурсія.
- •1. Крива Гільберта.
- •2. Пошук шляху.|колії|
- •Значення властивостей компоненту stringGrid1
- •3. Пошук найкоротшого шляху.|колії|
- •Тема 3.8. Компоненти для інтернету. Компонента tSocketConnection
- •Розділ 4. Бази даних.
- •Тема 4.1. Види баз даних. Структура та зв’язки між таблицями. Бази даних
- •Класифікація баз даних
- •Структура бази даних
- •Модель бази даних в Delphi
- •Тема 4.2. Модифікація структури таблиці в bde.
- •1. Зміна структури таблиці.
- •2. Встановлення перевірок правильності даних.
- •3. Завдання вторинних індексів.
- •Тема 4.3. Об’єкти відображення даних бази даних Delphi.
- •1. Класифікація компонентів відображення даних.
- •2. Елемент керування тdbGrid.
- •3. Компонент tdbEdit.
- •4. Компонент tdNavigator.
- •Тема 4.4. Обчислювальні поля і поля підстановки в Delphi.
- •1. Створення поля підстановки (поля синхронного перегляду).
- •2. Обчислювальні поля.
- •Тема 4.5. Компонента tdbEdit.
- •Тема 4.6. Переміщення по записам таблиці. Набір методів і властивостей tDataSet. Огляд
- •Клас tDataSet
- •Відкриття і закриття DataSet
- •Тема 4.7. Налаштування фільтрів.|
- •Тема 4.8. Приклади застосування пошуку.
- •Тема 4.9. Поєднання різних видів пошуку.
- •Тема 4.10. Типи даних та пошук в діапазоні.
- •Список літератури
Значення властивостей компоненту stringGrid1
|
|
|
|
|
Властивість
|
Значення
|
|
|
Name
|
StringGrid1
|
|
|
ColCount
|
11 |
|
|
RowCount
|
11 |
|
|
FixedCols
|
1 |
|
|
FixedRows
|
1 |
|
|
Options . goEditing
|
TRUE
|
|
|
DefaultColWidth
|
16 |
|
|
DefaultRowHeight
|
14 |
|
|
|
|
|
Текст програми приведений в лістингу.
Лістинг. Пошук маршруту
unit road_;
interface|
uses|
Windows|, Messages|, SysUtils|, Classes|
Graphics|, Controls|, Forms|
Dialogs|, StdCtrls|, Grids|;
type|
TForml = class(TForm)
StringGridl|: TStringGrid|;
Edit1|: TEdit|;
Edit2|: TEdit|;
Label1|: TLabel|;
Label2|: TLabel|;
Label3|: TLabel|;
Button1|: TButton|;
Label4|: TLabel|;
procedure FormActivate(Sender: TObject);
procedure ButtonlClickfSender: TObject);
private|
{ Private declarations } public
{ Public declarations } end;
var|
Form1|: TForm1|;
implementation|
{$R *.DFM}
procedure TForml.FormActivate(Sender: TObject);
var|
i:integer|; begin|
// нумерація рядків
for i:=1 to 10 do
StringGridl|.Cells[0,i|]:=IntToStr(i); // нумерація колонок
for| i:=l| to| 10 do|
StringGridl|.Cells[1,0]:=IntToStr(i);
// опис зумовленої карти StringGridl|.Cells[1,2]:='1' StringGridl|.Cells[2,l|]:='1'
StringGridl|.Cells[1,3]:='1'
StringGridl|.Cells[3,1]:='1'
StringGridl|.Cells[1,4]:='1'
StringGridl|.Cells[4,1]:='1'
StringGridl|.Cells[3,7]:='1'
StringGridl|.Cells[7,3]:='1'
StringGridl|.Cells[4,6]:='1'
StringGridl|.Cells[6,4]:='1'
StringGridl|.Cells[5,6]:='1'
StringGridl|.Cells[6,5]:='1'
StringGridl|.Cells[5,7]:='1'
StringGridl|.Cells[7,5]:='1'
StringGridl|.Cells[6,7]:='1'
StringGridl|.Cells[7,6]:='1'
end|;
procedure| TForml|.ButtonlClick(Sender|: TObject|);
const|
N=10|;// к-ть вершин графа var|
map:array|[1..N,1..N]of| integer|; // Карта.map[i,j|]ne| 0
// якщо точки i і j сполучені|з'єднані|
road:array|[1..N]of| integer|;
// Дорога|люба| - номери точок карти
incl:array|[1..N]of| boolean|; // incl|[1]рівний TRUE|, якщо крапка|точка|
// з|із| номером i включена в road|
start,finish:integer|; // Початкова і кінцева|скінченна| точки
found:boolean|; i,j:integer|;
procedure| step|(s,f,p:integer|);
var|
с:integer|;// Номер крапки|точки|, в яку робимо|чинимо| черговий крок
i:integer|;
begin|
if s=f then begin
// Точки s і f збіглися !
found:=TRUE|;
Labell|.caption:=Labell.caption+#13+'Путь:';
for| i:=l| to| p-1| do|
Labell|.caption:=Labell.caption+' '
+IntToStr(road[i]); end
else| begin|
// вибираємо чергову точку for c:=l to N do
begin // перевіряємо всі вершини
if(map[s,c]<> 0)and(NOT incite1)
// крапка|точка| сполучена|з'єднана| з|із| поточною і не включена в маршрут
then| begin|
road|[p]:=c;// додамо|добавлятимемо| вершину в шлях|колію|
incl|[c]:=TRUE;// помітимо|позначимо| вершину як включену
step|(с,f,p+l|); incite|]:=FALSE; road|[p]:=0;
end|;
end|;
end|;
end;// кінець процедури step
begin|
Label1|.caption: =' ' ;
// ініціалізація масивів
for| i:=l| to| N do| road|[i]:=0;
for| i:=l| to| N do| incl|[i]:=FALSE;
// введення опису карти з|із| SrtingGrid|.Cells
for i:=l to N do
for j:=1 to N do
if StringGrid1.Cells[i,j] <> ''
then map[i,j]:=StrToInt(StringGridl.Cells[i, j] ;
else map[i,j]:=0;
start:=StrToInt|(Editl|.text);
finish:=StrToInt|(Edit2|.text);
road|[l]:=start;// внесемо крапку|точку| до маршруту
incl|[start|]:=TRUE;// помітимо|позначимо| її як включену
step|(start,finish,2|);//шукаємо другу точку маршруту
// перевіримо, чи знайдений хоч би|хоча би| один шлях|колія|
if not found
then Labell.caption:='Вказані крапки не сполучені!';
end|;
end|.
При запуску програми у момент активізації форми додатку|застосування| відбувається|походить| подія onActivate|, процедура обробки якого заповнює масив StringGridl|.cells значеннями, що представляють|уявляють| опис карти. Поверсі процедура нумерує рядки і стовпці таблиці, заповнюючи зафіксовані осередки|чарунок| першого стовпця і першого рядка StringGridl|.
Пошук маршруту ініціює процедура TForm1.Button1click, яка запускається клацанням на кнопці Пошук. Дана процедура для пошуку крапки, сполученої з початковою точкою, викликає процедуру step, яка після вибору першої крапки, сполученої з початковою, і включення її в маршрут викликає сама себе. При цьому як початкова точка задається вже не початкова, а поточна, тільки що включена в маршрут.
