I have a project with several buttons and dialogs. Most of the dialogs are opened using the Open Dialog action of the Input configuration of the buttons. Some dialogs are openend using the FbOpenDialogExtended FB of the Visu Utils library and the FbOpenDialogExtended FB is called in the Execute ST-Code action.
I am also using the FileOpenSave dialog from Visu Dialogs which requires an OnDialogClosed action to read out. I realized that the OnDialogClosed action which is meant for the FileOpenSave dialog also triggers if a dialog is closed, which was previously openend using the FbOpenDialogExtended FB. Is there a way to detect which dialog was closed last and specify to which dialogs the OnDialogClosed action reacts?
What maybe helps is the Visu Dialog ST demo project:
This has an application IECOpenDialog where dialogs are opened using the VU.FbOpenDialogExtended function blocks.
The fbOpenConfigurationDialog call has a reference (interface) to the "close listener" FB of which it's method is automatically called when the dialog is closed. This way you can create specific function blocks for each dialog when it is closed and do what you want with the data that might have been changed.
You could work around this problem by implementing some sort of "state machine". Each dialog sets a boolean variable when they are closed so you know which dialog was closed. Then you can react to this accordingly.
Thanks for your responses. The close listener sounds like an interesting approach, will have to see what I can do with it. I actually solved it as suggested by sturmghost by setting an enum variable to a certain state as soon as I open a dialog. This way I always know which dialog was opened last.
Log in to post a comment.