Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
100
Добавлен:
04.03.2014
Размер:
235.01 Кб
Скачать

Риc. 2. 7. Библиотечные оконные формы.

При реализации объектов те методы, которые будут зависеть от конкретной задачи, программируются не содержащими действий. Предполагается, что они будут заменяться при наследовании объекта от библиотечного.

Пример 13. Библиотека объектов для создания меню программы "Записная книжка".

Unit Menu;

Interface

Uses crt;

Type str80=string[80];

{ ************* Окно с текстом ***********************}

TWin=Object

x1,y1,x2,y2:integer; {координаты окна}

attr:integer; {атрибут}

xt,yt:integer; {начало текста}

text:str80; {строка текста}

constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80);

procedure SetAttr(aattr:integer); {изменение цвета и фона окна}

procedure Draw; {рисование окна на экране}

end;

{ ************* Окно ввода **********************}

Type TInput=Object(TWin)

Inp:TWin; {окно ввода}

constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;

bx1,by1,bx2,by2,battr,bxt,byt:integer;btext:str80);

procedure Clear; {очистка поля ввода}

procedure Input; {ввод строки из окна}

function Error:boolean;virtual; {проверка введенной информ.}

procedure Draw;virtual; {рисование окна}

end;

{ *************** Окно сообщения *****************}

Type TMessage=Object(TWin)

Ok:TWin; {кнопка}

procedure Enter;virtual; {при нажатии на Enter...}

procedure Run;virtual; {процедура выбора из меню}

procedure Show;virtual; {показать окно (наложить)}

constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;

bx1,by1,bx2,by2,battr,bxt,byt:integer;btext:str80);

end;

{ ***************** Окно меню ********************}

Type TMenu=Object(TMessage)

nalt:integer; {количество альтернатив в меню}

masalt:array[1..10] of TWin; {массив альтернатив меню}

npos:integer; {номер выбранной альтернативы}

procedure Show;virtual; {показать окно (наложить)}

procedure Enter;virtual; {при нажатии на Enter...}

procedure Run;virtual; {процедура выбора из меню}

constructor Init(ax1,ay1,ax2,ay2,aattr,

axt,ayt:integer;atext:str80;n:integer;Var p);

end;

{ ****************** Окно формы *******************}

Type TForm=Object(TMenu)

ninput:integer; {количество полей ввода}

masinp:array[1..10] of TInput; {массив полей ввода}

procedure Enter;virtual; {при нажатии на Enter ...}

procedure Show;virtual; {показать окно (наложить)}

procedure Clear; {очистка окон ввода}

procedure Input; {ввод информации из окон ввода}

constructor Init(ax1,ay1,ax2,ay2,aattr,axt,ayt:integer;atext:str80;

n:integer;Var p1;k:integer;Var p2);

end;

Implementation {Реализация методов}

{************* Окно с текстом ***********************}

Constructor TWin.Init;

Begin x1:=ax1; y1:=ay1;

x2:=ax2; y2:=ay2;

attr:=aattr;

xt:=axt; yt:=ayt;

text:=atext;

End;

Procedure TWin.Draw;

Begin Window(x1,y1,x2,y2);

TextBackGround(attr div 16);

TextColor(attr mod 16);

Clrscr;

Gotoxy(xt,yt);

Write(text);

end;

Procedure TWin.setattr;

Begin attr:=aattr;

Draw;

end;

{ ************* Окно ввода **********************}

Constructor TInput.Init;

Begin TWin.Init(ax1,ay1,ax2,ay2,aattr,axt,ayt,atext);

Соседние файлы в папке Методичка С++