I want to detekt if OK or some other button was hit to close a modal dialog.
Printable View
I want to detekt if OK or some other button was hit to close a modal dialog.
If this Modal Dialog is one of your own Forms, then When the Buttons Are Clicked, Store a Value in the Forms Tag Property to indicate which button was pressed, then Hide the Form instead of Unloading it. This will return you to your Calling Forms Code and you can retrieve the Button Value from the Hidden Forms Tag Property, then Unload it, ie.
private Sub Command1_Click()
Form2.Show vbModal
If Form2.Tag = 1 then
MsgBox "You Pressed Close"
End If
Unload Form2
End Sub
In Form2..
private Sub cmdClose_Click()
Tag = 1
Hide
End Sub
If you were refering to a Messagebox, compare the return value to the VB Constants, ie.
vbYes, vbNo, etc..
Aaron Young
Analyst Programmer
[email protected]
[email protected]
I treat everything (well, nearly everything) as a class module in VB (at least, since v4).
A form can have public / friend / private properties and methods just like a class module, which makes it ideal for this kind of work.
Supposing you had a form (frmMyForm) with just two buttons (cmdOK and cmdCancel) - you wanted to display this form and then determine what button the user pressed. You could have the following code in the frmMyForm :
option Explicit
'
private mbCancelled as Boolean
'
public property get Cancelled() as Boolean
Cancelled = mbCancelled
End property
'
private Sub cmdCancel_Click()
mbCancelled = true
me.Hide
End Sub
'
private Sub cmdOk_Click()
mbCancelled = false
me.Hide
End Sub
Now in your main form, when you want to show this modal form, you'd use code such as :
Dim fTemp as frmMyForm
'
' Create a new instance of frmMyForm and show it modally.
'
set fTemp = new frmMyForm
Load fTemp
'
fTemp.Show vbModal
'
' At this point the form is still in memory as we hold a reference to it
'
' - get the value from the public 'Cancelled' property
'
If fTemp.Cancelled = true then
MsgBox "Cancel pressed"
else
MsgBox "OK pressed"
End If
'
Unload fTemp
set fTemp = nothing
- of course this is just a simlple example, you'd probably have other properties on the form to get any values from textboxes / listboxes / combo's etc.
Chris Eastwood
CodeGuru - the website for developers
http://codeguru.developer.com/vb