File: w_sheet.srw
Size: 6266
Date: Tue, 02 Aug 2022 15:45:42 +0200
$PBExportHeader$w_sheet.srw
forward
global type w_sheet from window
end type
type dw_report from u_datawindow within w_sheet
end type
end forward

global type w_sheet from window
integer width = 2711
integer height = 1592
boolean titlebar = true
string title = "Untitled"
string menuname = "m_sheet"
boolean controlmenu = true
boolean minbox = true
boolean maxbox = true
boolean resizable = true
long backcolor = 67108864
string icon = "AppIcon!"
boolean center = true
event printreport ( boolean ab_chooseprinter )
event m_sort ( )
event m_filter ( )
event m_zoom ( )
event m_firstpage ( )
event m_nextpage ( )
event m_priorpage ( )
event m_lastpage ( )
event m_saveas ( )
dw_report dw_report
end type
global w_sheet w_sheet

type prototypes

end prototypes

type variables
String is_filename

end variables

forward prototypes
public subroutine wf_recentfiles ()
public subroutine wf_saveas (string as_saveastype)
end prototypes

event printreport(boolean ab_chooseprinter);// Print the report

If ab_ChoosePrinter Then
   dw_report.Print(False, True)
Else
   dw_report.Print()
End If

end event

event m_sort();// Sort the report

String ls_null
Integer li_rc

SetNull(ls_null)

li_rc = dw_report.SetSort(ls_null)

If li_rc = 1 Then
   this.SetRedraw(False)
   dw_report.Sort()
   dw_report.GroupCalc()
   this.SetRedraw(True)
End If

end event

event m_filter();// Filter the report

String ls_null
Integer li_rc

SetNull(ls_null)

li_rc = dw_report.SetFilter(ls_null)
If li_rc = 1 Then
   this.SetRedraw(False)
   dw_report.Filter()
   dw_report.Sort()
   dw_report.GroupCalc()
   this.SetRedraw(True)
End If

end event

event m_zoom();// Zoom the report

Integer li_zoom

li_zoom = Integer(dw_report.Describe("DataWindow.Zoom"))

OpenWithParm(w_zoom, li_zoom)

li_zoom = Message.DoubleParm
If li_zoom > 0 Then
   dw_report.Modify("DataWindow.Zoom=" + String(li_zoom))
End If

end event

event m_firstpage();// First Page

dw_report.ScrollToRow(1)

end event

event m_nextpage();// Next Page

dw_report.ScrollNextPage()

end event

event m_priorpage();// Prior Page

dw_report.ScrollPriorPage()

end event

event m_lastpage();// Last Page

dw_report.ScrollToRow(dw_report.RowCount())

end event

event m_saveas();// Save As

dw_report.SaveAs()

end event

public subroutine wf_recentfiles ();// populate the recent files menu

m_sheet lm_menu
Menu lm_item
String ls_value

// reset the menu
this.ChangeMenu(m_sheet)

// get reference to the menu
lm_menu = this.MenuID

// get reference to the menu item
lm_item = lm_menu.m_file.m_recentfiles

// set the parent window
gn_dyn.of_SetParent(this)

// update recent files menu item
gn_mru.of_RecentFiles(lm_item)

// update toolbar size
ls_value = gn_app.of_GetReg("Window", "ToolbarText", "false")
If ls_value = "true" Then
   lm_menu.mf_BigToolbarButtons(True)
Else
   lm_menu.mf_BigToolbarButtons(False)
End If

end subroutine

public subroutine wf_saveas (string as_saveastype);// Save report to a file


Integer li_rc, li_fnum
String ls_title, ls_extn, ls_filter, ls_initdir
String ls_pathname, ls_filename, ls_data

ls_initdir = gn_app.of_GetFolderPath("PERSONAL")

ls_title  = "Save As " + as_SaveAsType

choose case Lower(as_SaveAsType)
   case "excel8"
      ls_extn = "xls"
      ls_filter = "Excel Files (*.xls),*.xls"
   case "excel12"
//    MessageBox("Save As", "The Excel12 format requires PowerBuilder 12 and higher!", StopSign!)
//    Return
      ls_extn = "xlsx"
      ls_filter = "Excel Files (*.xlsx),*.xlsx"
   case "html"
      ls_extn = "html"
      ls_filter = "HTML Files (*.html),*.html"
   case "json"
      ls_extn = "json"
      ls_filter = "JSON Files (*.json),*.json"
   case "pdf"
      ls_extn = "pdf"
      ls_filter = "PDF Files (*.pdf),*.pdf"
   case "psr"
      ls_extn = "psr"
      ls_filter = "PSR Files (*.psr),*.psr"
   case "text"
      ls_extn = "txt"
      ls_filter = "Text Files (*.txt),*.txt"
   case "xml"
      ls_extn = "xml"
      ls_filter = "XML Files (*.xml),*.xml"
end choose

li_rc = GetFileSaveName(ls_title, ls_pathname, &
               ls_filename, ls_extn, ls_filter, ls_initdir)
If li_rc = 1 Then
   choose case Lower(as_SaveAsType)
      case "excel8"
         dw_report.SaveAs(ls_pathname, Excel8!, True)
         Return
      case "excel12"
         dw_report.SaveAs(ls_pathname, XLSX!, True)
         Return
      case "html"
         ls_data = dw_report.of_ExportHTML()
      case "json"
         ls_data = dw_report.of_ExportJSON()
      case "pdf"
         dw_report.SaveAs(ls_pathname, PDF!, True)
         Return
      case "psr"
         dw_report.SaveAs(ls_pathname, PSReport!, True)
         Return
      case "text"
         ls_data = dw_report.of_ExportText()
      case "xml"
         ls_data = dw_report.of_ExportXML()
      case else
         Return
   end choose
   li_fnum = FileOpen(ls_pathname, LineMode!, Write!, Shared!, Replace!)
   If li_fnum > 0 Then
      FileWriteEx(li_fnum, ls_data)
      FileClose(li_fnum)
   End If
End If

end subroutine

on w_sheet.create
if this.MenuName = "m_sheet" then this.MenuID = create m_sheet
this.dw_report=create dw_report
this.Control[]={this.dw_report}
end on

on w_sheet.destroy
if IsValid(MenuID) then destroy(MenuID)
destroy(this.dw_report)
end on

event open;w_sheet lw_sheet

is_filename = Message.StringParm

// set dataobject to be file
dw_report.SetRedraw(False)
dw_report.DataObject = is_filename
dw_report.Modify("DataWindow.Print.Preview=Yes")
dw_report.SetRedraw(True)
dw_report.SetFocus()

this.Title = is_filename

// add file to list
gn_mru.of_AddToList(is_filename)

// add items to menu
gw_frame.wf_RecentFiles()
this.wf_RecentFiles()

// reset recent files on all sheets
lw_sheet = gw_frame.GetFirstSheet()
do while IsValid(lw_sheet)
   lw_sheet.wf_RecentFiles()
   lw_sheet = gw_frame.GetNextSheet(lw_sheet)
loop

SetPointer(Arrow!)

end event

event resize;dw_report.Resize(newwidth, newheight)

end event

event close;// update the menu items
gw_frame.Post wf_RecentFiles()

end event

type dw_report from u_datawindow within w_sheet
integer width = 2528
integer height = 1284
integer taborder = 10
boolean vscrollbar = true
boolean border = false
end type

event constructor;this.SetTransObject(sqlca)

end event