о ESC} answ = # 27;.
1.2 Модуль menumod.tpu
Даний модуль містить підпрограму, яка промальовує на екран вертикальне меню для виконання запитів користувача. Для навігації в даному меню використовуються клавіші В«вгоруВ», В«внизВ», В«enterВ» і В«escВ» на клавіатурі. p align="justify"> Описова частина даного модуля:
Unit menumod; crt; Massiv = array [1 .. 25] of string;
var mas: massiv;
У даному модулі тип Massiv це масив пунктів меню, а змінна, що належить цьому типу, є пунктом меню.
У модулі є одна процедура:
My_Meny (Mas: Massiv; var punkt: byte);
У процедуру з головної програми передаються масив пунктів меню, що складається з наступних значень:
Mas [1]: = '1: Створити новий НД ';
Mas [2]: = '2: Додати нові елементи в кінець НД ';
Mas [3]: = '3: Переглянути всі елементи НД ';
Mas [4]: ​​= '4: Пошук елемента за номером ';
Mas [5]: = '5: Перейти до роботи з іншим НД ';
Mas [6]: = '6: Створення нового НД з усіх елементів із заданим значенням ключі-вого поля. ';
Mas [7]: = '7: Збереження всіх елементів в іншому НД ';
З процедури в головну програму передається значення змінної punkt, у відповідності з якою вибирається один з пунктів оператора CASE і відповідно відбувається виконання певних процедур у головній програмі.
У процедурі описані наступні змінні і константи:
Х і у - Змінні для позиціонування лівого верхнього кута вікна, в якому буде виводитися меню.
Х1 і У1 - Змінні для позиціонування правого нижнього кута вікна, в якому буде виводитися меню.
К - Кількість пунктів меню.
Otv - змінна в якій знаходитися код натиснутої клавіші.
Pred - Попередній для обраного пункту меню
Max_dlin - Довжина найбільшої рядка.
Процедура передає в головну програму змінну punkt.
procedure My_Meny; x = 1;
y = 1;
k = 7; i, pred, Max_dlin: integer;
otv: char;
x1, y1: byte;
Спочатку всі рядки порівнюються і знаходиться найдовша рядок. Після цього рядка доповнюються до цієї довжини шляхом додавання пробілів. Потім обчислюються координати правого нижнього кута вікна, яке потім і промальов...