Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Select an item in treeview list automatically
Message
From
15/06/2004 11:01:41
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Title:
Select an item in treeview list automatically
Miscellaneous
Thread ID:
00913889
Message ID:
00913889
Views:
76
I have two treeviews. The one on the left shows groups, then the name, then a policy number. The one on the right shows groups, then the name, then the matching policy number on the right. When the user clicks on a policy number on the left, I want to automatically select the matching item on the right:
*--Left treeview
-Policy Exceptions
  -Policy # Matches But Not Insurance Co
     -SMITH*RAYMOND
        -403329281       && policy number the user clicks on to process

*--Right treeview
-Policy Number Matches
     -SMITH*RAYMOND
        -403329281       && this item should be selected by default
Any ideas? Right now the right treeview is not even automatically expanded, but I can change that easily.

Tree1 nodeclick (left treeview):
*** ActiveX Control Event ***
LPARAMETERS NODE

* this loNode is being selected by the user

NODE.ensurevisible
THISFORM.tree1text = NODE.TEXT
THISFORM.tree1key  = NODE.KEY
PRIVATE lnpos, llonrecord
llonrecord = .F.
lnpos=0
IF LEN(THISFORM.tree1key)>= 7 .AND. UPPER(LEFT(THISFORM.tree1key,7))="IVANS_P"
	lnpos = INT(VAL(RIGHT(THISFORM.tree1key,LEN(THISFORM.tree1key)-AT(':',THISFORM.tree1key))))
	SELE IVANS_P
	IF RECCOUNT('IVANS_P') >= lnpos
		GOTO lnpos
		STORE IVANS_P.po_insco TO THISFORM.tinsco
		STORE IVANS_P.po_name TO THISFORM.tname
		STORE IVANS_P.po_pol TO THISFORM.tpolicy
		STORE IVANS_P.po_eff TO THISFORM.teffdate
		STORE lnpos TO THISFORM.trecno
		STORE IVANS_P.nreason TO THISFORM.treason
		IF !EOF('IVANS_i') .AND. IVANS_i.cguid = IVANS_P.cguid
			STORE IVANS_i.po_ssn TO THISFORM.tssn
		ELSE
			STORE '' TO THISFORM.tssn
		ENDIF
		llonrecord = .T.
	ELSE
		STORE 0 TO THISFORM.tinsco
		STORE '' TO THISFORM.tname
		STORE '' TO THISFORM.tssn
		STORE '' TO THISFORM.tpolicy
		STORE {} TO THISFORM.teffdate
		STORE 0 TO THISFORM.trecno
		STORE 0 TO THISFORM.treason
		llonrecord = .F.
	ENDIF
ELSE
	STORE 0 TO THISFORM.tinsco
	STORE '' TO THISFORM.tname
	STORE '' TO THISFORM.tssn
	STORE '' TO THISFORM.tpolicy
	STORE {} TO THISFORM.teffdate
	STORE 0 TO THISFORM.trecno
	STORE 0 TO THISFORM.treason
	llonrecord = .F.
	*	WAIT WINDOW "You selected "+thisform.tree1text+" whose key is: "+thisform.tree1key NOWAIT
ENDIF

IF llonrecord && current selected treeview item matches record pointer in table
	IF LEN(ALLTRIM(IVANS_i.po_ssn))=9
		mssn=LEFT(ALLTRIM(IVANS_i.po_ssn),3)+"-"+SUBSTR(ALLTRIM(IVANS_i.po_ssn),4,2)+"-"+RIGHT(ALLTRIM(IVANS_i.po_ssn),4)
	ELSE
		mssn=IVANS_i.po_ssn
	ENDIF
	THISFORM.labelssn.CAPTION=mssn
	THISFORM.labeladdr.CAPTION=IVANS_i.po_addr1
	THISFORM.labelcity.CAPTION=ALLTRIM(IVANS_i.po_city)+", "+IVANS_i.po_state+"  "+IVANS_i.po_zip
	THISFORM.labeltype.CAPTION=IVANS_P.po_type
	THISFORM.labeleff.CAPTION=DTOC(IVANS_P.po_eff)
	DO CASE
		CASE IVANS_P.po_status="REI"
			THISFORM.labelstatus.CAPTION="REI - Reinstated"
		CASE IVANS_P.po_status="REN"
			THISFORM.labelstatus.CAPTION="REN - Renewed"
		CASE IVANS_P.po_status="CXP"
			THISFORM.labelstatus.CAPTION="CXP - Cancelled"
		CASE IVANS_P.po_status="NB"
			THISFORM.labelstatus.CAPTION="NB - New Business"
		OTHERWISE
			THISFORM.labelstatus.CAPTION="??? - Policy Change"
	ENDCASE
	THISFORM.labelterm.CAPTION=ALLTRIM(STR(IVANS_P.po_term))
	THISFORM.labelprem.CAPTION="$"+LTRIM(TRANS(IVANS_P.po_prem,"9,999,999.99"))
	THISFORM.labelcarrier.caption=ALLTRIM(STR(IVANS_p.po_insco))
	THISFORM.labelcarrnam.caption=com_name(IVANS_p.po_insco)
	THISFORM.shapeinfo1.zorder(1)	
ELSE
	THISFORM.shapeinfo1.zorder(0)	
	THISFORM.shapeinfo2.zorder(0)	
ENDIF
THISFORM.FILLTREE2  && populate the right treeview with matching policy numbers or names
RETURN
form's filltree2 method:
(1st case statement CASE THISFORM.filldefault .AND. EMPTY(searchname) .AND. !THISFORM.viewall passes and then CASE IVANS_p.nreason = 4 passes)
PARAMETERS searchname, searchssn, searchpolicy

IF TYPE('searchname')="L"
	searchname = ''
ENDIF
IF TYPE('searchssn')="L"
	searchssn = ''
ENDIF
IF TYPE('searchpolicy')="L"
	searchpolicy = ''
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

PRIVATE onode, mstartkey, tnode, mparentkey, mchildkey
mparentkey=''
mchildkey=''
mtopkey=''

WAIT WINDOW "Locating matching insureds and policies..Please be patient." NOWAIT

WITH THIS.Tree2.nodes
	DO CASE
****->>>>This case statement runs
		CASE THISFORM.filldefault .AND. EMPTY(searchname) .AND. !THISFORM.viewall
			.clear
			IF TYPE('thisform.trecno')<>"N" .OR. THISFORM.trecno <= 0
				THISFORM.cmddefault.REFRESH()
				RETURN
			ENDIF
			SELE IVANS_p
			GOTO THISFORM.trecno
			DO CASE
				CASE IVANS_p.nreason = 1 	&& ssn match no name match
					SET ORDER TO TAG PO_SSN IN insured
					SET ORDER TO TAG sysnum IN policies
					IF LEN(ALLTRIM(IVANS_i.PO_SSN))=9
						mssn=LEFT(ALLTRIM(IVANS_i.PO_SSN),3)+"-"+SUBSTR(ALLTRIM(IVANS_i.PO_SSN),4,2)+"-"+RIGHT(ALLTRIM(IVANS_i.PO_SSN),4)
					ELSE
						mssn=IVANS_i.PO_SSN
					ENDIF
					tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Social '+mssn+' Matches')
					STORE 'MAIN_KEY_0000' TO mtopkey
					IF TYPE('tnode')="O"
						tnode.expanded = .T.
					ENDIF
					SELE insured
					SCAN FOR ALLTRIM(PO_SSN) = ALLTRIM(IVANS_i.PO_SSN)
						STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
						onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
						IF TYPE('onode')="O"
							onode.expanded = .T.
						ENDIF
						SELE policies
						SCAN FOR po_sysnum=insured.po_sysnum
							STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
							cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
							*!*						IF TYPE('cnode')="O"
							*!*							cnode.expanded = .T.
							*!*						ENDIF
						ENDSCAN
					ENDSCAN
					SELE IVANS_p
				CASE IVANS_p.nreason = 2		&& full name match no ssn match
					SET ORDER TO TAG NAME IN insured
					SET ORDER TO TAG sysnum IN policies
					tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Name '+ALLTRIM(IVANS_i.po_name)+' Matches')
					STORE 'MAIN_KEY_0000' TO mtopkey
					IF TYPE('tnode')="O"
						tnode.expanded = .T.
					ENDIF
					SELE insured
					SCAN FOR ALLTRIM(po_name) = ALLTRIM(IVANS_i.po_name)
						STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
						onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
						IF TYPE('onode')="O"
							onode.expanded = .T.
						ENDIF
						SELE policies
						SCAN FOR po_sysnum=insured.po_sysnum
							STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
							cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
							*!*						IF TYPE('cnode')="O"
							*!*							cnode.expanded = .T.
							*!*						ENDIF
						ENDSCAN
					ENDSCAN
					SELE IVANS_p
				CASE IVANS_p.nreason = 3		&& no name or ssn match
					*--Try to find a name that is close
					searchname=UPPER(LEFT(IVANS_i.po_name,AT("*",IVANS_i.po_name)-1))
					SET ORDER TO TAG NAME IN insured
					SET ORDER TO TAG sysnum IN policies
					tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Last Name Matches')
					STORE 'MAIN_KEY_0000' TO mtopkey
					IF TYPE('tnode')="O"
						tnode.expanded = .T.
					ENDIF
					SELE insured
					GO TOP
					xexact = SET("EXACT")
					SET EXACT OFF
					SET NEAR ON
					IF SEEK(UPPER(searchname),'INSURED')
						SCAN FOR UPPER(LEFT(insured.po_name,LEN(ALLTRIM(searchname))))=UPPER(ALLTRIM(searchname))
							STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
							onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
							IF INDEXSEEK(insured.po_sysnum,.T.,'POLICIES','SYSNUM')
								SELE policies
								SCAN WHILE po_sysnum=insured.po_sysnum .AND. !EOF('policies')
									STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
									cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
								ENDSCAN
							ENDIF
							SELE insured
						ENDSCAN
					ENDIF
					SET EXACT &xexact
					SET NEAR OFF
					searchname=''
					SELE IVANS_p
