Модуль 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