|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ Точка;
(*============================================================================*
* НАЗНАЧЕНИЕ: Точка
*============================================================================*)
ИСПОЛЬЗУЕТ
Надел,
Поле,
Цепь ИЗ "..\Иное\",
Окно ИЗ "..\Обмен\",
Ввод ИЗ "..\Обмен\";
ВИД
Доступ-=ДОСТУП К Вид;
Вид-=НАБОР(Надел.Вид)
строчек :ЦЕЛ;
надписи :ДОСТУП К РЯД ИЗ Надел.Надпись;
буквицы :ДОСТУП К РЯД ИЗ ЦЕЛ;
указка :ЦЕЛ; (* строка указки *)
текущая+:ЦЕЛ; (* строка точки *)
КОН;
Посылка-=НАБОР(Ввод.Посылка)
точка:Доступ
КОН;
(******************************************************************************)
ЗАДАЧА Отрисовка(точка:Доступ);
ПЕР
строка:ЦЕЛ;
надпись:Надел.Надпись;
УКАЗ
ОТ строка:=0 ДО точка.строчек-1 ВЫП
надпись:="( )";
ЕСЛИ строка = точка.текущая ТО
надпись[1]:=0B7X
ИНАЧЕ
надпись[1]:=" "
КОН;
Цепь.Добавить(надпись,точка.надписи[строка]);
Надел.ВыводНадписи(точка,надпись,строка)
КОН;
ЕСЛИ точка.состояние = Надел.сВыбран ТО
Окно.ПереместитьУказку(точка.вс+точка.указка,точка.лк+1);
Окно.РазмерУказки(15)
КОН
КОН Отрисовка;
(******************************************************************************)
ЗАДАЧА Работа(точка:Доступ);
ПЕР
посылка:Посылка;
поле:Поле.Доступ;
УКАЗ
Отрисовка(точка);
(* обратная связь *)
поле:=точка.поле(Поле.Доступ);
посылка.точка:=точка;
поле.Приём(поле,посылка)
КОН Работа;
(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
строка:ЦЕЛ;
точка:Доступ;
УКАЗ
точка:=надел(Доступ);
ДЛЯ посылка ВИДА
| Поле.Отрисовка:
Отрисовка(точка)
| Ввод.ОтМышки:
ЕСЛИ посылка.события = {} ТО
(* просто нажали мышку *)
точка.текущая:=посылка.с;
точка.указка:=посылка.с;
Работа(точка)
КОН
| Ввод.ОтКлавиш:
ВЫБРАТЬ посылка.код ИЗ
(* <- ^*) | 25H,26H:
ЕСЛИ точка.указка > 0 ТО
УМЕНЬШИТЬ(точка.указка);
Отрисовка(точка);
посылка.код:=0
КОН
(* -> V*) | 27H,28H:
ЕСЛИ точка.указка < точка.строчек-1 ТО
УВЕЛИЧИТЬ(точка.указка);
Отрисовка(точка);
посылка.код:=0
КОН
(* " " *) | 20H:
точка.текущая:=точка.указка;
Работа(точка);
посылка.код:=0
ИНАЧЕ
КОН
| Поле.Буквица:
ОТ строка:=0 ДО точка.строчек-1 ВЫП
ЕСЛИ посылка.буквица = точка.буквицы[строка] ТО
посылка.буквица:=0;
точка.текущая:=строка;
точка.указка:=строка;
Работа(точка);
ВОЗВРАТ
КОН
КОН
ИНАЧЕ
КОН
КОН Приём;
(******************************************************************************)
ЗАДАЧА Создать-(верх,лево:ЦЕЛ; надписи-:РЯД ИЗ Надел.Надпись):Доступ;
ПЕР
точка:Доступ;
строчек,строка:ЦЕЛ;
длина,колонок:ЦЕЛ;
УКАЗ
СОЗДАТЬ(точка);
строчек:=РАЗМЕР(надписи);
СОЗДАТЬ(точка.надписи,строчек);
СОЗДАТЬ(точка.буквицы,строчек);
точка.строчек:=строчек;
колонок:=0;
ОТ строка:=0 ДО строчек-1 ВЫП
Надел.СчитатьНадпись(надписи[строка],точка.надписи[строка],
длина,точка.буквицы[строка]);
ЕСЛИ длина > колонок ТО
колонок:=длина
КОН
КОН;
Надел.Подготовить(точка,верх,лево,строчек,колонок+4,{Надел.прВыбираемый},Приём);
ВОЗВРАТ точка
КОН Создать;
КОН Точка.
|
|