Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Releasing forms
Message
De
19/10/2001 00:18:41
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Titre:
Divers
Thread ID:
00570083
Message ID:
00570626
Vues:
24
>I have a form. From it a user can click a button and a new form appears (I now have 2 forms showing). If the user hits cancel, the 2nd form goes away and they are at the original form. No problem. BUT, if the user selects a particular option, I want the first 2 screens to go away and call a 3rd screen. The part I can't get to work is for the first 2 screens to go away. I have tried every syntax and command I can think of, yet they are still there. These are modal forms. Hope that wasn't too confusing, any help appreciated.
>Thanks,
>Kevin

Kevin,

I will present the other option (to apply if this is the case). On the presumption you do not want the other form objects destroyed, and that none of the forms called are of formretval classes, I would use some application.properties... try this....

Create application.form1 (L) and application.form2 (L) properties. .T. means the form exists.

Create application.setnomode method

application.setnomode()
IF (application.form1 .OR. application.form2)
lnObjects = AMEMBERS(laObjects, _SCREEN, 2)
FOR lnCount = 1 TO lnObjects
loObject = EVALUATE('THIS.' + laObjects[lnCount])
** We only want form objects
IF UPPER(loObject.BaseClass) = 'FORM'
** Is this either form1 or form2
IF INLIST(UPPER(ALLTRIM(loObject.Name)),'FORM1','FORM2')
loObject.WindowType = 0
ENDIF
ENDFOR
ENDIF

Create application.hidemode method

application.hidemode()
IF (application.form1 .OR. application.form2)
lnObjects = AMEMBERS(laObjects, _SCREEN, 2)
FOR lnCount = 1 TO lnObjects
loObject = EVALUATE('THIS.' + laObjects[lnCount])
** We only want form objects
IF UPPER(loObject.BaseClass) = 'FORM'
** Is this either form1 or form2
IF INLIST(UPPER(ALLTRIM(loObject.Name)),'FORM1','FORM2')
loObject.Hide
ENDIF
ENDFOR
ENDIF

Create application.resetmode method

application.resetmode()
IF (application.form1 .OR. application.form2)
lnObjects = AMEMBERS(laObjects, _SCREEN, 2)
FOR lnCount = 1 TO lnObjects
loObject = EVALUATE('THIS.' + laObjects[lnCount])
** We only want form objects
IF UPPER(loObject.BaseClass) = 'FORM'
** Is this either form1 or form2
IF INLIST(UPPER(ALLTRIM(loObject.Name)),'FORM1','FORM2')
loObject.WindowType = 1
loObject.Show
ENDIF
ENDFOR
ENDIF

OKAY... now run your forms.....


do form form1
In the form1.init of the form (after validation coding, etc...)
application.form1 = .T.

do form form2
In the form2.init of the form (after validation coding, etc...)
application.form2 = .T.
2
You now have your two forms. Now in the .click method of the 'option' you will use to call the third form up.....

callform3.click

IF (application.form1 .OR. application.form2)
application.setnomode()
ENDIF
do form form3

In the form3.init of the form (after validation coding, etc...)
IF (application.form1 .OR. application.form2)
application.hidemode()
ENDIF

In the form3.destroy.t of the form (after validation coding, etc...)
IF (application.form1 .OR. application.form2)
application.resetmode()
ENDIF

I don't have my VFP machine... you may have to move the .show call from the .resetmode... but all in all this should keep the forms well away from view while you work in that third screen.

HTH

Ric

IF application.form1
lnObjects = AMEMBERS(laObjects, _SCREEN, 2)
FOR lnCount = 1 TO lnObjects
loObject = EVALUATE('THIS.' + laObjects[lnCount])
IF UPPER(loObject.BaseClass) = 'FORM'
** Is this either form1 or form2
IF INLIST(UPPER(ALLTRIM(loObject.Name)),'FORM1','FORM2')
loObject.WindowType = 0
loObject.Hide
ENDIF
ENDFOR
ENDIF
RELEASE loObject, lnObjects


form1.release
form2.release

release form1, form2
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform