Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
'refresh' question
Message
De
04/12/1997 18:15:19
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Divers
Thread ID:
00063559
Message ID:
00063887
Vues:
62
>>>>>I have a form on which I want certain controls to be visible when the value of a checkbox is false.
>>>>>
>>>>>In the refresh method, I have the following code:
>>>>>
>>>>>*refresh
>>>>>
>>>>>if thisform.chkactive.value = .f.
>>>>> thisform.txtin_date.visible = .t.
>>>>> thisform.txtin_date.enabled = .f.
>>>>> thisform.lblin_date.visible = .t.
>>>>>else
>>>>> thisform.txtin_date.visible = .f.
>>>>> thisform.lblin_date.visible = .f.
>>>>>endif
>>>>>
>>>>>In the CmdNext button, I have the following code:
>>>>>
>>>>>IF NOT EOF()
>>>>> Skip
>>>>> thisform.refresh()
>>>>>ENDIF
>>>>>
>>>>>IF EOF()
>>>>> =MESSAGEBOX("This is the last " + THISFORM.recordtype, MSGOKONLY + MSGEXCLAMATION, C_APPNAME)
>>>>> GOTO BOTTOM
>>>>> thisform.Refresh()
>>>>>ENDIF
>>>>>
>>>>>When I move throught the records, the controls become visible one record late. For example, when I get to a record that has a .F. value in the checkbox control, the controls referred to in the refresh method are still not visible. They become visible when I move to the next record. I'm not sure what I'm doing wrong here.
>>>>>
>>>>>AL
>>>>
>>>>Instead of checking the value of the checkbox, try checking the value of its controlsource in your 'if' statement. Checkboxes are really quirky like this, their values often don't get updated automatically. I am confident that not relying on the value of the checkbox will solve your problem.
>>>
>>>Erik, you're right, but it's not just checkboxes. The same thing will happen with textboxes, etc. The reason is in the order of the procedures when you refresh. VFP seems to process the form.refresh code and then each of the controls. I've tried putting dodefault() code in various places, but nothing seems to help.
>>>
>>>(Also, Allen got his answer a second BEFORE you posted it. Clairvoyance?) :-)
>>>
>>>Barbara
>>
>>Also, in such things like Thisform.Refresh() the order of placing controls on the form is important.
>>When you rely on Control1.Value in Control2.Refresh() there is a chance that Control1 was not refreshed yet, so it still keeps the value from previous record.
>>
>>Nick
>
>
>My suggestion is then to
>IF NOT EOF()
> Skip
> thisform.refresh()
> thisform.CtrlRefresh() && add this method which
> * contains the code in your refresh method now.
>ENDIF

You may want to check for EOF() once again between SKIP and REFRESH().

Vlad
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform