Posts: 56
Threads: 14
Joined: Jul 2008
High i have a simple smart dialog.
Employee_List (Function)/Dialog
;\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Name List"
;1 Button 0x54030001 0x4 2 110 48 14 "OK"
;2 Button 0x54030000 0x4 60 110 48 14 "Cancel"
;3 ComboBox 0x54230641 0x0 6 16 96 48 ""
;4 Button 0x54020007 0x0 2 2 108 100 "Employee Names "
;END DIALOG
;DIALOG EDITOR: "" 0x2030001 "" "" ""
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
Is there a way that when i type the name into the box and hit enter that it will save the Employees First name?
If you could help me with this code that would be greatly appreciated. Thanks a ton!
Posts: 473
Threads: 33
Joined: Aug 2007
Where do you want the information stored at? In the white space below? In a dropdown list?
Taking on Quick Macros one day at a time
Posts: 56
Threads: 14
Joined: Jul 2008
QM Assistant Wrote:Where do you want the information stored at? In the white space below? In a dropdown list? Yes i want to make it so that when i type my text into the id box 1000 and hit enter it will store the Name into the id 1001. Is there a way to do that?
Posts: 56
Threads: 14
Joined: Jul 2008
Posts: 12,073
Threads: 140
Joined: Dec 2002
This uses button + instead of Enter.
Function Function76
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3"
str cb3
if(!ShowDialog("Function76" &Function76 &controls)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Name List"
;1 Button 0x54030001 0x4 2 110 48 14 "OK"
;2 Button 0x54030000 0x4 60 110 48 14 "Cancel"
;3 ComboBox 0x54230641 0x0 6 16 96 56 ""
;5 Button 0x54032000 0x0 104 16 18 14 "+"
;6 Button 0x54032000 0x0 104 32 18 14 "-"
;4 Button 0x54020007 0x0 2 2 126 96 "Employee Names "
;END DIALOG
;DIALOG EDITOR: "" 0x2030001 "" "" ""
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 5 ;;+
,str s.getwintext(id(3 hDlg))
,s.trim; if(!s.len) ret
,CB_Add id(3 hDlg) s
,;SendMessage id(3 hDlg) CB_ADDSTRING 0 s ;;use this instead of the above line if CB_Add is unavailable
,
,case 6 ;;-
,int i=CB_SelectedItem(id(3 hDlg))
,if(i<0) ret
,SendMessage id(3 hDlg) CB_DELETESTRING i 0
,
,case IDOK
,DT_Ok hDlg ;;*
,case IDCANCEL DT_Cancel hDlg ;;*
ret 1
Posts: 86
Threads: 27
Joined: Jan 2008
The dialog you posted Gin works perfectly
but i am having trouble doing one modification to it
when i close it, i want to rset the data in the combo
and when i open it back up i want to rget it and put it in the combo
but when it closes i dont know how to get the data, getwintext doesn't work for me
do you think you could modify your example to do that?
Thanks so much
Posts: 12,073
Threads: 140
Joined: Dec 2002
Function Function76
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3"
str cb3
rget cb3 "cb" "\test\test"
if(!ShowDialog("Function76" &Function76 &controls)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Name List"
;1 Button 0x54030001 0x4 2 110 48 14 "OK"
;2 Button 0x54030000 0x4 60 110 48 14 "Cancel"
;3 ComboBox 0x54230641 0x0 6 16 96 56 ""
;5 Button 0x54032000 0x0 104 16 18 14 "+"
;6 Button 0x54032000 0x0 104 32 18 14 "-"
;4 Button 0x54020007 0x0 2 2 126 96 "Employee Names "
;END DIALOG
;DIALOG EDITOR: "" 0x2030001 "" "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case 5 ;;+
,str s.getwintext(id(3 hDlg))
,s.trim; if(!s.len) ret
,CB_Add id(3 hDlg) s
,;SendMessage id(3 hDlg) CB_ADDSTRING 0 s ;;use this instead of the above line if CB_Add is unavailable
,
,case 6 ;;-
,int i=CB_SelectedItem(id(3 hDlg))
,if(i<0) ret
,SendMessage id(3 hDlg) CB_DELETESTRING i 0
,
,case IDOK
,int j h=id(3 hDlg); str s1 s2
,for j 0 CB_GetCount(h)
,,CB_GetItemText h j s1
,,s2.addline(s1)
,rset s2 "cb" "\test\test"
,
,case IDCANCEL
ret 1
Posts: 86
Threads: 27
Joined: Jan 2008
Thank you, that was perfect
Posts: 32
Threads: 6
Joined: Aug 2005
Can the names be inserted into an array and then be sorted so you can print or out the names in an alphabetical order or be placed in a phone book (like Notepad) by alphabetical order?
Posts: 229
Threads: 22
Joined: Sep 2007
u can sort the names out in the combo by setting the style in dialog editor to CBS_SORT then contents in combo will be sorted
Posts: 12,073
Threads: 140
Joined: Dec 2002
,case IDOK
,int j h=id(3 hDlg); str s1
,ARRAY(str) a
,for j 0 CB_GetCount(h)
,,CB_GetItemText h j s1
,,a[]=s1
,a.sort(2)
,s1=a
,out s1
,rset s1 "cb" "\test\test"
Posts: 32
Threads: 6
Joined: Aug 2005
Posts: 32
Threads: 6
Joined: Aug 2005
Is there any way to incorporate the three new options so that they will be outed with the employee name?
Function Function77
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3 7 8 9"
str cb3 o7Wan o8Wil o9No
rget cb3 "cb" "\test\test"
if(!ShowDialog("Function77" &Function77 &controls)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 135 "Name List"
;1 Button 0x54030001 0x4 2 110 48 14 "OK"
;2 Button 0x54030000 0x4 60 110 48 14 "Cancel"
;3 ComboBox 0x54230641 0x0 6 16 96 56 ""
;5 Button 0x54032000 0x0 104 16 18 14 "+"
;6 Button 0x54032000 0x0 104 32 18 14 "-"
;7 Button 0x54032009 0x0 148 6 135 12 "Wants you to call"
;8 Button 0x54002009 0x0 148 22 135 12 "Will call back"
;9 Button 0x54002009 0x0 148 38 135 12 "No message"
;4 Button 0x54020007 0x0 2 2 126 96 "Employee Names "
;END DIALOG
;DIALOG EDITOR: "" 0x2030001 "" "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case 5 ;;+
,str s.getwintext(id(3 hDlg))
,s.trim; if(!s.len) ret
,CB_Add id(3 hDlg) s
,;SendMessage id(3 hDlg) CB_ADDSTRING 0 s ;;use this instead of the above line if CB_Add is unavailable
,
,case 6 ;;-
,int i=CB_SelectedItem(id(3 hDlg))
,if(i<0) ret
,SendMessage id(3 hDlg) CB_DELETESTRING i 0
,
,case IDOK
,int j h=id(3 hDlg); str s1
,ARRAY(str) a
,for j 0 CB_GetCount(h)
,,CB_GetItemText h j s1
,,a[]=s1
,a.sort(2)
,s1=a
,out s1
,rset s1 "cb" "\test\test"
,
,case IDCANCEL
ret 1
Posts: 32
Threads: 6
Joined: Aug 2005
OK trying this on my own. How can you tell witch option out of 3 has been selected?
Example:
Option first
Option next
Option next
if (option first is selected)
out "Option 1 is selected"
if (option next is selected)
out "Option 2 is selected"
if (option next is selected)
out "Option 3 is selected"
Posts: 32
Threads: 6
Joined: Aug 2005
I am just learning but I am getting farther away than I wanted to in understanding arrays and my first question about including the option buttons (will call back) and (no message) and (wants you to call).
I have this but something about the states with option 2 and 3 do not work.
Function Dialog5
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3 4 5"
str o3Opt o4Opt o5Opt
if(!ShowDialog("Dialog5" &Dialog5 &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 Button 0x54032009 0x0 10 6 48 12 "Option first"
;4 Button 0x54002009 0x0 10 24 48 12 "Option next"
;5 Button 0x54002009 0x0 10 44 48 13 "Option next"
;END DIALOG
;DIALOG EDITOR: "" 0x2030001 "" "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,Acc o3O=acc("Option first" "RADIOBUTTON" win("Dialog" "#32770") "Button" "" 0x1001)
,int state1=o3O.State()
,Acc o4O=acc("Option next" "RADIOBUTTON" win("Dialog" "#32770") "Button" "" 0x1001)
,int state2=o4O.State()
,Acc o50=acc("Option next" "RADIOBUTTON" win("Dialog" "#32770") "Button" "" 0x1001)
,int state3=o50.State()
,out state1
,out state2
,out state3
,if(state1=1048592)
,,out "Option 1 is selected"
,if(state2=1048592)
,,out "Option 2 is selected"
,if(state3=1048592)
,,out "Option 3 is selected"
,case WM_DESTROY
,case WM_COMMAND goto messages2
,case IDCANCEL
ret 1
as I said I am probably taking the long way around understanding arrays but maybe I will learn something this way.
Posts: 32
Threads: 6
Joined: Aug 2005
I found this and it seams to be a very quick way of seeing if a option is selected. I will play with it and see if I can put it in the array.
Macro
if(but(id(3 win("Dialog" "#32770"))))
,out "Yes"
else
,out "No"
Posts: 1,000
Threads: 253
Joined: Feb 2008
Option Next and Option Next are being seen as the same button by using the Accessible Object. Changing one to Option Next 1 will do the trick...
In the Dialog Defintion:
;4 Button 0x54002009 0x0 10 24 48 12 "Option next1"
And then in your case IDOK:
,Acc o4O=acc("Option next1" "RADIOBUTTON" win("Dialog" "#32770") "Button" "" 0x1001)
,int state2=o4O.State()
Posts: 1,000
Threads: 253
Joined: Feb 2008
Function Dialog5
,case IDOK
,out
,if(but(id(3 win("Dialog" "#32770"))))
,,out "Option first"
,if(but(id(4 win("Dialog" "#32770"))))
,,out "Option Next1"
,if(but(id(5 win("Dialog" "#32770"))))
,,out "Option Next2"
By the way, I don't think this has anything to do with arrays...?!?!
Posts: 32
Threads: 6
Joined: Aug 2005
As I said in my earlier post on this subject I think that you are right and I have decided while my desire is to have an answer my question in this post about options and arrays I will be making a new subject post about arrays and options as soon as I have check the spelling and made the new post as clear as I can.
|