Notifications
Clear all

[Closed] How to destroy a rollout in a dockable window

Dear forum:

I created one rollout and add it to a dialog. Then I registered the dialog and make it docked to left. That is good. But I fount out that I can not run my script twice. Because it can not destroy the existing rollout, it shows the rollout twice there. I did add codes to destroy it but it must be failed. Here are my codes:

try(cui.UnRegisterDialogBar my_toolbar) catch()
DestroyDialog my_toolbar
removeRollout my_toolbar
createDialog my_toolbar 30 120
cui.RegisterDialogBar my_toolbar
cui.DockDialogBar my_toolbar #cui_dock_left

Here, my_toolbar is a rollout.
Please help me!
Thanks a lot!

2 Replies
1 Reply
(@bobo)
Joined: 11 months ago

Posts: 0

The destruction code MUST be before any re-definition of the dialog’s rollout. Otherwise, a NEW instance of the rollout will be created in memory and the destruction code will not be able to “see” the old rollout.


 (
 global my_toolbar --declare as global to be able to access it later
 try(cui.UnRegisterDialogBar my_toolbar) catch() --try to undock
 try(DestroyDialog my_toolbar)catch() --try to destroy
 
 rollout my_toolbar "Toolbar" --now define the rollout
 (
 label lbl_01 "Testing"
 )
 --if the destruction code were here, it would "see" the new rollout and not the docked one
 createDialog my_toolbar 30 120 --and create the dialog
 cui.RegisterDialogBar my_toolbar --register as dialog bar
 cui.DockDialogBar my_toolbar #cui_dock_left --and dock left
 )

In fact, my codes define the rollout before destroy it. It goes like:

  • rollout My_toolbar (…)
  • define my ShowToolbar function, which contains codes:
    a. unregister and destroy my_toolbar
    b. creat new and register
    But it does not work. After adding codes ‘global my_toolbar’ at the beginning of ShowToolbar function, it works.
    Thanks a lot!