Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Реалізація алгоритму обробки даних

РефератДопомога в написанніДізнатися вартістьмоєї роботи

В.п. визначення — натиснута чи клавіша типового методу, якщо так — то повертає. При виборі п. 2 ми потрапляємо в редактор файла bb. dbf — («Профілактика»), куди ми. Відповідності зі значенням ASCII коду кожного символу всередині рядки, для ключів. Принципи підготовки даних для тестового прикладу і заповнення вихідних данных. В.п. виведення повідомлення на екран із наперед заданими координатами і… Читати ще >

Реалізація алгоритму обробки даних (реферат, курсова, диплом, контрольна)

Разработка програмного забезпечення, ведення бази даних, і отримання відомості з.

частковими суммами.

Реалізація алгоритму обробки даних, і ведення реляційної бази данных.

Аналіз обробки БД його отримання :

а) За яким файлу проводиться головний цикл обробки ?

Головний цикл обробки подпрограмме vedom — (в.п., яка проводить.

виявлення всіх випадків перевищення нормативних інтервалів між профилактиками,.

передача управління ними в вивідний файл «DD», і навіть здійснює видачу відомості на принтер).

проходить за файлу bb. dbf .

б) як він може бути упорядкований ?

Вона має бути упорядкований в хронологічному порядке.

Пример:

index on bb->invnom + dtoc (bb->dateprof) to bb0001.

Справка:

Синтаксис:

INDEX ON TO.

INDEX — команда обробки бази даних, що створює файли, містять індекси.

бази даних з урахуванням значення аргументу. З використанням.

індексного файла записи бази даних обробляються в послідовності,.

заданої ключовим вираженням, проте фізичний порядок прямування записів бази.

даних залишається незмінною. INDEX забезпечує послідовність записів,.

впорядковану по значенням ключового висловлювання. Для ключів типу CHARACTER — в.

відповідності зі значенням ASCII коду кожного символу всередині рядки, для ключів.

типу NUMERIC — відповідно до числовим порядком, для ключів типу дата — в.

хронологічному порядку й у логічних — вважається, що істина (.Т.) — більш.

високого порядка.

Memo-поля неможливо знайти индексированы.

в) Застосовуються чи фільтри ?

Хоча команда SET FILTER робить отже файл у робітничій області виглядає.

що складається з підмножини записів, насправді послідовно обробляються.

усі його записи.

Фільтри не застосовуються, т. к час з фильтрованной і нефільтрованій.

робочої областю виявляється у тому ж.

р) Чи є зв’язку «хозяин-слуга» і з яких полях ?

У подпрограмме vedom є связи.

Пример:

а) set relat to bb->invnom into cc Зв’язок полем «invnom».

б) set relat to cc->idst into aa additive Зв’язок полем «idst».

в) set relat to dd->invnom into cc additive Зв’язок полем «invnom».

Принципи підготовки даних для тестового прикладу і заповнення вихідних данных.

Ці дані було обрано довільно — «з головы»:

1) Ідентифікатор типу верстата.

2) Інвентарний номер станка.

3) Вигляд профилактики.

4) Найменування типу станка.

Ідентифікатор запис у файлі bb. dbf заповнювався по спадаючій (від 1 до 18), де 1;

перша запис, а 18- последняя.

Норма кол-ва днів між профилактиками було обрано произвольна.

Дата профілактики вибиралася те щоб норма кол-ва днів між профилактиками.

була перевищена всім видів профилактик.

б) Пункти меню, що мені робиться ?

Меню № 1:

1) Відразу розпочати роботу з Базою Данных.

2) Наново споруджувати індекси Бази Данных.

3) Провести компресію Бази Данных.

4) Вихід із Бази Данных.

При виборі п. 1, якщо індекси вже є ми потрапляємо в меню № 2.

При виборі п. 2 наново відбувається побудова всіх індексів Б. Д .

При виборі п. 3 виробляється компресія (ущільнення) Б. Д .

При виборі п. 4 з’являється горизонтальне підміню:

а) Зберегти та продовжити б) Завершити работу.

П.о) Зберегти всі внесені зміни і продолжить.

П.б) Завершити роботи з базою даних із збереженням всіх изменений.

