Модуль RsCom содержит два класса окон: Таблица и Дерево. Каждое из окон предназначено для отображения в окнах диалога объектов типа RsTbl и RsTree соответственно. В отличии от них окна не поддерживают редактирование отображаемых элементов и позволяют лишь выбрать необходимый.
ТаблицаДля отображения окна "Таблица" необходимо добавить в окно диалога
заказное окно класса "GRIDRS". Для инициализации окна следует использовать
выражение вида
PUT COD,RS,TITLEгде
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где
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