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


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




[13]

sort : RWTable х FName - RWTable

sort((onm, os, fPos, vPos, vSz, fSz, t), fnm) = if isName(fnm, t) Л fnm = onm then

(nfPos, nvPos, nt) = sort(fnm, asc, fPos, vPos, vSz, t)

(fnm, asc, nfPos, nvPos, vSz, fSz, nt) end else

(nfPos, nvPos, nt) = sort(onm, nextOrder(os), fPos, vPos, vSz, t)

(onm, nextOrder(os), nfPos, nvPos, vSz, fSz, nt) end end,

move : RWTable х SETInput - RWTable

(onm, os, (fY, fX), (vY, vX), (vVer, vHor), fSz, t), (pntr, dir, zoom, prm)) =

let Y = nRecs(t), X = nFlds(t) in

if dir = horz then

case (pntr, zoom) of (first, item) - (vY, fX), (next, item) - mvF((Y, X), (fY + 1, fX)),

(prev, item) - mvF((Y, X), (fY - 1, fX)),

(last, item) - (vY + vVer - 1, fX), (first, set) - (1, fX), (next, set) -

mvF((Y, X), (fY + vVer - 1, fX)), (prev, set) -

mvF((Y, X), (fY - vVer + 1, fX)),

(last, set) - (Y, fX), - (fY, fX)

(onm, os, new,

mvV(new, (vY, vX), (vVer, vHor)),

(vVer, vHor), fSz, t)


else - - dir = vert

case (pntr, zoom) of (first, item) - (fY, vX), (next, item) - mvF((Y, X), (fY, fX + 1)), (prev, item) - mvF((Y, x), (fY, fX - 1)), (last, item) - (fY, vX + vHor - 1), (first, set) - (fY, 1), (next, set) -

mvF((Y, X), (fY, fX + vHor - 1)), (prev, set) -

mvF((Y, X), (fY, fX - vHor + 1)),

(last, set) - (fY, X), - (fY, fX)

(onm, os, new,

mvV(new, (vY, vX), (vVer, vHor)),

(vVer, vHor), fSz, t)

end end end

-- End Of Scheme

Набор функций для работы с типом Table. Среди них отметим следующие, используемые для визуализации множества:

•mvF - вычисление нового положения фокуса в таблице;

•mvV - вычисление нового положения обзора.

-- Start of Scheme rsl/T0, rsl/L4 SET01

scheme L4 SET1 =

with T0 in

extend L4 SET01 with

class value

isWFFPos :


Pair х Table - Bool--well formed focus position

isWFFPos(r, t) =

isWFVPos(r, (1,1), ( 0 * x x in ( nFlds(t)) ) , t),

isWFVPos :

Pair х Pair х Nat* х Table -

Bool - - well formed view position

isWFVPos((rNo, fNo), (vSz, hSz), sSzs, t) =

0 < rNo Л rNo + vSz < nRecs(t) Л 0 < fNo Л fNo + hSz < nFlds(t),

mvF : Pair х Pair - Pair - - to move focus

mvF((maxY, maxX), (fY, fX)) = let

fY1 = if fY > maxY then maxY else fY end, fX1 = if fX > maxX then maxX else fX end

(fY1, fX1)

mvV : Pair х Pair х Pair - Pair - - to move view mvV((fY, fX), (vY, vX), (vVer, vHor)) =

let vY1 = if fY < vY then fY

elsif fY > vY + vVer then fY - vVer

else vY

vX1 = if fX < vX then fX

elsif fX > vX + vHor then fX - vHor

else vX

(vY1, vX1)

-- End Of Scheme

Далее, опишем функцию взятия списка первичных ключей pKeys и текущей записи curRec:

-- Start of Scheme



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