Hmm, have started learning how to create a dialog, based on an XML file. I now 
have been able to make my dialog show up, when a hotkey is pressed.

But I seem to have a problem in retrieving some returns from the dialog.

OK, I have created a dialog named 
    SETTINGS
. This dialog holds a group with the ID
    SoundClipSettings
. And, this group, holds a control named
    VolumeTrackbar
. 

I then used the examples for Class 14, from Chip Orange's scripting course; and 
created the following Sub and Function.

It seems to me, that the dialog works well enough. But exactly how can I 
retrieve the value from the VolumeTrackbar control. I tried with a line in my 
function, saying:
    VTB = VolumeTrackbar
; where VTB is a global variable of my app.

If anyone please could give me the exact syntax for this very line, I would be 
greatly helped. Did find little help in the app developers reference, on this 
particular problem. It only showed me how to create a Trackbar, not anything as 
to how to retrieve it. (Sigh!)


--- snip of my code ---
' somewhere else in my app, I have the line:
    Queue "DisplayMyDialog"

Sub displayMyDialog()
If MyDialog Is Nothing Then
  Set MyDialog = Dialog(myXMLFile, "SETTINGS", "DialogEventHandler")

Else
  MyDialog.window.Activate
End If

End Sub


Function DialogEventHandler(dObj, dEvent, dId, dControl)
' return "true" if your code handled the event, and false if it did not
 DialogEventHandler = False

' test on the name of the control involved in this event by examining the "dId" 
parameter
 Select Case dId
  Case "VolumeTrackbar"
' now see what was done with this control by examining the "dEvent" parameter
   If dEvent = buttonClicked Then
' it's now often the time to do something because this control was clicked
' your code to do something goes here ...
' *** Well, here comes the troublesome line, that gives me headache: ***
    VTB = VolumeTrackbar
    DialogEventHandler = True
    Exit Function
   End If

' now create a "Case" similar to the above for each control in your dialog, and 
keep adding them somewhere before the "Case Else" line

  Case "ButtonOk" 
' now see what was done with this control by examining the "dEvent" parameter
   If dEvent = buttonClicked Then
    Speak "Volume has been set to " &VTB &" percent."
' it's now often the time to save options because this control was clicked
' and so your code to do this goes here, using a "queue" command
'  queue "saveOptions"
' now cause the dialog to start closing
    dObj.close
    DialogEventHandler = True
    Exit Function
   End If

' note that the case for your "cancel" button is often identical to that of the 
"ok" button, except for saving options
  Case "ButtonCancel" 
' now see what was done with this control by examining the "dEvent" parameter
   If dEvent = buttonClicked Then
' now cause the dialog to start closing
    dObj.close
    DialogEventHandler = True
    Exit Function
   End If
   Case Else
' no control ID was recognized
' in this portion we test on events not related to a specific control

  If dEvent = dialogCreated Then
' this event happens before all others, and is the dialog being created
' now initialize your various controls in the dialog

    DialogEventHandler = True
    Exit  Function

  ElseIf dEvent = dialogClosing Then
' something caused this dialog to close, and now it's closing, set your global 
variable for this dialog or whatever else you need to do

    DialogEventHandler = True
    Exit Function
  End If
 End Select

End Function

Reply via email to