Модуль RsCom


Модуль RsCom содержит два класса окон: Таблица и Дерево. Каждое из окон предназначено для отображения в окнах диалога объектов типа RsTbl и RsTree соответственно. В отличии от них окна не поддерживают редактирование отображаемых элементов и позволяют лишь выбрать необходимый.

Таблица

Для отображения окна "Таблица" необходимо добавить в окно диалога заказное окно класса "GRIDRS". Для инициализации окна следует использовать выражение вида

PUT COD,RS,TITLE
где
COD
идентификатор элемента окна диалога,
RS
объект типа RSODBC,
TITLE
строка описания заголовка таблицы.
При этом в окне будет отображена таблица, причем ее марекр будет установлен на элементе соответствующем текущей записи RS. Для получения результата следует использовать выражение вида
REC= VAL(GET(COD)).
Для отработки события КЛИК следует использовать выражение вида:
IF PARAM("UPDATED",101) THEN RES=EVENT(HDLG,1).
Пример:

 DEF RSCOM
 
 SET Rs= RSODBC.New( Shop, "CNTR", 1 )
 IF EMPTY(Rs) GOTO CLOSE
 Rs.Open( "SELECT NAME, ID FROM CNTR ORDER BY NAME", "KEYSET" )

 EVENT 3000,CARD01
 INPUT RESNAME,"DIALOG",3000
 EVENT 3000

 ERASE Rs.Close
END

CARD01:
 IF PARAM=1 GOTO CARD11
 IF PARAM=2 GOTO CARD21
 IF PARAM("UPDATED",101) THEN RES=EVENT(HDLG,1)
END

CARD11:
 IF EMPTY($SelCntr) THEN $SelCntr=1
 Rs.RecGet($SelCntr)
 PUT 101,Rs,"Наименоване"
END

CARD21:
 CntrId=VAL(GET(101))
 IF CntrId=0 THEN END 0
 $SelCntr=CntrId
 Rs.RecGet(CntrId)
 CntrId=Rs.FldGet("ID")
END

Дерево

Для отображения окна "Дерево" необходимо добавить в окно диалога заказное окно класса "TREERS". Для инициализации окна следует использовать выражение вида

PUT COD,RS,PARAM
где
COD
идентификатор элемента окна диалога,
RS
объект типа RSODBC,
PARAM
строка вида STR(HWND)+","+STR(CodEvn)
CodEvn
код события вызываемого для отображения элемента дерева.
При этом в окне будет отображена таблица ввиде ирархического списка, причем ее марекр будет установлен на элементе соответствующем текущей записи RS. Для правильной работы неоходимо, чтобы таблица Rs имела поля с именами OWN и ID, где ID- уникальный идентификатор записи, а OWN-ссылка на ID записи верхнего уровня. Записи верхнего уровня должны иметь OWN=0. Для получения результата следует использовать выражение вида
REC= VAL(GET(COD)).
Пример:

 DEF RSCOM
 
 SET Rs= RSODBC.New( Shop, "GRUPPA", 1 )
 IF EMPTY(Rs) GOTO CLOSE
 Rs.Open( "SELECT ID, OWN, NAME FROM GRUPPA", "KEYSET" )

 EVENT 4000,RECORD
 EVENT 3000,CARD01
 INPUT RESNAME,"DIALOG",3000
 EVENT 3000
 EVENT 4000

 ERASE Rs.Close
END

RECORD:
 RES= MCOPY( PARAM, Rs.FldGet("NAME") )
END

CARD01:
 IF PARAM=1 GOTO CARD11
 IF PARAM=2 GOTO CARD21
END

CARD11:
 IF EMPTY($SelGrp) THEN $SelGrp=1
 GrpId=$SelGrp
 Rs.RecGet($SelGrp)
 PUT 101,Rs,STR(HWND)+","+STR(4000)
END

CARD21:
 GrpId=VAL(GET(101))
 IF GrpId=0 THEN END 0
 $SelGrp=GrpId
 Rs.RecGet(GrpId)
 GrpId=Rs.FldGet("ID")
END

Hosted by uCoz