Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
About QM dialog code in the forum
#1
I often give dialog examples like this:

Function Dialog35
 
Code:
Copy      Help
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages

str controls = "3"
str e3
if(!ShowDialog("Dialog35" &Dialog35 &controls)) ret

;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 Edit 0x54030080 0x200 6 10 96 14 ""
;END DIALOG
;DIALOG EDITOR: "" 0x202000B "" ""


ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1

It may be not clear how to use it. Here are the explanations:

Create new function. Its name must be the same as used with the ShowDialog function in the example (in this case - Dialog35). Copy the code from the forum and paste in QM using menu Edit -> Other Formats -> Paste Escaped (in QM 2.3.0 and later - simply paste, and click 'Correct...' if it appears in the output).

If you need the function to have other name, give it any name and replace function name in the code. For example, if your function is MyDialog, use this:

if(!ShowDialog("MyDialog" &MyDialog &controls)) ret

Now, when you run the function using the Run button, it shows the dialog. If you need to show the dialog from other macro or function, cut the code that shows the dialog and paste there.

Also, to make the dialog easily editable with the Dialog Editor, insert space or semicolon before \ in the first line. Then, when you run the function using the Run button, it opens the dialog in the Dialog Editor.

Example:

Function Dialog35:
 
Code:
Copy      Help
;\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages

;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 Edit 0x54030080 0x200 6 10 96 14 ""
;END DIALOG
;DIALOG EDITOR: "" 0x202000B "" ""


ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1

Another macro or function where you want to put code that shows the dialog:
Code:
Copy      Help
;...
str controls = "3"
str e3
if(!ShowDialog("Dialog35" &Dialog35 &controls)) ret
;...
#2
And one important note. Dialog functions that look like above must not be used with QM versions below 2.1.9. Dialog functions compatible with older QM versions must contain some more code. Example:

Code:
Copy      Help
;\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages

;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 Edit 0x54030080 0x200 8 8 96 14 ""
;END DIALOG
;DIALOG EDITOR: "" 0x2020100 "" ""


ret
;messages
sel message
,case WM_INITDIALOG
,DT_Init(hDlg lParam) ;;*
,ret 1 ;;*
,case WM_DESTROY DT_DeleteData(hDlg) ;;*
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,DT_Ok hDlg ;;*
,case IDCANCEL DT_Cancel hDlg ;;*
ret 1

;* - not necessary in QM >= 2.1.9

You can make functions created for QM >= 2.1.9 compatible with older QM versions. Just insert the missing code.


Forum Jump:


Users browsing this thread: 2 Guest(s)