DO CASE CASE Al3Parnt.cself = "1MHG" && message header ptkey = al3parnt.ckey CASE Al3Parnt.cself = "2TRG" && new transaction ptkey = '2TRG'+'_'+SEQ CASE Al3Parnt.cself = "3MTG" && message Trailer ptkey = al3parnt.ckey CASE Al3Parnt.cPARENT = "A0" && this record's parent 'branch' A0 is always top level branch ptkey = al3parnt.ckey OTHERWISE ptkey = al3parnt.ckey ENDCASE THISFORM.grdElements.RECORDSOURCE='' SELE al3parnt SET ORDER TO 0 SELE al3child SET ORDER TO TAG cp_ID SELE al3parnt SET RELATION TO ckey INTO al3child SELE al3child SET FILTER TO UPPER(ALLTRIM(al3child.cp_ID)) = ALLTRIM(UPPER(al3parnt.ckey)) GO TOP IF krecno > 0 GOTO krecno ENDIF thisform.oletreeview.NodeClick(thisform.oletreeview.Nodes(ptkey)) thisform.oletreeview.Nodes(ptkey).Selected=.t. THISFORM.grdElements.RECORDSOURCE='al3child' THISFORM.grdElements.REFRESH() thisform.grdElements.SETFOCUS()>
>* Assure highlight: oTreeview.HideSelection=.f.
>* Fire the Node click event
>oTreeview.NodeClick(oTreeview.Nodes(al3parnt.ckey))
>* or (simply) select the node (and not fire node click)
>oTreeview.Nodes(al3parnt.ckey).Selected=.t.
>
>>IF EMPTY(THISFORM.text2.VALUE) >> RETURN >>ENDIF >>IF !USED('al3parnt') .OR. !USED('al3child') >> RETURN >>ENDIF >> >>STORE 0 TO mrecno, crecno >>IF !EOF('al3parnt') >> STORE RECNO('al3parnt') TO mrecno >>ELSE >> GO TOP >> STORE RECNO('al3parnt') TO mrecno >>ENDIF >>IF !EOF('al3child') >> STORE RECNO('al3child') TO crecno >>ELSE >> GO ToP >> STORE RECNO('al3child') TO crecno >>ENDIF >> >>SELE al3child >>SET FILTER TO >>LOCATE FOR UPPER(ALLTRIM(THISFORM.text2.VALUE)) $ UPPER(al3child.VALUE) >> >>IF !EOF('al3child') >> krecno = 0 >> STORE RECNO('al3child') TO krecno >> tctempkey = al3child.cp_ID >> SELE al3parnt >> LOCATE FOR al3parnt.ckey = tctempkey >> IF !FOUND('al3parnt') >> GOTO mrecno >> SELE al3child >> GOTO crecno >> SELE al3parnt >> ELSE >> ptkey = al3parnt.ckey >> THISFORM.grdElements.RECORDSOURCE='' >> SELE al3parnt >> SET ORDER TO 0 >> SELE al3child >> SET ORDER TO TAG cp_ID >> SELE al3parnt >> SET RELATION TO ckey INTO al3child >> SELE al3child >> SET FILTER TO UPPER(ALLTRIM(al3child.cp_ID)) = ALLTRIM(UPPER(al3parnt.ckey)) >> GO TOP >> IF krecno > 0 >> GOTO krecno >> ENDIF >> THISFORM.grdElements.RECORDSOURCE='al3child' >> THISFORM.grdElements.REFRESH() >> thisform.grdElements.SETFOCUS() >> *Here I need to select the correct node in the treeview >> ENDIF >>ELSE >> SELE al3child >> GOTO crecno >> SELE al3parnt >> GOTO mrecno >> SELE al3child >> SET FILTER TO UPPER(ALLTRIM(al3child.cp_ID)) = ALLTRIM(UPPER(al3parnt.ckey)) >> GO TOP >> THISFORM.grdElements.RECORDSOURCE='al3child' >> THISFORM.grdElements.REFRESH() >>ENDIF >>>>NodeClick:
>>*** ActiveX Control Event *** >>LPARAMETERS NODE >> >>* this loNode is being selected by the user >> >>NODE.ensurevisible >> >>IF USED('al3parnt') .AND. USED('al3child') >> THISFORM.grdElements.RECORDSOURCE='' >> SELE al3parnt >> SET ORDER TO 0 >> SELE al3child >> SET ORDER TO TAG CP_ID >> SELE al3parnt >> SET RELATION TO ckey INTO al3child >> SELE al3child >> SET FILTER TO al3child.CP_ID = al3parnt.ckey >> >> SELECT al3parnt >> GO TOP >> DO CASE >> CASE LEFT(ALLTRIM(UPPER(node.text)),11) = "TRANSACTION" && new transaction >> lcSelf = LEFT(NODE.KEY,AT('_',NODE.KEY)-1) >> lcSeq = SUBSTR(NODE.KEY,AT('_',NODE.KEY)+1) >> SELE al3parnt >> SET ORDER TO TAG cSelf >> GO TOP >> LOCATE FOR cSelf = lcSelf AND Seq = lcSeq >> OTHERWISE >> SELE al3parnt >> SET ORDER TO TAG ckey >> GO TOP >> LOCATE FOR ckey = node.key >> ENDCASE >> >> IF FOUND('al3parnt') >> SELE al3child >> SET FILTER TO UPPER(ALLTRIM(al3child.CP_ID)) = ALLTRIM(UPPER(al3parnt.ckey)) >> GO TOP >> THISFORM.grdElements.RECORDSOURCE='al3child' >> ENDIF >> THISFORM.grdElements.REFRESH() >>ENDIF >>>>
>> >>#define tvwFirst 0 && The Node is placed before all other nodes at the same level of the node named in relative. >>#define tvwLast 1 && The Node is placed after all other nodes at the same level of the node named in relative. Any Node added subsequently may be placed after one added as Last. >>#define tvwNext 2 && (Default) The Node is placed after the node named in relative. >>#define tvwPrevious 3 && The Node is placed before the node named in relative. >>#define tvwChild 4 && The Node becomes a child node of the node named in relative.#DEFINE tvwFirst 0 >>#DEFINE cnLOG_PIXELS_X 88 >>#DEFINE cnLOG_PIXELS_Y 90 >>#DEFINE cnTWIPS_PER_INCH 1440 >> >>IF !USED('al3parnt') >> WAIT WINDOW "An error occurred! Could not open al3parnt." NOWAIT >> RETURN >>ENDIF >>IF !USED('al3child') >> WAIT WINDOW "An error occurred! Could not open al3child." NOWAIT >>ENDIF >>PRIVATE onode, mstartkey, tnode >>mstartkey='' >>THIS.SHOW >>THIS.oletreeview.nodes.clear() >>WITH THIS.oletreeview.nodes >> onode=.ADD(,tvwFirst,'File_Name'+'_'+'0000',thisform.Al3_file) >> IF TYPE('onode')="O" >> onode.expanded = .T. >> ENDIF >> onode=.ADD('File_Name'+'_'+'0000',tvwChild,'Message1'+'_'+'0000','Message(1)') >> IF TYPE('onode')="O" >> onode.expanded = .T. >> ENDIF >> SELE Al3Parnt >> SET ORDER TO 0 >> SCAN >> DO CASE >> CASE Al3Parnt.cself = "1MHG" && message header >> tnode=.ADD('Message1'+'_'+'0000',tvwChild,al3parnt.ckey,TRIM(al3Parnt.cSelf)) >> STORE al3parnt.ckey TO mstartkey >> CASE Al3Parnt.cself = "2TRG" && new transaction >> onode=.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 >> onode=.ADD('2TRG'+'_'+SEQ,tvwChild,al3parnt.ckey,TRIM(Al3Parnt.label)) >> ENDCASE >> ENDSCAN >> IF TYPE('tnode')="O" .and. TYPE('mstartkey')="C" .and. !EMPTY(mstartkey) >> THIS.oletreeview.nodes(mstartkey).Selected=.t. >> THIS.oletreeview.nodeclick(tnode) >> ENDIF >>ENDWITH >>RETURN >>