Author Topic: ReportView Default Row and more  (Read 3912 times)

seckner

  • Jr. Member
  • **
  • Posts: 68
ReportView Default Row and more
« on: January 29, 2014, 09:02:07 am »
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!   

JTaylor

  • Pundit
  • *****
  • Posts: 1023
    • Data & Stuff Inc.
Re: ReportView Default Row and more
« Reply #1 on: January 29, 2014, 09:31:43 am »
DialogControlSet() options 6 and 10 may be of interest.

You can put all the controls on the same dialog.

Jim

seckner

  • Jr. Member
  • **
  • Posts: 68
Re: ReportView Default Row and more
« Reply #2 on: January 29, 2014, 09:38:20 am »
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! 

Deana

  • Wilson WindowWare Tech Support
  • Pundit
  • *****
  • Posts: 1183
  • WinBatch® can do it.
    • WinBatch Tech Support Database
Re: ReportView Default Row and more
« Reply #3 on: January 29, 2014, 09:42:51 am »
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.

Code: Winbatch
#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:

Code: Winbatch
#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 F.
Technical Support
Wilson WindowWare Inc.

seckner

  • Jr. Member
  • **
  • Posts: 68
Re: ReportView Default Row and more
« Reply #4 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!

Deana

  • Wilson WindowWare Tech Support
  • Pundit
  • *****
  • Posts: 1183
  • WinBatch® can do it.
    • WinBatch Tech Support Database
Re: ReportView Default Row and more
« Reply #5 on: January 29, 2014, 11:29:16 am »
Deana F.
Technical Support
Wilson WindowWare Inc.