Меню № 2:

1) Ведення файла «Нормативи профілактики устаткування «.

2) Ведення файла «Профілактика «.

3) Одержання відомості порушення норм техобслуживания.

4) Вихід із Бази Данных.

При виборі п. 1 ми потрапляємо в редактор файла aa. dbf — («Нормативи профілактики.

оборудования"), где ми можемо його переглядати і редагувати.

При виборі п. 2 ми потрапляємо в редактор файла bb. dbf — («Профілактика»), куди ми.

можемо його переглядати і редактировать.

При виборі п. 3 відбувається виявлення всіх випадків перевищення нормативних.

інтервалів між профилактиками, передача управління ними в вивідний файл «DD», і навіть видача.

відомості на принтер.

При виборі п. 4 виконуються дії аналогічні п. 4 в меню № 1.

Ведення БД .

Якими табл. представлено ведення БД, якою табл. вказується поточна робоча.

область, її слуги, колонки таблиці, набір клавіш куди передбачена.

реакція системы.

Клавіші куди реагує система:

/? / ® / /; PgUp / PgDn; Home / End — Переміщення курсора.

Enter — Вибір завдання у меню і редагування полів в редакторі.

Esc — Повернення на крок тому. Скасування редагування (без збереження изменненого.

значення).

F8 — Видалити рядок.

F3 — Вставити рядок.

F10 — Вихід із завдання зі збереженням всієї необхідної інформації або без збереження.

информации.

Структура програми :

а) Вміст rmk-файла «kursv.rmk»:

objs = main2, aa, util, bb.

.prg.obj:

CLIPPER $.

.obj.exe:

RTLINK OUTPUT $* FI $(objs) /PLL:base52.

main2.obj: main2.prg.

aa.obj: aa.prg.

util.obj: util.prg.

bb.obj: bb.prg.

kurs_ok.exe: main2. obj aa.obj util. obj bb.obj.

б) Імена і змістом prg-файлов. З кожної функції: ім'я, призначення, параметри,.

тип даних, і сенс, повернута значення, робочі перемен-ные та його назначение.

Програмні файлы:

1) aa.prg.

У цьому програмі реализовано:

1. Створення TBrowse-объекта для просмотра-редактирования файла aa. dbf з вікна.

2) bb.prg.

У цьому програмі реализовано:

1. Створення TBrowse-объекта для просмотра-редактирования файла bb. dbf з вікна.

3) main2.prg.

У цьому програмі реализовано:

1.Организация меню.

2. Індексування файлів.

3. Ущільнення файла .

4. Виявлення всіх випадків перевищення нормативних інтервалів між.

профилактиками, передача управління ними в вивідний файл «DD», і навіть видача відомості на.

принтер.

5. Висновок на екран інформації про «гарячих» клавишах.

4) util.prg.

Ця програма містить набір стандартних утилит:

1. Збереження екрана, відновлення экрана.

2. Переклад у верхній регістр як латиниці, і кириллицы.

3. Координати, повідомлення, цвет.

4. Вихід із завдання зі збереженням всієї необхідної інформації - реакція на клавішу F10.

5. Подача звукового сигналу для сигналізації успішного выполнения.

поставленого завдання:

Опис основних підпрограм:

1) в.п. постоения индексов:

func db_index (prm).

s_scr (24,0,25,79).

CLOSE ALL.

SETCOLOR («w/n »).

@ 24,0 CLEAR TO 25,79.

@ 24,6 SAY «Чекайте йде індексування! «COLOR «w+*/n «.

use bb.

index on bb->invnom + dtoc (bb->dateprof) to bb0001.

use aa.

index on aa->idst to aa0002.

use cc.

index on cc->invnom to cc0003.

use dd.

index on dd->(norma-fkdn) to dd0004.

close all.

r_scr ().

return nil.

2) в.п. відкриття індексів:

func db_open.

close all.

use aa index aa0002.

use bb index bb0001 new.

use cc index cc0003 new.

use dd index dd0004 new.

return nil.

3) в.п. ущільнення Б.Д. :

FUNCTION db_compress ().

s_scr (24,0,25,79).

CLOSE ALL.

SETCOLOR («w/n »).

@ 24,0 CLEAR TO 25,79.

@ 24,6 SAY «Чекайте йде ущільнення ! «COLOR («w+*/n »).

USE aa // ущільнення файла aa.dbf.

COPY TO work.

IF ERRORLEVEL () = 0.

USE.

DELETE FILE aa.dbf.

RENAME work. dbf TO aa.dbf.

ENDIF.

USE bb // ущільнення файла bb.dbf.

COPY TO work.

IF ERRORLEVEL () = 0.

USE.

DELETE FILE bb.dbf.

RENAME work. dbf TO bb.dbf.

ENDIF.

USE cc // ущільнення файла cc.dbf.

COPY TO work.

IF ERRORLEVEL () = 0.

USE.

DELETE FILE cc.dbf.

RENAME work. dbf TO cc.dbf.

ENDIF.

USE dd // ущільнення файла dd.dbf.

COPY TO work.

IF ERRORLEVEL () = 0.

USE.

DELETE FILE dd.dbf.

RENAME work. dbf TO dd.dbf.

ENDIF.

CLOSE ALL.

r_scr ().

RETURN NIL.

4) в.п. видачі інформації про клавішах, куди реагує система «Help»:

PROCEDURE hlp (callpnt, prm).

LOCAL retcol, crow, ccol.

IF prm = NIL.

prm := .F.

ENDIF.

crow = ROW ().

ccol = COL ().

retcol = SETCOLOR («w/n »).

@ 22,0 CLEAR TO 24,79.

IF callpnt = «GET «.

// виправлений HLP для GET 26.09.96.

@ 22,0 SAY «Enter/ «+ CHR (24) + «/ «+ CHR (25) + «/PgUp/PgDn » ;

+ «-Завершити редагування зі збереженням зміненого значення «.

@ 22,0 SAY «Enter/ «+ CHR (24) + «/ «+ CHR (25) + «/PgUp/PgDn «COLOR «r+/n «.

@ 23,1 SAY CHR (26) + «/ «+ CHR (27) + «/ ^ «+ CHR (26) ;

+ «/ ^ «+ CHR (27) + «/ Home / End — Переміщення курсору «.

@ 23,1 SAY CHR (26) + «/ «+ CHR (27) + «/ ^ «+ CHR (26) ;

+ «/ ^ «+ CHR (27) + «/ Home / End «COLOR «r+/n «.

@ 24,1 SAY «Esc — Скасувати редагування » ;

+ «(без збереження зміненого значення) «.

@ 24,1 SAY «Esc «COLOR «r+/n «.

ENDIF.

IF callpnt= «AAED » .OR. callpnt= «BBED «.

SET COLOR TO («w/n »).

@ 22,1 SAY chr (24) + «/ «+ chr (25) + «/ «+ CHR (26) + «/ «;

+ CHR (27) + «/ ^ «+ CHR (26) + «PgUp / PgDn » ;

+ «/ ^ «+ CHR (27) + «/ Home / End — Переміщення курсору «.

@ 24,0 SAY «Enter — Редагування «.

@ 23,23 TO 24,23 DOUBLE.

@ 23,25 SAY «Esc — Повернення на крок тому «COLOR «w/n «.

@ 23,25 SAY «Esc «COLOR «r+/n «.

@ 23,54 TO 24,54 DOUBLE.

@ 23,55 SAY «F8 — Видалити рядок «.

@ 24,55 SAY «F3 — Вставити рядок «.

SET COLOR TO («r+/n »).

@ 22,1 SAY chr (24) + «/ «+ chr (25) + «/ «+ CHR (26) + «/ «;

+ CHR (27) + «/ ^ «+ CHR (26) + «PgUp / PgDn » ;

+ «/ ^ «+ CHR (27) + «/ Home / End «.

@ 24,0 SAY «Enter «.

@ 23,55 SAY «F8 «.

@ 24,55 SAY «F3 «.

ENDIF.

IF callpnt= «CCED » .OR. callpnt= «DDED «.

SET COLOR TO («w/n »).

@ 22,1 SAY chr (24) + «/ «+ chr (25) + «/ «+ CHR (26) + «/ «;

