Из опыта создания универсальных тестовых редакторов
с
полями, поскольку прямой доступ к полям нежелателен. Объект объявляется
следующим образом:
Объект.
Type <имя объекта>=object
<поля данных>
<заголовки методов>
End;
После объявления объекта к нему пишутся процедуры (методы). Название
процедуры состоит из двух частей: имени объекта и имени процедуры:
<Имя объекта>.<Имя процедуры>
Объектная программа.
Объектная программа- это последняя важная стадия разработки программы: в
нее внедряется панель управления, что значительно облегчает диалог с
системой и делает функции программы более доступными. Как видно из
предыдущей главы, функции программы в структурном виде находятся в
операторе варианта case, а выбор функции происходит нажатием клавиши.
Создавая объектную программу, я лишь перенес функции из оператора
варианта в процедуры объекта и связал их между собой.
Новый объект- панель управления под именем panel имеет одно поле-
координату синего прямоугольника, который перемещается по панели
управления. На самом деле это окно синего цвета, а изменение цвета букв при
перемещении создается засчет точного соответствия текста в окне и текста на
панели управления. Панель имеет процедуры перемещения прямоугольника
выбора, которые уменьшают и увеличивают его координату в соответствии с
нажатыми клавишами. А также есть процедура выбора, при нажатии клавиши
Enter управление передается ей. Она в свою очередь определяет по координате
окна какую функцию необходимо запустить в данный момент.
Этапы разработки объекта Панель Управления:
1. Определение ключевого поля перемещения окна
2. Определение процедур работы с окном
3. Определение пропорций окна панели управления
4. Рисование панели управления
5. Написание процедур работы с окном выбора
6. Установка связей между функциями и объектом
7. Отладка объекта
Программный код.
Program redactor;
uses crt,printer,dos;
type panel=object {объявление объекта}
x:integer; {поле объекта}
Procedure left(b:char); {описание процедуры сдвига влево окна выбора}
Procedure right(b:char); { описание процедуры сдвига вправо окна
выбора }
Procedure choose; { описание процедуры выбора функции }
End;
Var a,f,f1,a2:string; {описание всех программных переменных}
b,k:char;
c,u,y,a1,b1:text;
d,e,i,j,p,z,z1,z2:integer;
c1:boolean;
g:panel;
g1,g2,g3,g4,h:word;
Procedure panel.left; {процедура сдвига влево окна выбора}
Begin
Window(x,22,x+9,22); {закрашивание следующего окна}
TextBackGround(green);
clrscr;
Закрашивание следующего окна- важная функция. Она закрашивает то синее
окно, которое было выбрано перед обращением к процедуре.
Window(10,22,69,22); {основное окно панели управления}
TextBackGround(green);
clrscr;
TextColor(brown); {установка цвета текста}
Write('Новый Открыть Править Результат Печать Выход');
{нанесение надписи на панель
управления}
If x>=20 Then x:=x-10; {проверка соответствия окна выбора границам
панели управления}
Этот оператор производит сравнение координат окна выбора с координатами
начала панели управления. Если окно выбора “выехало” за границы панели
управления, то изменений координат не производится, окно выбора остается на
своем месте.
Window(x,22,x+9,22); {рисование окна выбора}
TextBackGround(blue);
clrscr;
case x of {выбор надписи на окне выбора}
Данное ветвление распознает по координате окна выбора какое слово следует в
него вписать.
10:Begin
TextColor(green);
Write('Новый');
End;
20:Begin
TextColor(green);
Write('Открыть');
End;
30:Begin
TextColor(green);
Write('Править');
End;
40:Begin
TextColor(green);
Write('Результат');
End;
50:Begin
TextColor(green);
Write('Печать');
End;
60:Begin
TextColor(green);
Write('Выход');
End;
End;
End;
Procedure panel.right; {процедура сдвига окна выбора вправо}
Begin
Window(x,22,x+9,22); {закрашивание предыдущего окна}
TextBackGround(green);
clrscr;
Window(10,22,69,22); {рисование окна панели управления}
TextBackGround(green);
clrscr;
TextColor(brown); {изменение цвета текста}
Write('Новый Открыть Править Результат Печать Выход');
{нанесение текста на панель управления}
Вы, конечно, заметили, что операторы предыдущей и этой процедуры
повторяются, поэтому их можно вынести в отдельную процедуру и запускать ее
для обновления окна панели управления.
If x<=50 Then x:=x+10; {сравнение координат окна выбора с координатами
конца окна панели
управления}
Window(x,22,x+9,22); {рисование окна выбора}
TextBackGround(blue);
clrscr;
case x of {нанесение соответствующего текста на окно выбора}
10:Begin
TextColor(green);
Write('Новый');
End;
20:Begin
TextColor(green);
Write('Открыть');
End;
30:Begin
TextColor(green);
Write('Править');
End;
| | скачать работу |
Из опыта создания универсальных тестовых редакторов |