****->>>>This case statement runs
				CASE IVANS_p.nreason = 4		&& policy match but different insco or eff date
					SET ORDER TO TAG sysnum IN insured
					SET ORDER TO TAG POLNUM IN policies
					searchpolicy=ALLTRIM(IVANS_p.po_pol)
					tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Policy Number Matches')
					STORE 'MAIN_KEY_0000' TO mtopkey
					IF TYPE('tnode')="O"
						tnode.expanded = .T.
					ENDIF
					SELE policies
					GO TOP
					xexact = SET("EXACT")
					SET EXACT OFF
					PRIVATE ARRAY NAMEKEYS(1)
					DIMENSION NAMEKEYS(1)
					IF INDEXSEEK(ALLTRIM(searchpolicy),.T.,'POLICIES','POLNUM')
						i = 1
						lngnpos = 0
						IF TYPE('NAMEKEYS(i)')="U"
							DIMENSION NAMEKEYS(i)
						ENDIF
						IF TYPE('NAMEKEYS(i)')="L"
							NAMEKEYS(i) = ""
						ENDIF
						SCAN FOR ALLTRIM(po_pol)=ALLTRIM(searchpolicy)
							IF INDEXSEEK(policies.po_sysnum,.T.,'INSURED','SYSNUM')
								SELE insured
								STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
								SET EXACT ON
								lngnpos=ASCAN(NAMEKEYS,"I"+ALLTRIM(STR(RECNO('insured'))),-1)
								SET EXACT OFF
								IF lngnpos = 0
									IF TYPE('NAMEKEYS(i)')="U"
										DIMENSION NAMEKEYS(i)
									ENDIF
									IF TYPE('NAMEKEYS(i)')="L"
										NAMEKEYS(i) = ""
									ENDIF
									NAMEKEYS(i) = mparentkey
									onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
									i = i + 1
								ENDIF
								SELE policies
								STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
								cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
							ENDIF
							SELE policies
						ENDSCAN
					ENDIF
					SET EXACT &xexact
					SET NEAR OFF
					SELE IVANS_p
					searchpolicy=''
			ENDCASE
		CASE THISFORM.viewall = .T.
			.clear
			SET ORDER TO TAG NAME IN insured
			SET ORDER TO TAG sysnum IN policies
			THISFORM.viewall = .F.
			tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','All Insureds and Policies')
			STORE 'MAIN_KEY_0000' TO mtopkey
			IF TYPE('tnode')="O"
				tnode.expanded = .T.
			ENDIF
			SELE insured
			GO TOP
			SCAN
				STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
				onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
				IF INDEXSEEK(insured.po_sysnum,.T.,'POLICIES','SYSNUM')
					SELE policies
					SCAN WHILE po_sysnum=insured.po_sysnum .AND. !EOF('policies')
						STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
						cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
					ENDSCAN
				ENDIF
				SELE insured
			ENDSCAN
			SELE IVANS_p
		CASE !EMPTY(searchname)
			.clear
			WAIT WINDOW "Searching for Name: "+searchname NOWAIT
			SET ORDER TO TAG NAME IN insured
			SET ORDER TO TAG sysnum IN policies
			tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Last Name Matches')
			STORE 'MAIN_KEY_0000' TO mtopkey
			IF TYPE('tnode')="O"
				tnode.expanded = .T.
			ENDIF
			SELE insured
			GO TOP
			xexact = SET("EXACT")
			SET EXACT OFF
			SET NEAR ON
			IF SEEK(UPPER(searchname),'INSURED')
				SCAN FOR UPPER(LEFT(insured.po_name,LEN(ALLTRIM(searchname))))=UPPER(ALLTRIM(searchname))
					STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
					onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
					IF INDEXSEEK(insured.po_sysnum,.T.,'POLICIES','SYSNUM')
						SELE policies
						SCAN WHILE po_sysnum=insured.po_sysnum .AND. !EOF('policies')
							STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
							cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
						ENDSCAN
					ENDIF
					SELE insured
				ENDSCAN
			ENDIF
			SET EXACT &xexact
			SET NEAR OFF
			SELE IVANS_p
			THISFORM.searchname=''
			searchname=''
		CASE !EMPTY(searchssn)
			.clear
			WAIT WINDOW "Searching for SSN: "+searchssn NOWAIT
			SET ORDER TO TAG PO_SSN IN insured
			SET ORDER TO TAG sysnum IN policies
			tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Social Security Matches')
			STORE 'MAIN_KEY_0000' TO mtopkey
			IF TYPE('tnode')="O"
				tnode.expanded = .T.
			ENDIF
			SELE insured
			GO TOP
			xexact = SET("EXACT")
			SET EXACT OFF
			SET NEAR ON
			IF SEEK(ALLTRIM(searchssn),'INSURED')
				SCAN FOR ALLTRIM(PO_SSN)=ALLTRIM(searchssn)
					STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
					onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
					IF INDEXSEEK(insured.po_sysnum,.T.,'POLICIES','SYSNUM')
						SELE policies
						SCAN WHILE po_sysnum=insured.po_sysnum .AND. !EOF('policies')
							STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
							cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
						ENDSCAN
					ENDIF
					SELE insured
				ENDSCAN
			ENDIF
			SET EXACT &xexact
			SET NEAR OFF
			SELE IVANS_p
			THISFORM.searchssn=''
			searchssn=''
		CASE !EMPTY(searchpolicy)
			.clear
			WAIT WINDOW "Searching for Policy: "+searchpolicy NOWAIT
			SET ORDER TO TAG sysnum IN insured
			SET ORDER TO TAG polnum IN Policies
			tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Policy Number Matches')
			STORE 'MAIN_KEY_0000' TO mtopkey
			IF TYPE('tnode')="O"
				tnode.expanded = .T.
			ENDIF
			SELE policies
			xexact = SET("EXACT")
			SET EXACT OFF
			PRIVATE ARRAY NAMEKEYS(1)
			DIMENSION NAMEKEYS(1)
			IF INDEXSEEK(ALLTRIM(searchpolicy),.T.,'POLICIES','POLNUM')
				i = 1
				lngnpos = 0
				IF TYPE('NAMEKEYS(i)')="U"
					DIMENSION NAMEKEYS(i)
				ENDIF
				IF TYPE('NAMEKEYS(i)')="L"
					NAMEKEYS(i) = ""
				ENDIF
				SCAN FOR LEFT(po_pol,LEN(ALLTRIM(searchpolicy)))=ALLTRIM(searchpolicy)
					mrecno=RECNO('policies')
					IF INDEXSEEK(policies.po_sysnum,.T.,'INSURED','SYSNUM')
						SELE insured
						STORE "I"+ALLTRIM(STR(RECNO('insured'))) TO mparentkey		&& recno in insured table
						SET EXACT ON
						lngnpos=ASCAN(NAMEKEYS,"I"+ALLTRIM(STR(RECNO('insured'))),-1)
						SET EXACT OFF
						IF lngnpos = 0
							IF TYPE('NAMEKEYS(i)')="U"
								DIMENSION NAMEKEYS(i)
							ENDIF
							IF TYPE('NAMEKEYS(i)')="L"
								NAMEKEYS(i) = ""
							ENDIF
							NAMEKEYS(i) = mparentkey
							onode=.ADD('MAIN_KEY_0000',tvwChild,mparentkey, ALLTRIM(insured.po_name))
							i = i + 1
						ENDIF
						SELE policies
						STORE "P"+ALLTRIM(STR(RECNO('policies')))+mparentkey TO mchildkey	&& recno in policies table
						cnode=.ADD(mparentkey,tvwChild,mchildkey,ALLTRIM(policies.po_pol))
						SELE policies
						IF RECNO('policies')<>mrecno
							GOTO mrecno
						ENDIF
					ELSE
						SELE policies
						IF RECNO('policies')<>mrecno
							GOTO mrecno
						ENDIF
					ENDIF
				ENDSCAN
			ENDIF
			SET EXACT &xexact
			SET NEAR OFF
			SELE IVANS_p
			THISFORM.searchpolicy=''
			searchpolicy=''
		OTHERWISE
			.clear
			tnode=.ADD(,tvwFirst,'MAIN_KEY_0000','Possible Policy Matches')
			STORE 'MAIN_KEY_0000' TO mtopkey
			IF TYPE('tnode')="O"
				tnode.expanded = .T.
			ENDIF
	ENDCASE
	IF TYPE('tnode')="O" .AND. TYPE('mtopkey')="C" .AND. !EMPTY(mtopkey)
		THIS.Tree2.nodes(mtopkey).SELECTED=.T.
		THIS.Tree2.nodeclick(tnode)
	ELSE
		THISFORM.shapeinfo2.zorder(0)	
	ENDIF
ENDWITH
THISFORM.cmddefault.REFRESH()
WAIT WINDOW "Finished!" NOWAIT
RETURN

RETURN
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Next
Reply
Map
View

Click here to load this message in the networking platform