|
-
January 25th, 2000, 09:18 AM
#1
how to get an answer from a modal dialog
I want to detekt if OK or some other button was hit to close a modal dialog.
-
January 25th, 2000, 09:35 AM
#2
Re: how to get an answer from 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]
-
January 25th, 2000, 10:07 AM
#3
Re: how to get an answer from a modal dialog
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
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|