CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Nov 1999
    Posts
    8

    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.


  2. #2
    Join Date
    Sep 1999
    Location
    Red Wing, MN USA
    Posts
    312

    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]
    Aaron Young
    Senior Programmer Analyst (Red Wing Software)
    Certified AllExperts Expert

  3. #3
    Join Date
    May 1999
    Location
    Oxford UK
    Posts
    1,459

    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
  •  





Click Here to Expand Forum to Full Width

Featured