+ CHR (27) + «/ ^ «+ CHR (26) + «PgUp / PgDn » ;

+ «/ ^ «+ CHR (27) + «/ Home / End — Переміщення курсору «.

@ 24,0 SAY «Enter — Редагування «.

@ 23,23 TO 24,23 DOUBLE.

@ 23,25 SAY «Esc — Повернення на крок тому «COLOR «w/n «.

@ 23,25 SAY «Esc «COLOR «r+/n «.

@ 24,25 SAY «^Enter — Вибір значення «COLOR «w/n «.

@ 24,25 SAY «^Enter «COLOR «r+/n «.

@ 23,54 TO 24,54 DOUBLE.

@ 23,55 SAY «F8 — Видалити рядок «.

@ 24,55 SAY «F3 — Вставити рядок «.

SET COLOR TO («r+/n »).

@ 22,1 SAY chr (24) + «/ «+ chr (25) + «/ «+ CHR (26) + «/ «;

+ CHR (27) + «/ ^ «+ CHR (26) + «PgUp / PgDn » ;

+ «/ ^ «+ CHR (27) + «/ Home / End «.

@ 24,0 SAY «Enter «.

@ 23,55 SAY «F8 «.

@ 24,55 SAY «F3 «.

ENDIF.

SET COLOR TO (retcol).

SETPOS (crow, ccol).

RETURN.

5) в.п. виявлення всіх випадків перевищення нормативних інтервалів між.

профилактиками, виведення в вивідний файл «DD», і навіть видачі відомості на.

принтер:

func vedom.

local tinvnom, sitog, tdata, tidzap, tidst, idpop.

set printer on.

select dd.

zap.

lin:=space (17)+ «Таблиця порушення норм техобслуговування: «.

? lin.

select bb.

set relat to bb->invnom into cc.

set relat to cc->idst into aa additive.

go top.

sitog:=0.

do while .not. eof ().

tinvnom:=bb->invnom.

tdata:=bb->dateprof.

tidzap:=bb->idzap.

tidst:=cc->idst.

skip.

if (bb->invnom=tinvnom).and.(bb->dateprof-tdata>aa->norma).

select dd.

append blank.

replace dd->invnom with tinvnom.

replace dd->fkdn with bb->dateprof-tdata.

replace dd->norma with aa->norma.

replace dd->idzappp with tidzap.

replace dd->idzapsp with bb->idzap.

sitog:=sitog+(dd->fkdn-dd->norma).

select bb.

endif.

enddo.

lin:= «+——————————————————————————————————————-+ «.

? lin.

lin:= «¦ Инв.¦ Найменування ¦ Дата ¦ Вигляд предвор. ¦ Дата ¦ вид слід. ¦Просроч.¦ «.

? lin.

lin:= «¦номер¦ типу верстата ¦ ¦ профілактики ¦ ¦ профілактики ¦ днів ¦ «.

? lin.

lin:= «¦——-+———————+————+———————+————+———————+————¦ «.

? lin.

select dd.

set relat to dd->invnom into cc additive.

go top.

do while .not. eof ().

tinvnom:=dd->invnom.

idpop:=dd->idzappp.

lin:= «¦ «+dd->invnom+ «¦ «.

select bb.

go top.

do while .not. eof ().

if (tinvnom=bb->invnom).and.(idpop=bb->idzap).

lin:=lin+aa->namest+ «¦ «+dtoc (bb->dateprof)+ «¦ «+bb->vidprof.

endif.

skip.

enddo.

select dd.

idpop:=dd->idzapsp.

select bb.

go top.

do while .not. eof ().

if (tinvnom=bb->invnom).and.(idpop=bb->idzap).

lin:=lin+ «¦ «+dtoc (bb->dateprof)+ «¦ «+bb->vidprof+ «¦ «.

endif.

skip.

enddo.

select dd.

lin:=lin+str (dd->fkdn-dd->norma, 4)+ «¦ «.

? lin.

skip.

enddo.

lin:= «+——————————————————————————————————————-+ «.

? lin.

set color to w+/b.

lin:= «Усього просроченно днів — «+str (sitog, 5).

? lin.

set printer off.

sound ().

inkey (0).

return nil.

