Filling a Tree View on Demand

To fill in a tree view only when the user double-clicks on items, you need to test what level of the tree is being worked with and fetch the data in the ItemExpanding event in the tree view. (See the next section for information about the tree view properties).  This example retrieves the section and the employee information on demand:

When you use a dynamic tree view, set the ManageChildren property of the tree view to True.

To see how the example works, copy this code and paste it to a form component:

FUNCTION options(*DIRECT)

BEGIN_COM role(*EXTENDS #PRIM_FORM) HEIGHT(405) LEFT(129) TOP(131) WIDTH(377)

DEFINE_COM class(#PRIM_TRVW) name(#TRVW_1) DISPLAYPOSITION(1) HEIGHT(345) LEFT(24) PARENT(#COM_OWNER) TABPOSITION(1) TOP(8) WIDTH(321)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_1) KEYPOSITION(1) LEVEL(1) PARENT(#TRVW_1) SOURCE(#DEPTMENT) VISIBLE(False)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_3) KEYPOSITION(1) LEVEL(2) PARENT(#TRVW_1) SOURCE(#SECTION) VISIBLE(False)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_2) DISPLAYPOSITION(1) IMAGE(#VI_DEPTCL) IMAGEEXPANDED(#VI_DEPTOP) LEVEL(1) PARENT(#TRVW_1) SOURCE(#DEPTDESC)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_4) DISPLAYPOSITION(1) IMAGE(#VI_SECTCL) IMAGEEXPANDED(#VI_SECTOP) LEVEL(2) PARENT(#TRVW_1) SOURCE(#SECDESC)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_5) KEYPOSITION(1) LEVEL(3) PARENT(#TRVW_1) SOURCE(#EMPNO) VISIBLE(False)

DEFINE_COM class(#PRIM_TVCL) name(#TVCL_6) DISPLAYPOSITION(1) LEVEL(3) PARENT(#TRVW_1) SOURCE(#SURNAME)

EVTROUTINE handling(#TRVW_1.Initialize) options(*NOCLEARMESSAGES *NOCLEARERRORS)

SELECT fields(#DEPTMENT #DEPTDESC) from_file(DEPTAB)

ADD_ENTRY to_list(#TRVW_1)

ENDSELECT

ENDROUTINE

EVTROUTINE handling(#TRVW_1.ItemExpanding)

CHANGE field(#STD_NUM) to('#TRVW_1.CURRENTITEM.LEVEL')

CASE of_field(#STD_NUM)

WHEN value_is('= 1')

SELECT fields(#SECTION #SECDESC) from_file(SECTAB) with_key(#DEPTMENT)

ADD_ENTRY to_list(#TRVW_1)

ENDSELECT

WHEN value_is('= 2')

SELECT fields(#EMPNO #SURNAME) from_file(PSLMST1) with_key(#DEPTMENT #SECTION)

ADD_ENTRY to_list(#TRVW_1)

ENDSELECT

ENDCASE

ENDROUTINE

END_COM