I have a pretty standard ReportView I'm using to track department expenses and it works perfectly. It's for display only since it's a summary of the expenses. That said the final row is the grand total row. Is it possible to 'select' that row so it's highlighted when it's first displayed?
Please excuse me if this has already been answered - can I embed a dialog in a dialog? What I mean is - I have a program dialog that allows me to enter expenses into my database. On that dialog I have a menu and that menu opens the ReportView program - so two separate programs, one calling the other. It's nice and does what I need but what I'd really like is to have the Voucher Sheet AND the ReportView all in one window. Since I'm sure I've confused everyone please see the attached pictures - one of the voucher sheet, winbatch program A, one of the summary Reportview, winbatch program B, and an idea of what I'd like to try to do, picture c. Is it possible?
Thank you!
DialogControlSet() options 6 and 10 may be of interest.
You can put all the controls on the same dialog.
Jim
Jim, Thank you! As happens often once I asked the question out loud, I started wondering if I could just combine the 2, and then stumbled on the DialogControlSet() options you mentioned! I very much appreciate your reply - at least now I know I'm on the right track!
Yes you can highlight the last item in a ReportView upon display using your Dialog Callback initialization routine. Call DialogControlSet option 6 to select the item then option 10 to scroll to the last item.
#DefineSubRoutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo)
MSG_INIT=0 ; The one-time initialization
MSG_BUTTONPUSHED=2 ; Pushbutton or Picturebutton
DC_ITEMBOXSELECT=6 ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
DC_ITEMSCROLLPOS=10 ; ITEMBOX FILELISTBOX
;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
ON_EQUAL = @TRUE ; Initialize variable ON_EQUAL
Switch MyDialog_Message ; Switch based on Dialog Message type
Case MSG_INIT ; Standard Initialization message
DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
count = ArrInfo(arrArray, 1)-1
lastitem = arrArray[count,0]
DialogControlSet( MyDialog_Handle, "ReportView_1", DC_ITEMBOXSELECT, lastitem ) ;Select
DialogControlSet( MyDialog_Handle, "ReportView_1", DC_ITEMSCROLLPOS, lastitem ) ;Scroll to
Return(RET_DO_DEFAULT)
Case MSG_BUTTONPUSHED
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
If MyDialog_Name == "PushButton_SelectAll"
For x = 0 To ArrInfo(arrArray, 1)-1
item = arrArray[x,0]
DialogControlSet( MyDialog_Handle, "ReportView_1", DC_ITEMBOXSELECT, item )
Next
Return(RET_DO_NOT_EXIT)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ElseIf MyDialog_Name == "PushButton_Cancel" ; Cancel
Return(RET_DO_CANCEL)
EndIf ; MyDialog_Name
Return(RET_DO_DEFAULT)
; case MSG_RVITEMSELROW ; ID "ReportView_1" arrSafeArray
; return(RET_DO_DEFAULT)
EndSwitch ; MyDialog_Message
Return(RET_DO_DEFAULT)
#EndSubRoutine ; End of Dialog Callback MyDialogCallbackProc
filename = 'C:\TEMP\Data\CSV\Authors.csv'
arrArray = ArrayFileGetCSV(filename, 1)
MyDialogFormat=`WWWDLGED,6.2`
MyDialogCaption=`ReportView Select all`
MyDialogX=138
MyDialogY=141
MyDialogWidth=566
MyDialogHeight=243
MyDialogNumControls=003
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0
MyDialog001=`165,223,036,012,PUSHBUTTON,"PushButton_SelectAll",DEFAULT,"Select All",1,10,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`365,223,036,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`013,011,540,202,REPORTVIEW,"ReportView_1",arrArray,DEFAULT,DEFAULT,30,8388608,DEFAULT,DEFAULT,"192|192|192"`
ButtonPushed=Dialog("MyDialog")
To have a dialog embedded in a dialog: you would set up a call back procedure, in which you would call the embedded dialog.
Here is some sample code:
#DefineFunction MainDialogCallbackProc(MainDialog_Handle,MainDialog_Message,MainDialog_ID,rsvd1,rsvd2)
;DialogprocOptions Constants
MSG_INIT=0 ; The one-time initilization
MSG_TIMER=1 ; Timer event
MSG_BUTTONPUSHED=2 ; Pushbutton or Picturebutton
switch MainDialog_Message
case MSG_INIT
DialogProcOptions(MainDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
return(-1)
case MSG_BUTTONPUSHED ;ID 001
ChildDialogFormat=`WWWDLGED,6.1`
ChildDialogCaption=`Child Dialog`
ChildDialogX=010
ChildDialogY=050
ChildDialogWidth=150
ChildDialogHeight=100
ChildDialogNumControls=001
ChildDialogProcedure=`DEFAULT`
ChildDialogFont=`DEFAULT`
ChildDialogTextColor=`DEFAULT`
ChildDialogBackground=`DEFAULT,DEFAULT`
ChildDialogConfig=1
ChildDialog001=`050,046,048,010,PUSHBUTTON,DEFAULT,"Push Me",1,1,32,DEFAULT,DEFAULT,DEFAULT`
ChildDialogButtonPushed=Dialog("ChildDialog")
return(-1) ; Do default processing
endswitch ; MainDialog_Message
return(-1) ; Do default processing
#EndFunction ;End of Dialog Callback MainDialogCallbackProc
;============================================================
;============================================================
;============================================================
MainDialogFormat=`WWWDLGED,6.1`
MainDialogCaption=`Main Dialog`
MainDialogX=010
MainDialogY=990
MainDialogWidth=300
MainDialogHeight=200
MainDialogNumControls=001
MainDialogProcedure=`MainDialogCallbackProc`
MainDialogFont=`DEFAULT`
MainDialogTextColor=`DEFAULT`
MainDialogBackground=`DEFAULT,DEFAULT`
MainDialogConfig=1
MainDialog001=`120,090,048,030,PUSHBUTTON,DEFAULT,"Push Me",1,1,32,DEFAULT,DEFAULT,DEFAULT`
MainDialogButtonPushed=Dialog("MainDialog")
Deana - your keyboard has to be smoking! Thank you!!! Between you and Jim I might just figure this out! Again, Thank you!
Quote from: seckner on January 29, 2014, 09:52:08 AM
Deana - your keyboard has to be smoking! Thank you!!! Between you and Jim I might just figure this out! Again, Thank you!
Only the copy and paste keys ;)
Much of this code was taken from code found in the tech database:
http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Dialog~Editor/Dialog~Editor~version~6.2+ReportView~Highlight.txt
http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Dialog~Editor/Dialog~Editor~version~6.X+Multiple~Dialog~Boxes.txt