6) в.п. подачі звукового сигналу для сигналізації успішного выполнения.

поставленого завдання:

func sound.

tone (300,1).

tone (100,1).

tone (300,1).

tone (100,1).

return nil.

7) в.п. збереження зкрана:

FUNC s_scr (t, l, b, r).

IF t = NIL.

t := 0.

ENDIF.

IF l = NIL.

l := 0.

ENDIF.

IF b = NIL.

b := MAXROW ().

ENDIF.

IF r = NIL.

r := MAXCOL ().

ENDIF.

AADD (wind[1], t).

AADD (wind[2], l).

AADD (wind[3], b).

AADD (wind[4], r).

AADD (wind[5], SAVESCREEN (t, l, b, r)).

AADD (pos[1], ROW ()).

AADD (pos[2], COL ()).

AADD (colr, SETCOLOR ()).

AADD (curs, SETCURSOR ()).

RETURN .T.

8) в.п. відновлення зкрана:

FUNC r_scr ().

LOCAL ln.

ln := LEN (wind[1]).

IF ln == 0.

@ 24,0 SAY «Помилка — стік на відновлення параметрів порожній «.

INKEY (0).

@ 24,0.

ENDIF.

RESTSCREEN (wind[1,ln], wind[2,ln], wind[3,ln], wind[4,ln], wind[5,ln]).

ASIZE (wind[1], ln-1).

ASIZE (wind[2], ln-1).

ASIZE (wind[3], ln-1).

ASIZE (wind[4], ln-1).

ASIZE (wind[5], ln-1).

SETPOS (pos[1,ln], pos[2,ln]).

ASIZE (pos[1], ln-1).

ASIZE (pos[2], ln-1).

SETCOLOR (colr[ln]).

ASIZE (colr, ln-1).

SETCURSOR (curs[ln]).

ASIZE (curs, ln-1).

RETURN .T.

9) в.п. визначення — натиснута чи клавіша типового методу, якщо так — то повертає.

блок коду з певним методом, якщо ні - то повертає NIL. Параметр

функції - INKEY-код натиснутої клавиши.

FUNC basemet (cod).

LOCAL ret, ei, i.

LOCAL crsm:={ ;

{K_DOWN, {o o: down () } } ;

{K_UP, {o o: up () } } ;

{K_PGDN, {o o: pagedown () } } ;

{K_PGUP, {o o: pageup () } } ;

{K_CTRL_PGDN, {o o: gobottom () } } ;

{K_CTRL_PGUP, {o o: gotop () } } ;

{K_RIGHT, {o o: right () } } ;

{K_LEFT, {o o: left () } } ;

{K_CTRL_RIGHT, {o o: panright () } } ;

{K_CTRL_LEFT, {o o: panleft () } } ;

{K_END, {o o: end () } } ;

{K_HOME, {o o: home () } } ;

{K_CTRL_END, {o o: panend () } } ;

{K_CTRL_HOME, {o o: panhome () } } }.

і := ASCAN (crsm, {ei cod = ei[1] }).

IF і 0.

ret := crsm[i, 2].

ELSE.

ret := NIL.

ENDIF.

RETURN ret.

10) в.п. перемикання режиму вставка/замена і виду курсора:

PROCEDURE Repl_Ins ().

IF READINSERT ().

READINSERT (.F.).

SETCURSOR (SC_INSERT).

ELSE.

READINSERT (.T.).

SETCURSOR (SC_NORMAL).

ENDIF.

RETURN.

11) в.п. переведення гривень у верхній регістр латиниці і кириллицы:

FUNC UpperC (prm).

LOCAL n, і, smb, cs.

n := LEN (prm).

FOR і = 1 TO n.

smb := SUBSTR (prm, і, 1).

cs := ASC (smb).

DO CASE.

CASE cs >= 97 .AND. cs.

cs := cs — 32.

prm := STUFF (prm, і, 1, CHR (cs)).

CASE cs >= 160 .AND. cs.

cs := cs — 32.

prm := STUFF (prm, і, 1, CHR (cs)).

CASE cs >= 224 .AND. cs.

cs := cs — 80.

prm := STUFF (prm, і, 1, CHR (cs)).

ENDCASE.

NEXT.

RETURN prm.

12) в.п. виходу з завдання зі збереженням всієї необхідної інформації - реакція на клавішу.

F10:

PROCEDURE fquit ().

LOCAL reply.

reply := ALERT («Зберегти всі внесені зміни та продовжити; «;

+ «роботи з Базою даних — тобто. зробити проміжний SAVE чи; «;

+ «Завершити роботи з базою даних із збереженням всіх змін; «;

{ «Зберегти та продовжити », «Завершити роботу «}).

IF (reply = 1) .OR. (reply = 0).

DBCOMMITALL ().

ELSE.

QUIT.

ENDIF.

RETURN.

13) в.п. виведення повідомлення на екран із наперед заданими координатами і цветом:

PROCEDURE msgs (x, y, m, color).

LOCAL ml, c.

IF m = NIL.

RETURN.

ENDIF.

ml=LEN (m).

IF ml=0 && .OR. ml > 80.

RETURN.

ENDIF.

IF x=NIL // Центр по X.

x := (80-ml)/2.

ENDIF.

IF y=NIL // Центр по Y.

y := 24/2 — 1.

ENDIF.

IF color NIL.

з := SETCOLOR (color).

@ y, x SAY m.

SETCOLOR©.

ELSE.

@ y, x SAY m.

ENDIF.

RETURN.

14) в.п. створення TBrowse-объекта для просмотра-редактирования.

файла aa. dbf з вікна t, l, b, r :

FUNCTION aaCr (t, l, b, r).

LOCAL brws, coln, cblk, chdr.

brws := TBrowseDb (t, l, b, r).

cblk := { «» + aa->idst }.

chdr := «Идент. типу верстата «.

coln := TBColumnNew (chdr, cblk).

coln:width := 19.

brws:AddColumn (coln).

cblk := { «» + aa->namest}.

chdr := «Найменування типу верстата «.

coln := TBColumnNew (chdr, cblk).

coln:width := 35.

brws:AddColumn (coln).

cblk := { STR (aa->norma, 7) }.

chdr := «Норма, дней «.

coln := TBColumnNew (chdr, cblk).

coln:width := 12.

brws:AddColumn (coln).

brws:colsep := CHR (186).

brws:headsep := CHR (205).

brws:colorspec := «w+/b, gr+/rb «.

RETURN brws.

15) в.п. перегляду файла aa. dbf з обробкою нажимаемых клавіш і викликом.

відповідних методів чи користувальних функций:

FUNCTION aaEd (brws).

LOCAL ret_fl, sel, otb, w.

LOCAL cc, rr, nrc:=0,i.

LOCAL ret:=NIL.

LOCAL t := brws: nTop, l := brws: nLeft, b := brws: nBottom, r := brws: nRight.

LOCAL t_ := 5, l_ := 6, b_ := 15, r_ := 74.

s_scr ().

s_r_s ().

SETCOLOR («N/W »).

CLS.

SETCOLOR («gr+/b, w+/gr »).

hlp («AAED »).

SELECT aa.

SET ORDER TO 2.

@ t-2, l-1 CLEAR TO b+2, r+1.

@ b+1, l TO b+1, r.

ret_fl := .F.

DO WHILE .NOT. ret_fl.

** оптимизированная з допомогою буфера клавіатури стабилизация.

DO WHILE (NEXTKEY () == 0) .AND. (.NOT. brws: stabilize ()).

ENDDO.

IF (NEXTKEY () == 0) .AND. (RECNO () nrc).

nrc := RECNO ().

rr := ROW ().

cc := COL ().

SETCOLOR («bg+/b »).

@ t-2, l+1 SAY «Нормативи профілактики устаткування: «.

@ b+2, l+1 SAY «Тип верстата: «.

@ b+2, COL ()+1 SAY aa->namest COLOR «w+/b «.

SETPOS (rr, cc).

ENDIF.

SETCOLOR («gr+/rb »).

** очікуємо натискання клавиши.

nkey := Inkey (0).

// якщо натиснута клавіша типового методу — викличемо его.

blk := basemet (nKey).

IF blk NIL.

EVAL (blk, brws).

ELSE.

DO CASE.

CASE (bHotkey := SETKEY (nKey)) NIL.

EVAL (bHotkey, PROCNAME (), PROCLINE (), READVAR ()).

CASE (nKey = K_F8).

DELETE.

// потрогаем файловий покажчик, если.

// возвращаетя EOF () — .T. після Down-Up,.

// отже файл пуст.

SKIP.

SKIP -1.

IF RECNO () = RECCOUNT ()+1.

ret_fl := .T. // завершення просмотра.

ENDIF.

brws:RefreshAll ().

nrc := 0.

CASE nKey = K_ESC.

ret_fl := .T. // завершення просмотра.

CASE (nKey = K_ENTER).

// Редагування поточного елемента данных.

aaGet (brws ;

«Редагування файла aa. dbf »).

nrc := 0 // оновити верхню строку.

CASE nKey == K_F3.

APPEND BLANK.

brws:RefreshAll ().

ENDCASE.

ENDIF.

ENDDO.

SET RELAT TO.

s_r_s (.T.).

r_scr ().

RETURN ret.

16) в.п. виконання GET в поточної колонці файла aa. dbf:

PROCEDURE aaGet (brws, z0).

LOCAL r, з, w, w2, otb.

LOCAL retcurs, retexit // форма курсору і режим виходу з READ.

LOCAL retins, retcol // режим вставка-замена в READ.

LOCAL indch := .F. // прапор змін значень полів, вхідних в.

// индекснове вираз (тоді доведеться REFRESHALL (),.

// а чи не REFRESHCURRENT ()).

LOCAL col.

r := ROW ().

з := COL ().

// Перевірка відновлення екрана, коректності бази й т.д.

ForceStable (brws).

// Установка клавіш Up-Arrow і Down-Arrow як клавіш виходу из.

// команди READ.

retexit := READEXIT (.T.).

// Установка клавіші INS для переключения.

// режиму вставка/замена.

// і одержувачів відповідного зміни виду курсора.

retins := SetKey (K_INS, { Repl_Ins ()}).

// еквівалентно Set Key K_INS To Procedure Repl_Ins.

// Установка виду курсору за поточного стану режима.

retcurs := SetCursor (IF (ReadInsert (), SC_NORMAL, SC_INSERT)).

s_scr ().

retcol := SETCOLOR («w+/g »).

@ brws: nTop-3,0.

@ brws: nTop-3,0 SAY z0.

hlp («GET »).

SETCOLOR («gr+/n, w+/g »).

indch := .F.

DO CASE.

CASE brws: colpos = 1.

w := aa->idst.

@ r, c+2 GET w.

READ.

IF .NOT.(LASTKEY () = K_ESC).OR.(aa->idst == w).

REPLACE aa->idst WITH w.

indch := .T.

ENDIF.

CASE brws: colpos = 2.

n := aa->namest.

@ r, c+2 GET n.

READ.

IF .NOT.(LASTKEY () = K_ESC).OR.(aa->namest == n).

REPLACE aa->namest WITH n.

ENDIF.

CASE brws: colpos = 3.

w := aa->norma.

@ r, c+1 GET w.

READ.

IF .NOT.((LASTKEY () = K_ESC) .OR. (aa->norma = w)).

REPLACE aa->norma WITH w.

ENDIF.

ENDCASE.

SETCOLOR (retcol).

r_scr ().

SETPOS (r, c).

IF indch.

brws:RefreshAll ().

ELSE.

brws:RefreshCurrent () // Забезпечити перемальовування поточної строки,.

ENDIF // оскільки змінювався елемент данных.

// Відновлення форми курсору та режиму виходу з READ по стрелкам.

// і складні процедури по клавіші K_INS.

SetCursor (retcurs).

READEXIT (retexit).

SetKey (K_INS, retIns).

// Перевірка вимоги звільнення з поточної записи після GET.

nKey := LASTKEY ().

IF nKey == K_UP .OR. nKey == K_DOWN .OR. ;

nKey == K_PGUP .OR. nKey == K_PGDN.

// управління курсором — перехід в іншу записи.

KEYBOARD (CHR (nKey)).

ENDIF.

RETURN.

Показати весь текст
Заповнити форму поточною роботою