Careful, though, Object.Lock inhibits all events associated with a control, including events from internal controls. For example, DirView has an internal TreeView control. When you click on a folder or set the Current property in code, DirView tells the TreeView to expand that branch. TreeView then raises the Expand event, requesting that DirView fill in the sub-folders of that branch. After that is done, DirView raises its click event.

I wanted the click event to only occur when the user clicks on a folder so I surrounded the code setting DirView.Current with object.lock/unlock. All of a sudden, DirView stopped updating properly. This seemed to occur only during the initialization of DirView. It took me 2 days to figure out that the object.lock stopped the TreeView Expand event so DirView did not update. Another control was setting the DirView Current property during its initialization, not any of my own code, which made debugging even harder.

I wound up replacing the object.lock with a boolean flag. When set, the flag stops the Click event code from running.


On 2017-08-13 06:18 PM, Tobias Boege wrote:
On Mon, 14 Aug 2017, adamn...@gmail.com wrote:
(A quicky!)

Wasn't there a way to temporarily stop a control raising events, MyControl.Lock 
or somesuch? My memory fails!
tia
bruce
Object.Lock(x)




------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to