Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Listboxes becomes invisible
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Listboxes becomes invisible
Versions des environnements
Visual FoxPro:
VFP 8 SP1
OS:
Windows 2000 SP4
Database:
Visual FoxPro
Divers
Thread ID:
01036358
Message ID:
01036358
Vues:
63
When a user clicks on another tab in a form, a prompt pops up from the current tab's Deactivate event. Whenever the user chooses 'cancel' on the prompt "Do you want to change to another tab before saving?", the process goes to the Activate event of the another tab just clicked, sets the focus on the tab the user doesn't want to leave, and call that tabs activate event, all list boxes in the current tab that the user doesn't want to leave becomes invisible.

Here's the code from teh DeActivate event of the current tab:
*** BEGIN: Deactivate ***
store rgb(192,192,128) to this.backcolor
IF !TYPE("glSaveOk")="N"
	IF !glSaveOk 
		IF MESSAGEBOX("Do you want to change to another tab before saving?",1,_screen.Caption+" Alert")=2
			glSaveOk = this.PageOrder
		ELSE 
			glSaveOk = .T.
		ENDIF
		glCancelSave = glSaveOk
	ENDIF 
ENDIF
*** END: Deactivate
HEre's the code from the Activate event of the current tab:
***BEGIN: Activate ***
*** NOTE: 1. IF User cancel's on the deactivation of this page, no refesh of the controls is necessary to retain their last entered value ***
***       2. Only Re-Activate the screen or Refresh the Controls when User saves the changes on previous screen AND SpellChecker is not ran

IF TYPE("glSaveOk")="N"
	IF m.glF2Pressed = .F.	&& IF SpellCheker was not ran
		STORE glSaveOk TO lnTabCount
		DO CASE 
			CASE lnTabCount = 1
				glSaveOk = .T.
				thisform.pgfParticipant.pagIdentification.SetFocus 
				thisform.pgfParticipant.pagIdentification.Activate 
			CASE lnTabCount = 2
				glSaveOk = .T.
				thisform.pgfParticipant.pagContacts.SetFocus 
				thisform.pgfParticipant.pagContacts.Activate 
			CASE lnTabCount = 3
				glSaveOk = .T.
				thisform.pgfParticipant.pagDemographics.SetFocus 
				thisform.pgfParticipant.pagdemographics.Activate 
			CASE lnTabCount >= 4000
				thisform.pgfParticipant.pagAssessment.SetFocus 
				IF lnTabCount = 4000
					thisform.pgfParticipant.pagAssessment.Activate 
				ELSE 
					store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.backcolor
				ENDIF 
				DO CASE 
					CASE lnTabCount = 4100
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFunctional.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFunctional.Activate 
					CASE lnTabCount = 4200
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagNutritional.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagNutritional.Activate 
					CASE lnTabCount = 4300
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagHealth.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagHealth.Activate 
					CASE lnTabCount >= 4400 AND lnTabCount < 4500
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.SetFocus 
						IF lnTabCount = 4400
							thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.Activate 
						ELSE 
							store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.backcolor
						ENDIF 
						DO CASE 
							CASE lnTabCount >= 4410 AND lnTabCount < 4420
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.SetFocus 
								IF lnTabCount = 4410
									thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.Activate 
								ELSE 
									store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.BackColor 
								ENDIF 
								DO CASE 
									CASE lnTabCount = 4411
										glSaveOk = .T.
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagAnnual.SetFocus 
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagAnnual.Activate 
									CASE lnTabCount = 4412
										glSaveOk = .T.
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagMonthly.SetFocus 
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagMonthly.Activate 
								ENDCASE 
							CASE lnTabCount = 4420
								glSaveOk = .T.
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagBenefit.SetFocus 
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagBenefit.Activate 
						ENDCASE 
					CASE lnTabCount = 4500
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagEnvironment.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagEnvironment.Activate 
				ENDCASE 
			CASE lnTabCount = 5
				glSaveOk = .T.
				thisform.pgfParticipant.pagEnrollment.SetFocus 
				thisform.pgfParticipant.pagenrollment.Activate 
			CASE lnTabCount = 6
				glSaveOk = .T.
				thisform.pgfParticipant.pagProgressNotes.SetFocus 
				thisform.pgfParticipant.pagprogressNotes.Activate 
		ENDCASE 
	ELSE
		m.glF2Pressed = .F.
	ENDIF		
ELSE 
	IF m.glF2Pressed = .F.	&& IF SpellCheker was not ran
		glReadOnly=settings.readonly
		store rgb(255,255,192) to this.backcolor
		IF TYPE("glCancelSave") = "N"
			glCancelSave = .T.	&& To make sure that control's retain their entered values when user cancels on the Save entries before changing to another tab	
			glSaveOk = .F.	&& To make sure that each succeeding Change of Screen, the user will be prompted to save changes if their are entry in any of the control
		ELSE 
			this.refresh
		ENDIF 
	ELSE
		m.glF2Pressed = .F.
	ENDIF		
