THIS.oletreeview.nodes.clear() WITH THIS.oletreeview.nodes .ADD(,tvwFirst,'File_Name'+'_'+'0000',thisform.Al3_file) .ADD('File_Name'+'_'+'0000',tvwChild,'Message1'+'_'+'0000','Message(1)') SELE Al3Parnt SET ORDER TO 0 SCAN DO CASE CASE Al3Parnt.cself = "1MHG" && message header .ADD('Message1'+'_'+'0000',tvwChild,al3parnt.ckey,TRIM(al3Parnt.cSelf)) *Now expand the 1MHG Node somehow CASE Al3Parnt.cself = "2TRG" && new transaction .ADD('Message1'+'_'+'0000',tvwChild,'2TRG'+'_'+SEQ,'Transaction('+ALLTRIM(STR(al3Parnt.ntran))+')') CASE Al3Parnt.cself = "3MTG" && message Trailer .ADD('Message1'+'_'+'0000',tvwChild,al3parnt.ckey,LEFT(TRIM(al3Parnt.cSelf),4)) CASE Al3Parnt.cPARENT = "A0" && this record's parent 'branch' A0 is always top level branch .ADD('2TRG'+'_'+SEQ,tvwChild,al3parnt.ckey,TRIM(Al3Parnt.label)) OTHERWISE .ADD(Al3Parnt.cp_id, tvwChild, ; al3Parnt.ckey,TRIM(Al3Parnt.label)) ENDCASE ENDSCAN ENDWITHTIA,