Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
;dumb database for this example database="WA@Seattle@206-123-5678#206-321-3456#206-567-3453" database=StrCat(database,@TAB,"WA@Tacoma@453-546-3345#453-654-3234#453-554-2346#453-654-5674") database=StrCat(database,@TAB,"OR@Portland@413-456-4567") database=StrCat(database,@TAB,"OR@Eugene@413-456-6789") database=StrCat(database,@TAB,"OR@Medford@567-455-5432") database=StrCat(database,@TAB,"CA@Sacramento@415-345-6789#415-8766#415-345-7777#415-345-5678") database=StrCat(database,@TAB,"CA@San Francisco@415-333-5555#415-222-5678") datacount=ItemCount(database,@TAB) ;============================================================ ;============================================================ ;============================================================ ;Note this callback boilerplate generated bit right-click menu item "Code Blocks" #DefineSubRoutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_ID,rsvd1,rsvd2) ;DialogprocOptions Constants MSG_INIT=0 ; The one-time initialization MSG_TIMER=1 ; Timer event MSG_BUTTONPUSHED=2 ; Pushbutton or Picturebutton MSG_RADIOPUSHED=3 ; Radiobutton clicked MSG_CHECKBOX=4 ; Checkbox clicked MSG_EDITBOX=5 ; Editbox or Multilinebox MSG_FILESELECT=6 ; Filelistbox MSG_ITEMSELECT=7 ; Itembox MSG_COMBOCHANGE=8 ; Combobox/Droplistbox MSG_CALENDAR=9 ; Calendar date change MSG_SPINNER=10 ; Spinner number change MSG_CLOSEVIA49=11 ; Close clicked (Enabled via Intcontrol 49) MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox DPO_DISABLESTATE=1000 ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog DPO_CHANGEBACKGROUND=1001 ; -1=GetSetting otherise bitmap or color string ;DialogControlState Constants DCSTATE_SETFOCUS=1 ; Give Control Focus DCSTATE_QUERYSTYLE=2 ; Query control's style DCSTATE_ADDSTYLE=3 ; Add control style DCSTATE_REMOVESTYLE=4 ; Remove control style DCSTATE_GETFOCUS=5 ; Get control that has focus DCSTYLE_INVISIBLE=1 ; Set Control Invisible DCSTYLE_DISABLED=2 ; Set Control Disabled DCSTYLE_NOUSERDATA=4 ; Note: Setable via DialogControlState function ONLY SPINNER control only DCSTYLE_READONLY=8 ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER DCSTYLE_PASSWORD=16 ; Sets 'password mode' where only *'s are displayed EDITBOX DCSTYLE_DEFAULTBUTTON=32 ; Sets a button as the default button PUSHBUTTON PICTUREBUTTON DCSTYLE_DIGITSONLY=64 ; Set edit box to accept digits only EDITMOX MULTILINEBOX DCSTYLE_FLAT=128 ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON DCSTYLE_NOADJUST=256 ; Turns off auto-height adjustment ITEMBOX FILELISTBOX DCSTYLE_TEXTCENTER=512 ; Center text in control VARYTEXT STATICTEXT DCSTYLE_TEXTRIGHT=1024 ; Flush-Right text in control VARYTEXT STATICTEXT ;DialogControlSet / DialogControlGet Constants DC_CHECKBOX=1 ; CHECKBOX DC_RADIOBUTTON=2 ; RADIOBUTTON DC_EDITBOX=3 ; EDITBOX MULTILINEBOX DC_TITLE=4 ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON DC_ITEMBOXCONTENTS=5 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_ITEMBOXSELECT=6 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_CALENDAR=7 ; CALENDAR DC_SPINNER=8 ; SPINNER DC_MULTITABSTOPS=9 ; MULTILINEBOX DC_ITEMSCROLLPOS=10 ; ITEMBOX FILELISTBOX DC_BACKGROUNDCOLOR=11 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX DC_PICTUREBITMAP=12 ; PICTURE PICTUREBUTTON DC_TEXTCOLOR=13 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FIELLISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX DC_ITEMBOXADD=14 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_ITEMBOXREMOVE=15 ; ITEMBOX FILELISTBOX DROPLISTBOX Switch MyDialog_Message Case MSG_INIT ; DialogProcOptions(MyDialog_Handle,MSG_TIMER,1000) DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE) DialogProcOptions(MyDialog_Handle,MSG_ITEMSELECT,@TRUE) ;load first control with some states statelist="" oldstate="??" For xx=1 To datacount dataline=ItemExtract(xx,database,@TAB) thisstate=ItemExtract(1,dataline,"@") If thisstate==oldstate Then Continue oldstate=thisstate statelist=StrCat(statelist,thisstate,@TAB) Next statelist=StrTrim(statelist) DialogControlSet(MyDialog_Handle,006,DC_ITEMBOXCONTENTS,statelist) DialogControlSet(MyDialog_Handle,007,DC_ITEMBOXCONTENTS,"") DialogControlSet(MyDialog_Handle,008,DC_ITEMBOXCONTENTS,"") ;disable second 2 select boxes. DialogControlState(MyDialog_Handle,007,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable city DialogControlState(MyDialog_Handle,008,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable phone ;hit titles for good luck DialogControlState(MyDialog_Handle,004,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable city DialogControlState(MyDialog_Handle,005,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable phone DaNumber="" Return(-1) Case MSG_BUTTONPUSHED Switch MyDialog_ID Case 001 ; OK ;make sure a number was picked If DaNumber=="" Message("Attention","Please select a phone number") Return(-2) EndIf Return(-1) Case 002 ;Cancel . do default processing (i.e. exit) Return(-1) EndSwitch ;MyDialog_ID Return(-1) ; Do default processing Case MSG_ITEMSELECT Switch MyDialog_ID Case 006 ; state OOOHHH they clicked on a state. DaState=DialogControlGet(MyDialog_Handle,006,DC_ITEMBOXSELECT) DaState=ItemExtract(1,DaState,@TAB) ; incase they selected multiple ones ;enable city dialog box & disable phone DialogControlState(MyDialog_Handle,007,DCSTATE_REMOVESTYLE,DCSTYLE_DISABLED) ; enable city DialogControlState(MyDialog_Handle,008,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable phone ;hit titles for good luck DialogControlState(MyDialog_Handle,004,DCSTATE_REMOVESTYLE,DCSTYLE_DISABLED) ; enable city DialogControlState(MyDialog_Handle,005,DCSTATE_ADDSTYLE,DCSTYLE_DISABLED) ; disable phone ;clear phone DialogControlSet(MyDialog_Handle,008,DC_ITEMBOXCONTENTS,"") ;get list of cities for this state citylist="" For xx=1 To datacount dataline=ItemExtract(xx,database,@TAB) thisstate=ItemExtract(1,dataline,"@") If thisstate!=DaState Then Continue thiscity=ItemExtract(2,dataline,"@") citylist=StrCat(citylist,thiscity,@TAB) Next citylist=StrTrim(citylist) DialogControlSet(MyDialog_Handle,007,DC_ITEMBOXCONTENTS,citylist) DaNumber="" Return(-1) Case 007 ; city DaState=DialogControlGet(MyDialog_Handle,006,DC_ITEMBOXSELECT) DaState=ItemExtract(1,DaState,@TAB) ; incase they selected multiple ones DaCity=DialogControlGet(MyDialog_Handle,007,DC_ITEMBOXSELECT) DaCity=ItemExtract(1,DaCity,@TAB) ; incase they selected multiple ones ;enable phone dialog box DialogControlState(MyDialog_Handle,008,DCSTATE_REMOVESTYLE,DCSTYLE_DISABLED) ; disable phone DialogControlState(MyDialog_Handle,005,DCSTATE_REMOVESTYLE,DCSTYLE_DISABLED) ; disable phone ;Find list of phone numbers for this city phonelist="" For xx=1 To datacount dataline=ItemExtract(xx,database,@TAB) thisstate=ItemExtract(1,dataline,"@") If thisstate!=DaState Then Continue thiscity=ItemExtract(2,dataline,"@") If thiscity!=DaCity Then Continue phonelist=ItemExtract(3,dataline,"@") phonelist=StrReplace(phonelist,"#",@TAB) Break Next DialogControlSet(MyDialog_Handle,008,DC_ITEMBOXCONTENTS,phonelist) If ItemCount(phonelist,@TAB)==1 DaNumber=phonelist Else DaNumber="" EndIf Return(-1) Case 008 ;remember selected Phone number DaNumber=DialogControlGet(MyDialog_Handle,008,DC_ITEMBOXSELECT) DaNumber=ItemExtract(1,DaNumber,@TAB) ; incase they selected multiple ones Return(-1) ;number ; endswitch ;MyDialog_ID ; return(-1) ; Do default processing EndSwitch ; MyDialog_Message Return(-1) ; Do default processing #EndSubRoutine ;End of Dialog Callback MyDialogCallbackProc ;============================================================ ;============================================================ ;============================================================ MyDialogFormat=`WWWDLGED,6.1` MyDialogCaption=`Dependent List Box Example` MyDialogX=200 MyDialogY=200 MyDialogWidth=248 MyDialogHeight=154 MyDialogNumControls=008 MyDialogProcedure=`MyDialogCallbackProc` MyDialogFont=`DEFAULT` MyDialogTextColor=`DEFAULT` MyDialogBackground=`DEFAULT,DEFAULT` MyDialogConfig=0 MyDialog001=`033,115,036,012,PUSHBUTTON,DEFAULT,"OK",1,1,32,DEFAULT,DEFAULT,DEFAULT` MyDialog002=`117,115,036,012,PUSHBUTTON,DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog003=`001,023,044,012,STATICTEXT,DEFAULT,"State",DEFAULT,3,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog004=`081,023,044,012,STATICTEXT,DEFAULT,"City",DEFAULT,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog005=`159,023,044,012,STATICTEXT,DEFAULT,"Phone",DEFAULT,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog006=`001,039,050,058,ITEMBOX,statelist,DEFAULT,DEFAULT,6,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog007=`081,039,050,060,ITEMBOX,citylist,DEFAULT,DEFAULT,7,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog008=`159,039,050,058,ITEMBOX,phonelist,DEFAULT,DEFAULT,8,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ButtonPushed=Dialog("MyDialog") Message(StrCat(DaCity,", ",DaState),DaNumber)
Article ID: W16423
File Created: 2005:02:18:12:20:28
Last Updated: 2005:02:18:12:20:28