how to do? Thanks. 8)
AskItemList merely uses the User defined System Settings for this dialog. If you want to create your own customized dialog, I recommend using the WIL Dialog Editor.
For Example:
ItemList = 'apples':@TAB:'bananas':@TAB:'cherries'
preselect = 'bananas'
AskItemFormat=`WWWDLGED,6.2`
AskItemCaption=`DlgAskItemList`
AskItemX=-01
AskItemY=-01
AskItemWidth=176
AskItemHeight=145
AskItemMinWidth=053
AskItemMinHeight=044
AskItemNumControls=003
AskItemProcedure=`AskItemCallbackProc`
AskItemFont=`DEFAULT`
AskItemTextColor=`DEFAULT`
AskItemBackground=`DEFAULT,0|64|128`
AskItemConfig=3
AskItem001=`041,123,036,012,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",2,10,32,DEFAULT,DEFAULT,DEFAULT`
AskItem002=`087,123,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",1,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
AskItem003=`009,005,154,114,ITEMBOX,"ItemList",ItemList,DEFAULT,DEFAULT,30,256,DEFAULT,DEFAULT,DEFAULT`
AskItemButtonPushed=Dialog("AskItem") ;
Pause('Result', ItemList)
Quote from: Deana on January 21, 2014, 01:03:37 PM
AskItemList merely uses the User defined System Settings for this dialog. If you want to create your own customized dialog, I recommend using the WIL Dialog Editor.
Yes, you can, wherein lies the beauty and power of WinBatch. However, IMO, such tactics defeat the purpose of desktop color schemes. I believe that you should think twice, or even thrice, before you override a system color, and that you should be prepared to defend your decision before the court of the Windows UI Police. ;)
I have written a program that manipulates an SMS gateway, providing the user with round-trip texting.
The scenario is: I've sent you a text, and received a reply from you, no problem. This process repeats for a couple of minutes. You and I are having a conversation. You then say, "just a sec, I've got to take this phone call." After a good bit more than "a sec," I get tired of waiting with bated breath for your return, and go about doing other things, with one eye glued to my monitor, waiting for that uniquely colored little window to alert me to the fact that you have returned to the conversation. It's color is so unique, I can't miss it, thus allowing me to be a little less attentive to my computer for a few minutes, and more productive doing my other tasks around the office.
Anyway, should it please the court, what's so sacred about the askItemList box? I could, after all, do all that I want by creating my own box or dialog anyway, couldn't I? It'd just be more work than I like to do, when askItemList is soooo (nearly) perfect for the functionality I need at this time. Logical question I thought... after all, if I could change something so seemingly etched in stone as the button text, well, I thought, why not ask for the color as well.
AskItemList is a simple generic dialog exposed by the OS, to be used in circumstances in which you don't need a unique UI. If you want customization, you must create your own using the Dialog editor. You ask why AskItemList is sacred the answer: ease of use.
Quote from: stevengraff on January 26, 2014, 03:29:53 AM
Anyway, should it please the court, what's so sacred about the askItemList box? I could, after all, do all that I want by creating my own box or dialog anyway, couldn't I? It'd just be more work than I like to do, when askItemList is soooo (nearly) perfect for the functionality I need at this time. Logical question I thought... after all, if I could change something so seemingly etched in stone as the button text, well, I thought, why not ask for the color as well.
Motion granted. ;D
Quote from: Deana on January 27, 2014, 08:45:43 AM
AskItemList is a simple generic dialog exposed by the OS, to be used in circumstances in which you don't need a unique UI. If you want customization, you must create your own using the Dialog editor. You ask why AskItemList is sacred the answer: ease of use.
Is it any less easy to use if it has a few additional options? Users embracing "ease of use" would simply ignore the options.
Quote from: stevengraff on January 30, 2014, 08:43:36 AM
Is it any less easy to use if it has a few additional options? Users embracing "ease of use" would simply ignore the options.
Not interested into getting into a tedious discussion of information theory or UI design but ease-of-use design simply doesn't work that way.
How 'bout this theory: if I can't do what I want, easily, when I want to do it... it ain't easy to use! :)
Quote from: stevengraff on January 30, 2014, 09:44:49 AM
How 'bout this theory: if I can't do what I want, easily, when I want to do it... it ain't easy to use! :)
Hmmm. But you can using the customizable WIL dialogs. I even took the time to write and post an example as a starting point. You can use that code to change the background color of your dialog dynamically using a dialog call back procedure or...
Here is a another example that can flash the window if need be.
;============================================================
;============================================================
;============================================================
#DefineSubRoutine InitDialogConstants()
;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 DialogProcOptions 1002
MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox
MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox
MSG_COMEVENT=14 ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)
MSG_MENUITEM=15 ; MenuItem selected
MSG_MENUITEMINIT=16 ; MenuItem initialized
MSG_RESIZE=17 ; Dialog resized
MSG_RVITEMSELROW=18 ; Reportview item select row
MSG_RVDBLCLICKROW=19 ; Reportview double-click row
MSG_RVCHECKEDITEM=20 ; Reportview checked/unchecked Item
MSG_RVITEMTEXT=21 ; Reportview changed text of first column
MSG_RVHEADER=22 ; Reportview header clicked
DPO_DISABLESTATE=1000 ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
DPO_CHANGEBACKGROUND=1001 ; -1=Get Current otherise bitmap or color string
DPO_CHANGESYSMENU=1002 ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max
DPO_CHANGETITLE=1003 ; Set/Get Dialog Title - (-1 to get)
DPO_GETNAME=1004 ; Returns the name associated with a control's number.
DPO_GETNUMBER=1005 ; Returns the number associated with a control's name.
DPO_GETCLIENTAREA=1007 ; Returns a space delimited list of the width and height of the client area.
;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
DCSTATE_MOVEMOUSEOVER=6 ; Move the mouse over the control
DCSTYLE_DEFAULT=0 ; Set Default Style
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
DCSTYLE_NOSELCURLEFT=2048 ; No selection, cursor left EDITBOX MULTILINEBOX
DCSTYLE_NOSELCURRIGHT=4096 ; No selection, cursor right EDITBOX MULTILINEBOX
DCSTYLE_SHIELD=8192 ; Display Security Shield icon on button (Vista only) PUSHBUTTON PICTUREBUTTON
DCSTYLE_MENUCHECK=32768 ; Adds a check mark to the left of a menu item MENUITEM
DCSTYLE_MENURADIO=65536 ; Adds a radio button like dot graphic to the left of a menu item MENUITEM
DCSTYLE_MENUSEP=131072 ; Separator bar graphic MENUITEM
DCSTYLE_MENUBREAK=262144 ; Column break MENUBAR
DCSTYLE_NOHEADER=524288 ; No header bar REPORTVIEW
DCSTYLE_COLHEADER=1048576 ; First row column header REPORTVIEW
DCSTYLE_GRIDLINES=2097152 ; Grid lines REPORTVIEW
DCSTYLE_SELONEROW=4194304 ; Only one row can be selected at a time REPORTVIEW
DCSTYLE_SELALLROW = 8388608 ; Highlight complete row REPORTVIEW
DCSTYLE_SORTASC=16777216 ; Ascending sort REPORTVIEW
DCSTYLE_SORTDESC=33554432 ; Descending sort REPORTVIEW
DCSTYLE_EDITCOL=67108864 ; Edit first columns text REPORTVIEW
DCSTYLE_COLCHECKBOX=134217728 ; Add checkbox to first column REPORTVIEW
DCSTYLE_INSHEADER=268435456 ; Include column header text REPORTVIEW
;DialogControlSet / DialogControlGet Constants
DC_CHECKBOX=1 ; CHECKBOX REPORTVIEW
DC_RADIOBUTTON=2 ; RADIOBUTTON
DC_EDITBOX=3 ; EDITBOX MULTILINEBOX
DC_TITLE=4 ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON MENUITEM
DC_ITEMBOXCONTENTS=5 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
DC_ITEMBOXSELECT=6 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
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 REPORTVIEW
DC_PICTUREBITMAP=12 ; PICTURE PICTUREBUTTON
DC_TEXTCOLOR=13 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW
DC_ITEMBOXADD=14 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
DC_ITEMBOXREMOVE=15 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
DC_RADIOVALUE=16 ; RADIOBUTTON
DC_POSITION=17 ; ALL CONTROLS (Except MENUBAR and MENUITEM)
DC_MENUNAMES=18 ; ALL CONTROLS
DC_HANDLE=19 ; ALL CONTROLS (Except MENUBAR and MENUITEM)
DC_RVCOLHEAD=20 ; REPORTVIEW
DC_RVCOLWIDTH=21 ; REPORTVIEW
DC_RVADDCOL=22 ; REPORTVIEW
DC_RVREMOVECOL=23 ; REPORTVIEW
DC_RVMATCHCOL=24 ; REPORTVIEW
DC_RVCANCELEDIT=25 ; REPORTVIEW
DC_RVCHECKEDROWS=26 ; REPORTVIEW
DC_RVJUSTIFY=27 ; REPORTVIEW
;DialogObject constants
DLGOBJECT_ADDEVENT=1 ; Call dialog callback when the specified event occurs
DLGOBJECT_STOPEVENT=2 ; Stop calling dialog callback when an event previously requested with
DLGOBJECT_GETOBJECT=3 ; Return an object references to the specified control
DLGOBJECT_GETPICTURE=4 ; Create and return an object reference to a picture object
;Return code constants
RET_DO_CANCEL=0 ; Cancels dialog
RET_DO_DEFAULT= -1 ; Continue with default processing for control
RET_DO_NOT_EXIT= -2 ; Do not exit the dialog
return
#EndSubroutine
;============================================================
;============================================================
;============================================================
#DefineFunction AskItemCallbackProc(AskItem_Handle,AskItem_Message,AskItem_Name,AskItem_EventInfo,AskItem_ChangeInfo)
InitDialogConstants() ; Initialize Dialog Constants
ON_EQUAL = @TRUE ; Initialize variable ON_EQUAL
switch AskItem_Message ; Switch based on Dialog Message type
case MSG_INIT ; Standard Initialization message
; DialogProcOptions(AskItem_Handle,MSG_TIMER,1000)
DialogProcOptions(AskItem_Handle,MSG_BUTTONPUSHED,@TRUE)
; DialogProcOptions(AskItem_Handle,MSG_ITEMSELECT,@TRUE)
return(RET_DO_DEFAULT)
case MSG_BUTTONPUSHED
if AskItem_Name == "PushButton_Flash" ; Flash Window
User32 = StrCat (DirWindows (1),"user32.DLL")
WinFlash = DllHwnd (WinGetActive())
For xx = 1 To 10 ;Flash five times
DllCall (User32, long:"FlashWindow", long:WinFlash, long:1)
TimeDelay(0.2)
Next
DllCall (User32, long:"FlashWindow", long:WinFlash, long:0); Bring the window to normal position
return(RET_DO_NOT_EXIT)
elseif AskItem_Name == "PushButton_Cancel" ; Cancel
return(RET_DO_CANCEL)
endif ; AskItem_Name
return(RET_DO_DEFAULT)
; case MSG_ITEMSELECT ; ID "ItemList" ItemList
; return(RET_DO_DEFAULT)
endswitch ; AskItem_Message
return(RET_DO_DEFAULT)
#EndFunction ; End of Dialog Callback AskItemCallbackProc
ItemList = 'apples':@TAB:'bananas':@TAB:'cherries'
preselect = 'bananas'
AskItemFormat=`WWWDLGED,6.2`
AskItemCaption=`DlgAskItemList Flash`
AskItemX=-01
AskItemY=-01
AskItemWidth=176
AskItemHeight=145
AskItemMinWidth=053
AskItemMinHeight=044
AskItemNumControls=003
AskItemProcedure=`AskItemCallbackProc`
AskItemFont=`DEFAULT`
AskItemTextColor=`DEFAULT`
AskItemBackground=`DEFAULT,0|64|128`
AskItemConfig=3
AskItem001=`041,123,036,012,PUSHBUTTON,"PushButton_Flash",DEFAULT,"Flash",2,10,32,DEFAULT,DEFAULT,DEFAULT`
AskItem002=`087,123,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",1,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
AskItem003=`009,005,154,114,ITEMBOX,"ItemList",ItemList,%preselect%,DEFAULT,30,256,DEFAULT,DEFAULT,DEFAULT`
AskItemButtonPushed=Dialog("AskItem") ;
Pause('Result', ItemList)
exit
Thank you Deana... you're too kind!
Quote from: stevengraff on January 30, 2014, 09:44:49 AM
How 'bout this theory: if I can't do what I want, easily, when I want to do it... it ain't easy to use! :)
Oy vey.
Hi Deana,
In the second example with the flash button, why I don't see the Pause dialog to show the ItemList value at all?
Quote from: lionking on May 26, 2014, 03:39:52 PM
Hi Deana,
In the second example with the flash button, why I don't see the Pause dialog to show the ItemList value at all?
Not sure. Are you clicking on a button in the dialog? You should be able to click on either the Flash or Cancel button to get the Pause message to appear.
Yes, I click on the Flash button and I could see it flash 5 times but then I don't see the dialog to show the item that I have selected.
Quote from: lionking on May 27, 2014, 03:18:06 PM
Yes, I click on the Flash button and I could see it flash 5 times but then I don't see the dialog to show the item that I have selected.
Currently the code for the flash button doesnt EXIT the dialog. TO have the dialog Exit change this line:
return(RET_DO_NOT_EXIT)
to
return(RET_DO_DEFAULT)
It works!
Thanks Daena