Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[12]

Groups = ("Groups , ( ("Groups List 1, ,

"select distinct id, * from ar. vgrpl where sid = :sid

"select 0 as id, 0 as id, - 1 as usr, :notSet as uid, :notSet as nm, :notSet as nt, :notSet as dt fro "call ws. groupCreate(:rc,:curRec(id),:curRec(nm),:curRec(nt))

("Member of Groups 2, ,

"select prn, val, * from ar. v mmgl where prn =:pKeys(1)

"select prn, 0 as usr, :notSet as usrGrpNm, no as usrGrp, :notSet as nt where prn =:pKeys( "call ws. groupUserAdd (:rc, :curRec(unsrGrpNmn), :curRec(pnrnn)) "ws. groupUserDelete (:rc, :curRec(nsrGrpNm), :curRec( prn ))")} )

-- End Of Scheme

2.5 Set Visualization Level 2.5.1 Concrete Input of SET Level

Определим конкретный тип SETInput, а, также, для работы с визуальным представлением множества добавим возможность сортировки окна данных и и его просмотра через некоторое окно (обзор, view).

Cортировать визуальное представление множества будем только по одной колонке (полю, field).

Колонка может находится в состоянии:

•не отсортирована;

•порядок возрастающий;

•порядок убывающий.

Пара состоит из числа для указания расстояния по вертикали (номера записи) и числа для указания расстояния по горизонтали (номера колонки (поля)). Пара будет использоваться для перемещения обзора по окну данных, для скроллинга. и пара (Pair).

-- Start of Scheme

rsl/T0, rsl/L4 ITEM scheme L4 SET0 =

with T0 in


extend L4 ITEM with

SETInput = Pointer х Direction х Zoom х Text, - - number = param of the set Pointer SETOutput, - - content of datawindow

-- title key fields number

--parent update

--select insert

-- update delete

Actions =

Text х Nat х Action х Action х Action х

Action х Action, Action = { t : Text • isSqlStatment(t) Л t = } ,--Order == none asc desc, - - the specificator of the order Pair =

Int - - horizontal and vertical coordinate, like - - rNo and fNo.

isSqlStatment : Text - Bool,

nextOrder : Order - Order nextOrder(o) = case o of none - asc, asc - desc, - none end

-- End Of Scheme

2.5.2 Concrete Set Visualisation

Теперь в типе RWTable можно определить

•поле по которому отсортировано окно данных и порядок сортировки. Функция isName проверяет наличие поля с заданным названием;

•положение курсора - фокус. Функция isWFFPos проверяет правильно ли задано положение фокуса. Положение курсора также определяет текущую запись. Запись является текущей, если курсор находится в одном из ее полей;


•положение и размер обзора. Функция isWFVPos проверяет правильно ли задано положение обзора.

•список длин полей;

•саму таблицу Table;

Кроме того, будем считать, что поля первичного ключа расположены

подряд.

-- Start of Scheme

rsl/T0, rsl/L4 SET1 scheme L4 SET2 =

with T0 in

extend L4 SET1 with

type RWTable =

{ (fn, or, fPos, vPos, vSz, fSz, t) :

FName x Order x Pair x Pair x Pair x

Nat* x Table • isName(fn, t) Л isWFFPos(fPos, t) Л isWFVPos(vPos, vSz, fSz, t) Л len fSz = nRecs(t)

empty : RWTable

-- End Of Scheme

Опишем функцию сортировки окна данных sort и функцию движения курсока/обзора move через типы Pair и Table.

-- Start of Scheme

rsl/T0, rsl/L4 SET3 scheme L4 SETT =

with T0 in

extend L4 SET3 with

channel setIn : SETInput, setOut : SETOutput



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]