ENDIF
*** END: Activate ***
--------------------------------------------
Here's the code in the Activate of another Tab, that the user click's on, it's the same as the activate of the current tab:
*** BEGIN: Activate of other tab ***
*** NOTE: 1. IF User cancel's on the deactivation of this page, no refesh of the controls is necessary to retain their last entered value ***
***       2. Only Re-Activate the screen or Refresh the Controls when User saves the changes on previous screen AND SpellChecker is not ran

IF TYPE("glSaveOk")="N"
	IF m.glF2Pressed = .F.	&& IF SpellCheker was not ran
		STORE glSaveOk TO lnTabCount
		DO CASE 
			CASE lnTabCount = 1
				glSaveOk = .T.
				thisform.pgfParticipant.pagIdentification.SetFocus 
				thisform.pgfParticipant.pagIdentification.Activate 
			CASE lnTabCount = 2
				glSaveOk = .T.
				thisform.pgfParticipant.pagContacts.SetFocus 
				thisform.pgfParticipant.pagContacts.Activate 
			CASE lnTabCount = 3
				glSaveOk = .T.
				thisform.pgfParticipant.pagDemographics.SetFocus 
				thisform.pgfParticipant.pagdemographics.Activate 
			CASE lnTabCount >= 4000
				thisform.pgfParticipant.pagAssessment.SetFocus 
				IF lnTabCount = 4000
					thisform.pgfParticipant.pagAssessment.Activate 
				ELSE 
					store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.backcolor
				ENDIF 
				DO CASE 
					CASE lnTabCount = 4100
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFunctional.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFunctional.Activate 
					CASE lnTabCount = 4200
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagNutritional.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagNutritional.Activate 
					CASE lnTabCount = 4300
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagHealth.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagHealth.Activate 
					CASE lnTabCount >= 4400 AND lnTabCount < 4500
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.SetFocus 
						IF lnTabCount = 4400
							thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.Activate 
						ELSE 
							store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.backcolor
						ENDIF 
						DO CASE 
							CASE lnTabCount >= 4410 AND lnTabCount < 4420
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.SetFocus 
								IF lnTabCount = 4410
									thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.Activate 
								ELSE 
									store rgb(255,255,192) to thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.BackColor 
								ENDIF 
								DO CASE 
									CASE lnTabCount = 4411
										glSaveOk = .T.
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagAnnual.SetFocus 
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagAnnual.Activate 
									CASE lnTabCount = 4412
										glSaveOk = .T.
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagMonthly.SetFocus 
										thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagIncome.pagIncome.pagMonthly.Activate 
								ENDCASE 
							CASE lnTabCount = 4420
								glSaveOk = .T.
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagBenefit.SetFocus 
								thisform.pgfParticipant.pagAssessment.pagAssessment.pagFinancial.pagFinancial.pagBenefit.Activate 
						ENDCASE 
					CASE lnTabCount = 4500
						glSaveOk = .T.
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagEnvironment.SetFocus 
						thisform.pgfParticipant.pagAssessment.pagAssessment.pagEnvironment.Activate 
				ENDCASE 
			CASE lnTabCount = 5
				glSaveOk = .T.
				thisform.pgfParticipant.pagEnrollment.SetFocus 
				thisform.pgfParticipant.pagenrollment.Activate 
			CASE lnTabCount = 6
				glSaveOk = .T.
				thisform.pgfParticipant.pagProgressNotes.SetFocus 
				thisform.pgfParticipant.pagprogressNotes.Activate 
		ENDCASE 
	ELSE	&& If SpellChecker was run, reset to not ran yet
		m.glF2Pressed = .F.
	ENDIF		
ELSE 
	IF m.glF2Pressed = .F.	&& IF SpellCheker was not ran
		glReadOnly=settings.readonly
		store rgb(255,255,192) to this.backcolor
		IF TYPE("glCancelSave") = "N"
			glCancelSave = .T.	&& To make sure that control's retain their entered values when user cancels on the Save entries before changing to another tab	
			glSaveOk = .F.	&& To make sure that each succeeding Change of Screen, the user will be prompted to save changes if their are entry in any of the control
		ELSE 
			this.refresh
		ENDIF 
	ELSE	&& If SpellChecker was run, reset to not ran yet
		m.glF2Pressed = .F.
	ENDIF		
ENDIF
*** END: Activate of other tab ***
Rolando E. Sanchez Jr.
Software Developer
RTZ ASSOCIATES
150 Grand Ave., Suite 201
Oakland, CA 94612
Tel. #: (510) 986-6700
E-mail: rolando@getcare.com
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform