Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Refresh not refreshing
Message
General information
Forum:
Visual FoxPro
Category:
Forms & Form designer
Miscellaneous
Thread ID:
00510014
Message ID:
00510370
Views:
23
Stephen,

My advise to you would be re-think your logic. Are you sure, you want to put all this complicated logic in Refresh method of the form? It seems to be not efficient. It's much better, in my opinion, to put such logic in Form's custom method and call it only when it's needed. I didn't try to analyze the code, though bunch of unefficiencies caught my yes immediatelly. For instance, you don't have to run replace statement multiple times if you can do one replace command. It should be quickier, though the difference might be unnoticable.

Anyway, look though the code carefully, make adjustments, when see, if you can reproduce the problem.

Finally, checkboxes have some funny behavior too. Check quite recent posts from Barbara Paltiel about this problem...

>No done that didn't help a bit
>
>>>ok I can't repreduse the error when I take the navigation buttons out of the form following is the add button code, the refresh code and the navigation code
>>>
>>>and yes I know this is gonna look like kiddie code, but it works
>>>if you want more code to try and help me just say
>>>
>>>**********************************
>>>add button, click event
>>>
>>>THISFORM.ADDMODE = .T.
>>>THISFORM.ID_ARRAY (create a array of unique usernames, to prevent duplicates)
>>>WITH THISFORM
>>>	.ADDMODE = .T.
>>>	.editmode = .T.
>>>	.setcaption() (set "save" and "cancel" command buttons)
>>>	.setenable() (set the enabled and disabled state for objects)
>>>>   APPEND BLANK
>>>   .REFRESH
>>
>>>REPLACE START.administrator WITH .F. , ;
>>>        START.Purchase_gen WITH .F., ;
>>         START.Purchase_rec WITH .F., ;
>>>        START.Purchase_mod WITH .F., ;
>>>        START.Receipt_mod WITH .F., ;
>>>        START.Vendor WITH .F., ;
>>>        START.administrator WITH .F., ;
>>>        START.Invoice_gen WITH .F., ;
>>>        START.Invoice_mod WITH .F.
>>>        START.Inventory_add WITH .F., ;
>>>        START.Inventory_del WITH .F., ;
>>>        START.Inventory_pic WITH .F., ;
>>>        START.Adjustments WITH .F., ;
>>>        START.Back_comp WITH .F., ;
>>>        START.Back_mod WITH .F., ;
>>>        START.Return_modi WITH .F., ;
>>>        START.Customer WITH .F.
>>>.cmb_Group.VALUE = la_group[1,1]
>>>lc_enctypt = ''
>>>.txtf_name.SETFOCUS() (no code)
>>>.REFRESH()
>>>*_SCREEN.WINDOWSTATE = 1 (this will make the form look fine)
>>>*_SCREEN.WINDOWSTATE = 0 (this will make the form look fine)
>>>ENDWITH
>>
>>>**********************************
>>>thisform.refresh code
>>>with thisform
>>>.LOCKSCREEN = .T.
>>>IF .addmode <> .T.
>>> lc_enctypt = loTools.decrypt(START.user_id)
>>>ENDIF
>>>IF .editmode = .F. AND .addmode = .F.
>> with .navclass1
>>> .cmdtop.ENABLED =.T.
>>> .cmdnext.ENABLED =.T.
>>> .cmdprior.ENABLED =.T.
>>> .cmdbottom.ENABLED =.T.
>>> .ENABLED = .T.
>>> .ENABLED = .T.
>>> .ENABLED = .T.
>>> .cmdsearch.ENABLED = .T.
>>> .cmdadd.ENABLED = .T.
>>> .cmd_pic.ENABLED = .T.
>>> endwith
>>> IF DELETE()
>>> .lbl_delete.CAPTION = 'User deleted'
>>> .CMDDELETEREVERT.CAPTION = 'Recall'
>>> .CMDDELETEREVERT.TOOLTIPTEXT = 'Recall user.'
>>> .CMDEDITSAVE.ENABLED = .F.
>>> ELSE
>>> .lbl_delete.CAPTION = 'Active user'
>>> .CMDDELETEREVERT.CAPTION = 'Delete'
>>> .CMDDELETEREVERT.TOOLTIPTEXT = 'Delete user.'
>>> .CMDEDITSAVE.ENABLED = .T.
>>> ENDIF
>>>
>>> IF START.Purchase_gen = .T.
>>> .chkPurchase_gen.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkPurchase_gen.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Purchase_rec = .T.
>>> .chkPurchase_rec.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkPurchase_rec.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Purchase_mod = .T.
>>> .chkPurchase_mod.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkPurchase_mod.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Receipt_mod = .T.
>>> .chkReceipt_mod.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkReceipt_mod.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Vendor = .T.
>>> .chkVendor.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkVendor.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Vendorad = .T.
>>> .chk_Venad.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chk_Venad.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Administrator = .T.
>>> .chkAdministrator.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkAdministrator.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Invoice_gen = .T.
>>> .chkInvoice_gen.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkInvoice_gen.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Invoice_mod = .T.
>>> .chkInvoice_mod.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkInvoice_mod.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Inventory_add = .T.
>>> .chkInventory_add.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> .chkInventory_add.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>> .... and so on
>>> IF START.Inventory_del = .T.
>>> .chkInventory_del.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkInventory_del.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Inventory_pic = .T.
>>> THISFORM.chkInventory_pic.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkInventory_pic.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Adjustments = .T.
>>> THISFORM.chkAdjustments.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkAdjustments.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Back_comp = .T.
>>> THISFORM.chkBack_comp.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkBack_comp.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Back_mod = .T.
>>> THISFORM.chkBack_mod.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkBack_mod.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Return_modi = .T.
>>> THISFORM.chkReturn_modi.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkReturn_modi.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>> IF START.Customer = .T.
>>> THISFORM.chkCustomer.DISABLEDFORECOLOR = RGB(128,0,0)
>>> ELSE
>>> THISFORM.chkCustomer.DISABLEDFORECOLOR = RGB(128,128,128)
>>> ENDIF
>>>
>>>ELSE
>>> .cmdreset.ENABLED = .F.
>>> .navclass1.cmdtop.ENABLED =.F.
>>> .navclass1.cmdnext.ENABLED =.F.
>>> .navclass1.cmdprior.ENABLED =.F.
>>> .navclass1.cmdbottom.ENABLED =.F.
>>> .navclass1.ENABLED = .F.
>>> .cmd_exit.ENABLED = .F.
>>> .cmdsearch.ENABLED = .F.
>>> .cmdadd.ENABLED = .F.
>>> .cmd_pic.ENABLED = .F.
>>> IF START.Purchase_gen = .T.
>>> THISFORM.chkPurchase_gen.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkPurchase_gen.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Purchase_rec = .T.
>>> THISFORM.chkPurchase_rec.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkPurchase_rec.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Purchase_mod = .T.
>>> THISFORM.chkPurchase_mod.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkPurchase_mod.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Receipt_mod = .T.
>>> THISFORM.chkReceipt_mod.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkReceipt_mod.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Vendor = .T.
>>> THISFORM.chkVendor.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkVendor.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Vendorad = .T.
>>> THISFORM.chk_Venad.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chk_Venad.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Administrator = .T.
>>> THISFORM.chkAdministrator.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkAdministrator.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Invoice_gen = .T.
>>> THISFORM.chkInvoice_gen.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkInvoice_gen.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Invoice_mod = .T.
>>> THISFORM.chkInvoice_mod.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkInvoice_mod.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Inventory_add = .T.
>>> THISFORM.chkInventory_add.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkInventory_add.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Inventory_del = .T.
>>> THISFORM.chkInventory_del.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkInventory_del.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Inventory_pic = .T.
>>> THISFORM.chkInventory_pic.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkInventory_pic.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Adjustments = .T.
>>> THISFORM.chkAdjustments.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkAdjustments.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Back_comp = .T.
>>> THISFORM.chkBack_comp.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkBack_comp.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Back_mod = .T.
>>> THISFORM.chkBack_mod.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkBack_mod.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Return_modi = .T.
>>> THISFORM.chkReturn_modi.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkReturn_modi.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>
>>> IF START.Customer = .T.
>>> THISFORM.chkCustomer.FORECOLOR = RGB(255,0,0)
>>> ELSE
>>> THISFORM.chkCustomer.FORECOLOR = RGB(0,0,0)
>>> ENDIF
>>>ENDIF
>>>
>>>WITH THISFORM
>>> .cmd_invoice.ENABLED = .editmode
>>> .cmd_inventory.ENABLED = .editmode
>>> .cmd_purchase.ENABLED = .editmode
>>> .cmd_back_order.ENABLED = .editmode
>>> .chkLogged_in.ENABLED = .F.
>>>ENDWITH
>>>IF START.logged_in = .T.
>>> THISFORM.chkLogged_in.CAPTION = 'Logged in'
>>>ELSE
>>> THISFORM.chkLogged_in.CAPTION = 'Logged out'
>>>ENDIF
>>>_SCREEN.MOUSEPOINTER=0
>>>_SCREEN.LOCKSCREEN = .F.
>>endwith
>>
>>
>>>**********************************
>>>nav button code from container class
>>>
>>>?? CHR(7)  && ring the bell
>>>WITH THISFORM
>>>	.NAVCLASS1.CMDTOP.ENABLED = .T.
>>>	.NAVCLASS1.CMDPRIOR.ENABLED = .t.
>>>
>>>IF NOT EOF()
>>>	SKIP
>>>ENDIF
>>>		
>>>IF EOF()
>>>	GO BOTTOM
>>>	WAIT "Bottom of the table" window nowait
>>>		.NAVCLASS1.cmdbottom.enabled = .f.
>>>		.NAVCLASS1.cmdnext.enabled = .f.
>>>	>else
>>>		.NAVCLASS1.cmdbottom.enabled = .t.
>>>		.NAVCLASS1.cmdnext.enabled = .t.
>>>	
>>>ENDIF		
>>.Refresh
>>endwith	
>>>
>>
>>Hi Stephen,
>>
>>I made couple of modifications to increase readability. First of all, use PRE tags to show code properly in UT.
>>
>>Secondly, you can use with endwith construction once at the top through bottom, no need to do it multiple times...
>>
>>Finally, you better to overhead the Refresh with all this code. See, if it could be a custom form method, which you can call instead of Refresh. Check Documents section here "Do and don'ts, you'll see this as one of John Koziol's advice: not put lots of code in form refresh).
>>
>>HTH
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform