Перечень изучаемых функций InitList()
Задача урока:
- Пункт в меню в модуле Продажи.
· | По пункту - реестр из одной единственной таблицы с перечнем выполненных работ ИТ отдела. |
· | Управление удалением в таблице |
· | Регулирование положения столбцов на экране |
+ Формат таблицы
Дата - TEK_DATA D 8 0
Номер - ТЕК_NOMER C 6 0
Наименование Раб.- NAME C 34 0
Количество по строке - KOL N 19 4
Цена ед. - CENA 19 3
Сумма - SUMMA 19 3
Наименование партнера NAME_P C 25 0
1. Создадим пункт меню
- Таблица real\rmenu.dbf
- У меня нет записи 0 10 - пишу туда "Реестр работ ИТ"
и блок кода с простенькой программой work.hrb
+Пример программы
· | В 12-й версии БЭСТ 4+ в любом реестре нажимаем CTRL+F5 |
· | Нажимаем F11 |
· | Создаем новый файл work.prg |
· | F2 компилируем информацию для отладчик не включать |
· | пишем в поле функции меню {||HFileEval("work.hrb",{}) } |
· | проиндексируем модуль управление продажами обязательно, зайдем туда и убедимся что программка работает |
2. Создаем программу с отображением таблицы на экране
· | Общая щирина экрана на которой можем отразить 78 знаков - общая ширина всех полей 130 плюс пробелы между ними нужны. |
· | определим цепочку полей отражения на экране в строчку и размер отражения поля на экране (с учетом пробелов) : обрежем поля Name, Сеna и Summa что бы уместиться в 78 |
Для самого реестра можно оставить вот такой набор данных
1 8 1 6 1 16 1 5 1 18 1 18 1 = 78
6 - Tek_Nomer
16 - left(Name,16)
5 - left(str(kol),5)
18 - left(str(Cena),18)
18 - left(str(Summa),18)
· | Пишем в первом приближении |
LOCAL aSet,aSetKey,nTop,nBot,cColHead,aBlockCols,cCurproc aSet:=SAVESET() aSetKey:=SAVESETKEY() NETUSE("WORK",LOADPATH()+"\real\work.dbf",,.F.) (Или по Вашему пути) DISPBOX(2,0,23,79,( CHR( 201 )+ CHR( 205 )+ CHR( 187 )+ CHR( 186 )+ CHR( 188 )+ CHR( 205 )+ CHR( 200 )+ CHR( 186 )+' ' ),"W+/B") nTop:=3 nBot:=22 cColHead:={" Дата Номер НАИМЕНОВАНИЕ Кол-во Цена Сумма "} cCurProc:={||"2"} aBlockCols:={{{||FIELD->tek_data},0},{{||FIELD->tek_nomer},9},{{||LEFT(FIELD->NAME,16)},16},{{||STR(FIELD->kol,5)},33},{{||STR(FIELD->cena,12,2)},39},{{||STR(FIELD->summa,12,2)},52}} WORK->( INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc)) WORK->( DBCLOSEAREA() ) RESTSETKEY(aSetKey) RESTSET(aSet) RETURN NIL
· | для закрепления материала меняем значения в параметрах и смотрим изменения на экране |
o | При включенной авторизации если вы используете свое меню - вам его надо обновить и появится этот пункт меню |
o | cCurProc:={||"2"} - сопроцедура для QBrowse(), значения параметров смотрите в описании QBROWSE |
o | field-> это обозначение что использовать поле применительно к текущей БД а поскольку мы пишем WORK->( InitList() ) то значит к WORK |
o | В описании Initlist четко написано что скролинг вправо не предусмотрен а стало быть у вас тока 80 символов и возможность открывать другие экраны, а также искользовать область на экране над или под столбцами |
3. Для запрета на удаление строк в таблице
· | добавим bDel:={||.F.} удаление будет запрещено и наоборот соответственно разрешено |
· | меняем строку в программе: |
WORK->( INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc,,,,,,,bDel))
4. Регулирование положения столбцов на экране
· | Если переменная заголовка меньше 78 символов – то расположение на экране будет отцентровано, если в конец ее добавить нужное число пробелов, то столбик сместится влево. |
· | Создадим nLeft:=1 и поместим его в InitList 21 параметром - столбики тоже прижмутся влево |
Добавить комментарий