Hi All,
The script below is my take on the Xdialog Genie in the Learning Xdialog that ships with Alpha Five.
The extra that I have added to Selwyns script is that this one will check each field before moving to the next page, this all works fine but I want to make an improvement.
If a page has 2 text boxes on it, it checkes them in order, now say text box one has now been filled out incorrectly and the error message appears I then press OK, I then want to give focus back to the offending text box in this case text box one.
I have asked Selwyn and he says I should use the UI_DLG_CTL_GOTO() but I have had no joy with this
Any help would be great
Andy
The script below is my take on the Xdialog Genie in the Learning Xdialog that ships with Alpha Five.
The extra that I have added to Selwyns script is that this one will check each field before moving to the next page, this all works fine but I want to make an improvement.
If a page has 2 text boxes on it, it checkes them in order, now say text box one has now been filled out incorrectly and the error message appears I then press OK, I then want to give focus back to the offending text box in this case text box one.
I have asked Selwyn and he says I should use the UI_DLG_CTL_GOTO() but I have had no joy with this
Any help would be great
Andy
Code:
'Date Created: 25-Jun-2002 05:10:30 PM 'Last Updated: 06-Mar-2003 02:52:10 PM 'Created By : Selwyn 'Updated By : Andy Meer page = 1 max_pages = 5 dim genie_stay as l 'flag controls if you can move off the current genie page. genie_stay = .f. vl = local_variables() define_pages(vl) set_flags(vl) ui_dlg_box("Genie",<<%dlg% {startup=init} {region0} {region1} {wrap=20}; This script demonstrates an approach to designing a Genie with Xdialog, using Embedded Dialog boxes.; {lf}; The text in this region will appear on all Genie pages. Script also checks that fields are correct; {lf}; {image=group} {endregion1}|{sp}| {frame=1,1} {region3} {embedded=60,15genie} {endregion3}; {region} {endregion}; {endregion0}; {region} {justify=right}<15&Cancel> <15<&Previous!previous?flag_previous> <15&Next\>!next?flag_next> <15&Finish!finish?flag_finish> {endregion} %dlg%, <<%code% if a_dlg_button = "finish" then end if if a_dlg_button = "init" then a_dlg_button = "" show_page(vl,1) end if if a_dlg_button = "next" then a_dlg_button = "" validate(vl) page = page + 1 if page > max_pages then page = max_pages end if show_page(vl,page) end if if a_dlg_button = "previous" then a_dlg_button = "" page = page - 1 if page < 1 then page = 1 end if show_page(vl,page) end if %code%) function show_page as c (vars as p, page as n ) with vars if genie_stay = .f. then temp_code = eval("page_"+page) evaluate_template(temp_code) set_flags(vl) end if end with end function function validate as v (vars as p) with vars genie_stay = .f. if page = 2 then if fname = "" then ui_msg_box("","Customer First Name is required") genie_stay = .t. page = page - 1 exit function end if end if if page = 2 then if lname = "" then ui_msg_box("","Customer Last Name is required") genie_stay = .t. page = page - 1 exit function end if end if if page = 3 then if age = "" then ui_msg_box("","Customer age is required") genie_stay = .t. page = page - 1 exit function end if end if if page = 4 then if gender = "" then ui_msg_box("","Customer gender is required") genie_stay = .t. page = page - 1 exit function end if end if end with end function function define_pages as c (vars as p) with vars page_1 = <<%dlg2% ui_modeless_dlg_box("genie",<<%dlg% {cellspillover=on} {lf}; Welcome to the Xdialog genie.; {lf}; Press the Next button below to get started.; %dlg%,<<%code% 1=1 %code%) %dlg2% page_2 = <<%dlg2% ui_modeless_dlg_box("genie",<<%dlg% {cellspillover=on} Enter your name:; {lf}; {lf}; Firstname: | [.30fname]; {lf}; Lastname: | [.30lname]; %dlg%,<<%code% 1=1 %code%) %dlg2% page_3 = <<%dlg2% ui_modeless_dlg_box("genie",<<%dlg% {cellspillover=on} Enter your age:; {lf}; {lf}; Age: | [.30age]; {lf}; %dlg%,<<%code% 1=1 %code%) %dlg2% page_4 = <<%dlg2% ui_modeless_dlg_box("genie",<<%dlg% {cellspillover=on} Enter your Gender:; {lf}; {lf}; Gender: | [.30gender]; {lf}; %dlg%,<<%code% 1=1 %code%) %dlg2% page_5 = <<%dlg2% ui_modeless_dlg_box("genie",<<%dlg% {cellspillover=on} Enter your Nationality:; {lf}; {lf}; Nationality: | [.30vnation]; {lf}; %dlg%,<<%code% 1=1 %code%) %dlg2% end with end function function set_flags as c (vars as p) with vars if page = max_pages flag_finish = .t. flag_next = .f. flag_finish = .t. flag_previous = .t. else if page = 1 then flag_next = .t. flag_previous = .f. flag_finish = .f. else flag_next = .t. flag_previous = .t. flag_finish = .f. end if end with end function
Comment