*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="_reports.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS _output AS _container OF "_base.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="cusWindows" UniqueID="" Timestamp="" />
#INCLUDE "_reports.h"
*
*m: calias_assign
*m: cdestination_assign
*m: cdisplayfontname_assign
*m: coption_assign
*m: copytable && Exports a table.
*m: creport_assign
*m: cscope_assign
*m: ctextfile_assign
*m: cvfpprintername_access
*m: genhtml && Generates HTML output.
*m: lpreventsourcechanges_assign
*m: output && This is main method that is called to generate output based on settings.
*m: outputtoscreen && Outputs to screen.
*m: printlist
*m: printreport
*m: setdestinations && Controls available output destinations.
*m: setoptions && Drives options for output destinations.
*m: setoutputprinter
*m: setvfpprinter
*p: calias && This is the data source that will be used for non-report/label output formats. This property will default to the current alias, if any.
*p: cdestination && This is list of available destinations which changes dynamically depending on whether cReport, cAlias, or both, are filled out. The list of available destinations is stored in aDestinations[] array.
*p: cdisplayfontname && This is used for on-screen display of output, for example in a BROWSE or when the _Showtext class is instantiated for text display.
*p: cfieldlist && A comma-delimited list of fields or expressions. It affects only direct data sources (BROWSEs and LISTs).
*p: chtmlclass && Optional HTML class and classlib passed to _GENHTML.
*p: chtmlstyleid && Optional HTML style passed to _GENHTML.
*p: coption && The list of available options which changes dynamically to fit the current cDestination.
*p: creport && This is a label or report form suitable for VFP-formatted output.
*p: cscope && This can be used to specify a macro-expanded string to be added to the command that executes the actual output. It must be a legal scope such as "FOR ".
*p: ctextfile && This is the file name for all output destinations that go to disk, which include text files, printer-image files, and export formats.
*p: cvfpprintername && This is the name of the current VFP default printer as distinct from the Windows default printer.
*p: laddsourcenametodropdown && Affects how some destinations show in the aDestinations array.
*p: lpreventsourcechanges && Prevents source changes for cAlias or cReport.
*a: adestinations[1,2] && Array of destinations.
*a: aoptions[1,2] && Array of destination output options.
*
*
BackStyle = 0
BorderWidth = 0
calias = ("")
cdestination = ("PRINTREPORT")
cdisplayfontname = ("Courier New")
cfieldlist = ("")
chtmlclass =
chtmlstyleid = ("")
coption = ("WINDEFAULT")
creport = ("")
cscope = ("")
ctextfile = ("")
cvfpprintername = ("")
Height = 27
laddsourcenametodropdown = .T.
Name = "_output"
Width = 33
*
ADD OBJECT 'cusWindows' AS _windowhandler WITH ;
Left = 0, ;
Name = "cusWindows", ;
Top = 0
*< END OBJECT: ClassLib="_ui.vcx" BaseClass="custom" />
PROCEDURE calias_assign
LPARAMETERS tcNewVal
LOCAL lcNewVal, llSame
IF VARTYPE(tcNewVal) # "C" OR EMPTY(tcNewVal) OR NOT USED(tcNewVal)
lcNewVal = ""
ELSE
lcNewVal = ALLTR(PROPER(tcNewVal))
ENDIF
llSame = (THIS.cAlias == lcNewVal)
THIS.cAlias = lcNewVal
IF NOT llSame
THIS.SetDestinations()
ENDIF
ENDPROC
PROCEDURE cdestination_assign
LPARAMETERS tcNewVal
IF VARTYPE(tcNewVal) # "C"
THIS.cDestination = THIS.aDestinations[1,2]
ELSE
THIS.cDestination = UPPER(ALLTRIM(tcNewVal))
ENDIF
THIS.SetDestinations()
ENDPROC
PROCEDURE cdisplayfontname_assign
LPARAMETERS tcNewVal
IF VARTYPE(tcNewVal) # "C" OR EMPTY(tcNewVal)
RETURN
ENDIF
LOCAL laTemp[1], lcVal, lcFont
lcVal = ALLTR(tcNewVal)
IF NOT EMPTY(AFONT(laTemp))
FOR EACH lcFont IN laTemp
IF UPPER(lcVal) == UPPER(lcFont)
THIS.cDisplayFontName = lcVal
EXIT
ENDIF
ENDFOR
ENDIF
ENDPROC
PROCEDURE coption_assign
LPARAMETERS tcNewVal
IF VARTYPE(tcNewVal) # "C"
THIS.cOption = THIS.aOptions[1,2]
ELSE
THIS.cOption = UPPER(ALLTRIM(tcNewVal))
ENDIF
ENDPROC
PROCEDURE copytable && Exports a table.
LOCAL lcClauses, lcFile
IF .F. && NOT EMPTY(THIS.cFieldList)
* the fields list cannot be trusted for COPY TO,
* because expressions in the fields list are
* not likely to work.
* We could make it the developer's responsibility to
* set the FIELDS list properly before
* calling this option/"EXPORT" as destination,
* but it is just as easy for the developer
* to use an alias with the fields already formatted
* and chosen, either with a SELECT or a SET FIELDS
* so it's better not to leave this in place.
lcClauses = STRTRAN(THIS.cFieldList,CHR(13),",")
lcClauses = " FIELDS "+lcClauses
ELSE
lcClauses = ""
ENDIF
IF NOT EMPTY(THIS.cScope)
lcClauses = lcClauses + " " + THIS.cScope
ENDIF
lcClauses = lcClauses + " TYPE "+THIS.cOption
lcFile = ALLTRIM(THIS.cTextFile)
DO CASE
CASE EMPTY(lcFile)
lcFile = "R"+SYS(2015)
CASE RIGHT(lcFile,1) = "\"
lcFile = lcFile + "R"+SYS(2015)
OTHERWISE
* we're okay
ENDCASE
IF AT(".",lcFile) = 0
*&* change in VFP 7 -- extension for delimited files
*&* explicitly set
DO CASE
CASE THIS.cOption = "DELIMITED"
lcFile = lcFile + ".ASC"
CASE LEN(THIS.cOption) > 3
lcFile = lcFile + ".DBF"
OTHERWISE
lcFile = lcFile + "."+THIS.cOption
ENDCASE
ENDIF
lcFile = FULLPATH(lcFile)
THIS.cTextFile = lcFile
COPY TO (lcFile) &lcClauses
ENDPROC
PROCEDURE creport_assign
LPARAMETERS tcNewVal
LOCAL lcNewVal, llSame
IF VARTYPE(tcNewVal) # "C" OR EMPTY(tcNewVal)
lcNewVal = ""
ELSE
lcNewVal = ALLTR(tcNewVal)
IF AT(".",lcNewVal) = 0
lcNewVal = lcNewVal + ".FRX"
ENDIF
IF NOT FILE(lcNewVal)
lcNewVal = FULLPATH(lcNewVal)
IF NOT FILE(lcNewVal)
IF INLIST(_VFP.Startmode,0,4)
?? CHR(7)
WAIT WINDOW NOWAIT LEFTC(OUTPUT_REPORT_NOT_FOUND_LOC,254)
ENDIF
lcNewVal = ""
ENDIF
ENDIF
ENDIF
llSame = (THIS.cReport == lcNewVal)
THIS.cReport = lcNewVal
IF NOT llSame
THIS.SetDestinations()
ENDIF
ENDPROC
PROCEDURE cscope_assign
LPARAMETERS tvNewVal
IF VARTYPE(tvNewVal) = "C"
THIS.cScope = tvNewVal
ENDIF
ENDPROC
PROCEDURE ctextfile_assign
LPARAMETERS tvNewVal
IF VARTYPE(tvNewVal) = "C"
LOCAL liPos, lcVal
liPos = RAT("\",tvNewVal)
IF liPos > 0
IF NOT DIRECTORY(LEFT(tvNewVal,liPos))
lcVal = SUBSTR(tvNewVal,liPos+1)
ELSE
lcVal = tvNewVal
ENDIF
ELSE
liPos = AT(":",tvNewVal)
IF liPos > 0 AND ;
(liPos = LEN(tvNewVal) OR ;
SUBSTR(tvNewVal,liPos+1,1) # "\" )
lcVal = STUFF(tvNewVal,liPos+1,0,"\")
ELSE
lcVal = tvNewVal
ENDIF
liPos = RAT("\",lcVal)
IF NOT DIRECTORY(LEFT(lcVal,liPos))
lcVal = SUBSTR(lcVal, liPos+1)
ENDIF
ENDIF
THIS.cTextfile = lcVal
ENDIF
ENDPROC
PROCEDURE cvfpprintername_access
*!* this is the VF 5 code replaced by the new RETURN line!
*!* IF EMPTY(THIS.cVFPPrinterName)
*!* LOCAL lcAlias, liSelect, liLine, lcLine, liMemoWidth, lcContents, lcFieldsList
*!*
*!* IF SET("FIELDS") = "ON"
*!* lcFieldsList = SET("FIELDS",1)
*!* SET FIELDS OFF
*!* ENDIF
*!*
*!* liMemoWidth = SET("MEMOWIDTH")
*!* liSelect = SELECT()
*!* lcAlias = "C"+SYS(2015)
*!* SELECT 0
*!* SET MEMOWIDTH TO 1024
*!* CREATE CURSOR (lcAlias) (onefield l)
*!* CREATE REPORT (lcAlias) FROM (lcAlias)
*!* USE IN (lcAlias)
*!* USE (lcAlias+".FRX") ALIAS (lcAlias)
*!* lcContents = Expr
*!* USE IN (lcAlias)
*!* ERASE (lcAlias+".FRX") NORECYCLE
*!* ERASE (lcAlias+".FRT") NORECYCLE
*!* liLine = ATCLINE("DEVICE=",lcContents)
*!* IF EMPTY(liLine)
*!* liLine = ATCLINE("DEVICE =",lcContents)
*!* ENDIF
*!* lcLine = MLINE(lcContents,liLine)
*!* SELECT (liSelect)
*!* SET MEMOWIDTH TO liMemoWidth
*!* THIS.cVFPPrinterName = ALLTR(SUBSTRC(lcLine,AT("=",lcLine)+1))
*!*
*!* IF NOT EMPTY(lcFieldsList)
*!* SET FIELDS ON
*!* SET FIELDS TO
*!* SET FIELDS TO &lcFieldsList
*!* ENDIF
*!* ENDIF
*!* RETURN THIS.cVFPPrinterName
RETURN SET("PRINTER",3)
ENDPROC
PROCEDURE genhtml && Generates HTML output.
ASSERT (NOT EMPTY(THIS.cReport+THIS.cAlias))
ASSERT IIF(NOT EMPTY(THIS.cReport), FILE(THIS.cReport), .T.)
ASSERT IIF(NOT EMPTY(THIS.cAlias), USED(THIS.cAlias), .T.)
LOCAL lcFile, lvClass,liShow, lvDummy, lcScope, lvStyle, lcSource
IF (EMPTY(_GENHTML) OR ;
(NOT (FILE(_GENHTML) OR FILE(_GENHTML+".FXP"))) )
_GENHTML = ""
RETURN
ENDIF
IF VARTYPE(THIS.cHTMLClass) = "C" AND (NOT EMPTY(THIS.cHTMLClass))
lvClass = THIS.cHTMLClass
ENDIF
IF VARTYPE(THIS.cHTMLStyleID) = "C" AND (NOT EMPTY(THIS.cHTMLStyleID))
lvStyle = THIS.cHTMLStyleID
ENDIF
IF VARTYPE(THIS.cScope) = "C" AND (NOT EMPTY(THIS.cScope))
lcScope = THIS.cScope
ELSE
lcScope = "ALL"
ENDIF
DO CASE
CASE THIS.cOption = "VIEWSOURCE"
liShow = 1
CASE THIS.cOption = "WEBVIEW"
liShow = 2
OTHERWISE
liShow = 0
ENDCASE
lcFile = ALLTRIM(THIS.cTextFile)
DO CASE
CASE EMPTY(lcFile)
lcFile = "R"+SYS(2015)
CASE RIGHT(lcFile,1) = "\"
lcFile = lcFile + "R"+SYS(2015)
OTHERWISE
* we're okay
ENDCASE
IF AT(".",lcFile) = 0
lcFile = lcFile + ".HTM"
lcFile = FULLPATH(lcFile)
ENDIF
THIS.cTextFile = lcFile
IF EMPTY(THIS.cReport)
DO CASE
CASE EMPTY(THIS.cFieldList)
lcSource = THIS.cAlias
CASE CHR(13) $ THIS.cFieldList
lcSource = THIS.cAlias+CHR(13)+THIS.cFieldList
OTHERWISE
lcSource = THIS.cAlias+","+THIS.cFieldList
ENDCASE
DO (_GENHTML) WITH lcFile, lcSource, liShow, lvDummy, lvStyle, lcScope, lvClass
ELSE
DO (_GENHTML) WITH lcFile, THIS.cReport, liShow, lvDummy, lvStyle, lcScope, lvClass
ENDIF
* GENHTML Parameter list:
* tcOutFile: Output file name (defaults to .HTM extension).
* tvSource: Source file name, alias, or object.
* tvSource can contain alias delimited by either CR's or commas
* from a delimited list of fields to be generated (field list
* using same delimiter as separator from alias)
* tnShow: 0/Empty = Generate output file only.
* 1 = Create output file and view generated source file.
* 2 = Create output file and show generated file in internet browser.
* 3 = Create _oHTML object.
* 4 = Create _oHTML object only, no prompt for output file, no prompt for
* source file.
* tvIELink: Create link to InternetExplorer.Application using automation.
* tcHTMLStyleID Style from style table
* tcHTMLScope scope clause
* tcHTMLClass: delimited string holding Class, Classlib, IN EXE/APP for instantiated for HTML object.
ENDPROC
PROCEDURE Init
IF NOT DODEFAULT()
RETURN .F.
ENDIF
THIS.SetDestinations()
IF EMPTY(THIS.cAlias)
THIS.cAlias = ALIAS()
ENDIF
ENDPROC
PROCEDURE lpreventsourcechanges_assign
LPARAMETERS m.vNewVal
THIS.lpreventsourcechanges = m.vNewVal
THIS.SetDestinations()
ENDPROC
PROCEDURE output && This is main method that is called to generate output based on settings.
LOCAL liSelect
IF NOT EMPTY(THIS.cAlias)
liSelect = SELECT()
SELECT (THIS.cAlias)
ENDIF
DO CASE
CASE INLIST("#"+THIS.cDestination+"#","#PRINTREPORT#","#PRINTFILE#","#TEXTFILE#")
THIS.PrintReport()
CASE THIS.cDestination = "HTMLFILE"
THIS.GenHTML()
CASE THIS.cDestination = "PRINTLIST"
THIS.PrintList()
CASE THIS.cDestination = "SCREEN"
THIS.OutputToScreen()
CASE THIS.cDestination = "EXPORT"
THIS.CopyTable()
ENDCASE
IF NOT EMPTY(liSelect)
SELECT (liSelect)
ENDIF
ENDPROC
PROCEDURE outputtoscreen && Outputs to screen.
ASSERT EMPTY(THIS.cReport) OR ;
(VARTYPE(THIS.cReport) = "C" AND ;
(FILE(THIS.cReport) OR FILE(THIS.cReport+".FRX")))
ASSERT EMPTY(THIS.cAlias) OR ;
(VARTYPE(THIS.cAlias) = "C" AND ;
USED(THIS.cAlias))
ASSERT EMPTY(THIS.cFieldList) OR ;
VARTYPE(THIS.cFieldList) = "C"
IF EMPTY(THIS.cReport) AND ;
INLIST("#"+THIS.cOption+"#","#ASCII#","#GRAPHICAL#")
RETURN .F.
ENDIF
IF EMPTY(THIS.cAlias) AND ;
INLIST("#"+THIS.cOption+"#","#BROWSE#","#LIST#") AND ;
EMPTY(ALIAS())
RETURN .F.
ENDIF
LOCAL lcWindow, lcName, loWindow, lcClauses, ;
lcFileName, loTopForm, llInFoxFrame, ;
liPos, lcChar, liFieldNo, lcExpr
* the saving and restoring of calling windows
* is important to deal with modal calling windows:
lcWindow = WONTOP()
loTopForm = THIS.cusWindows.GetCurrentTopFormRef()
llInFoxFrame = (UPPER(loTopForm.Name) == "SCREEN")
IF INLIST("#"+THIS.cOption+"#","#BROWSE#","#GRAPHICAL#")
lcName = "W"+SYS(2015)
*!* DEFINE WINDOW (lcName) ;
*!* FROM 0,0 TO SROWS(), SCOLS() ;
*!* SYSTEM FLOAT GROW ZOOM CLOSE FONT (THIS.cDisplayFontName) ;
*!* TITLE OUTPUT_SCREEN_PREVIEW_LOC ;
*!* NAME (lcName)
DEFINE WINDOW (lcName) ;
AT 0,0 SIZE 20,20 ;
SYSTEM FLOAT GROW ZOOM CLOSE FONT (THIS.cDisplayFontName) ;
TITLE OUTPUT_SCREEN_PREVIEW_LOC ;
NAME (lcName) IN WINDOW (loTopForm.Name)
loWindow = EVAL(lcName)
loWindow.FontName = THIS.cDisplayFontName
loWindow.Height = (loTopForm.Height * 2)/3
loWindow.Width = (loTopForm.Width * 2)/3
ELSE
LOCAL lcFile
lcFile = FULLPATH(THIS.ClassLibrary)
loWindow = NEWOBJECT("_ShowText", lcFile)
IF TYPE("loWindow.Name") = "C"
lcName = loWindow.Name
loWindow.lSuppressCaptionChange = .T.
loWindow.cFixedFontName = THIS.cDisplayFontName
loWindow.SetFonts()
ELSE
RETURN .F.
ENDIF
ENDIF
loWindow.Icon = loTopForm.Icon
IF INLIST("#"+THIS.cOption+"#","#BROWSE#","#LIST#") AND ;
NOT EMPTY(THIS.cFieldList)
IF THIS.cOption == "BROWSE"
* take care of the fact that calculated fields
* will need fieldaliases in a browse:
liFieldNo = 1
lcExpr = ""
IF CHR(13) $ THIS.cFieldList
LOCAL ARRAY laFields[1]
lcClauses = ""
FOR liFieldNo = 2 TO ALINES(laFields,THIS.cFieldList, .T.)
lcClauses = lcClauses + ;
",Field"+ALLTR(STR(liFieldNo))+"=" + ;
laFields[liFieldNo]
ENDFOR
lcClauses = "Field1="+laFields[1]+lcClauses
ELSE
lcClauses = "Field1="
FOR liPos = 1 TO LEN(THIS.cFieldList)
lcChar = SUBSTR(THIS.cFieldList,liPos,1)
IF lcChar = ","
IF TYPE(lcExpr) # "U"
lcExpr = ""
liFieldNo = liFieldNo + 1
lcClauses = lcClauses + ",Field"+ALLTR(STR(liFieldNo))+"="
ELSE
lcExpr = lcExpr + ","
lcClauses = lcClauses + ","
ENDIF
ELSE
lcExpr = lcExpr + lcChar
lcClauses = lcClauses + lcChar
ENDIF
ENDFOR
ENDIF
ELSE
lcClauses = STRTRAN(THIS.cFieldList,CHR(13),",")
ENDIF
lcClauses = " FIELDS "+lcClauses
ELSE
lcClauses = ""
ENDIF
IF INLIST("#"+THIS.cOption+"#","#LIST#","#ASCII#")
lcFileName = "R"+SYS(2015)+".TXT"
ENDIF
IF THIS.cOption == "BROWSE"
lcClauses = lcClauses + " NOEDIT NODELETE NOAPPEND NOMENU "
ENDIF
IF THIS.cOption == "BROWSE" OR ;
THIS.cOption == "GRAPHICAL"
lcClauses = lcClauses+ " WINDOW (lcName) IN WINDOW (loTopForm.Name)"
ENDIF
IF NOT EMPTY(THIS.cScope)
lcClauses = lcClauses + " " + THIS.cScope
ENDIF
DO CASE
CASE THIS.cOption == "ASCII"
_ASCIICOLS = 80
_ASCIIROWS = 63
REPORT FORM (THIS.cReport) ASCII ;
TO FILE (lcFileName) NOCONSOLE &lcClauses
loWindow.cSourceFile = lcFileName
loWindow.Show(1)
ERASE (lcFileName) NORECYCLE
CASE THIS.cOption == "GRAPHICAL"
ZOOM WINDOW (lcName) MAX
IF SET("REPORTB") = 90 AND ATC("NOWAIT",lcClauses) = 0
lcClauses = lcClauses + " NOWAIT "
ENDIF
REPORT FORM (THIS.cReport) PREVIEW &lcClauses
IF ATC(" NOWAIT ",lcClauses) > 0 AND ;
TYPE("THISFORM") = "O" AND ;
THISFORM.WindowType = 1 && modal
RELEASE THISFORM
ENDIF
CASE THIS.cOption == "LIST"
LIST OFF TO FILE (lcFileName) &lcClauses NOCONSOLE
loWindow.cSourceFile = lcFileName
loWindow.Show(1)
ERASE (lcFileName) NORECYCLE
CASE THIS.cOption == "BROWSE"
BROWSE &lcClauses
OTHERWISE
* ?
ENDCASE
*!* IF THIS.cOption # "GRAPHICAL"
*!* * report graphical preview takes special
*!* * sequence of window handling, in the CASE above
IF NOT EMPTY(lcWindow)
ACTIVATE WINDOW (lcWindow) SAME
ENDIF
*!* ENDIF
RELEASE WINDOW (lcName)
RETURN
ENDPROC
PROCEDURE printlist
LOCAL lcClauses
THIS.SetOutputPrinter()
IF NOT EMPTY(THIS.cFieldList)
lcClauses = STRTRAN(THIS.cFieldList,CHR(13),",")
lcClauses = " FIELDS "+lcClauses
ELSE
lcClauses = ""
ENDIF
IF NOT EMPTY(THIS.cScope)
lcClauses = lcClauses + " " + THIS.cScope
ENDIF
LIST OFF &lcClauses TO PRINT NOCONSOLE
ENDPROC
PROCEDURE printreport
ASSERT (NOT EMPTY(THIS.cReport)) AND FILE(THIS.cReport)
* note: the HTML portion of this method is not currently
* in use, we're going through _GENHTML on HTML output
* for either alias or report. However, REPORT FORM ... TO HTML
* might be added to the language at some point
LOCAL lcClauses, lcDestination,lcFile
IF NOT INLIST(THIS.cDestination,"TEXTFILE","HTMLFILE")
THIS.SetOutputPrinter()
ENDIF
IF NOT EMPTY(THIS.cScope)
lcClauses = THIS.cScope
ELSE
lcClauses = ""
ENDIF
IF THIS.cDestination # "PRINTREPORT"
lcFile = ALLTRIM(THIS.cTextFile)
DO CASE
CASE EMPTY(lcFile)
lcFile = "R"+SYS(2015)
CASE RIGHT(lcFile,1) = "\"
lcFile = lcFile+ "R"+SYS(2015)
OTHERWISE
* we're okay
ENDCASE
IF AT(".",lcFile) = 0
DO CASE
CASE THIS.cDestination = "PRINTFILE"
lcFile = lcFile + ".PRN"
CASE THIS.cDestination = "HTMLFILE"
lcFile = lcFile + ".HTM"
OTHERWISE
lcFile = lcFile + ".TXT"
ENDCASE
ENDIF
lcFile = FULLPATH(lcFile)
ENDIF
DO CASE
CASE THIS.cDestination = "TEXTFILE"
lcDestination = " TO FILE '"+ lcFile +"' ASCII "
CASE THIS.cDestination = "PRINTFILE"
lcDestination = " TO FILE "+ lcFile +" "
CASE THIS.cDestination = "HTMLFILE"
lcDestination = " TO FILE '"+ lcFile +"' HTML "
OTHERWISE
lcDestination = " TO PRINT "
ENDCASE
THIS.cTextFile = lcFile
IF ".LBX" $ UPPER(THIS.cReport)
* not that I think it makes any difference!!
LABEL FORM (THIS.cReport) &lcClauses &lcDestination NOCONSOLE
ELSE
REPORT FORM (THIS.cReport) &lcClauses &lcDestination NOCONSOLE
ENDIF
ENDPROC
PROCEDURE setdestinations && Controls available output destinations.
LOCAL liPrintReport, liPrintList, liScreen, liTextFile, ;
liHTMLFile, liPrintFile, liExport, ;
lcSourceReport, lcSourceAlias, lcSourceBoth
STORE 0 TO liPrintReport, liPrintList, liScreen, liTextFile, ;
liHTMLFile, liPrintFile, liExport
IF (EMPTY(_GENHTML) OR ;
(NOT (FILE(_GENHTML) OR FILE(FORCEEXT(_GENHTML,".FXP")))) )
_GENHTML = ""
ENDIF
IF THIS.lAddSourceNameToDropDown
lcSourceReport = " ("+PROPER(JUSTFNAME(THIS.cReport))+")"
lcSourceAlias = " ("+THIS.cAlias+")"
lcSourceBoth = " ("+PROPER(JUSTFNAME(THIS.cReport))+","+THIS.cAlias+")"
ELSE
STORE "" TO lcSourceReport, lcSourceAlias, lcSourceBoth
ENDIF
DO CASE
CASE (NOT THIS.lPreventSourceChanges) OR ;
(NOT EMPTY(THIS.cAlias)) AND (NOT EMPTY(THIS.cReport))
IF EMPTY(_GENHTML)
DIME THIS.aDestinations[6,2]
ELSE
DIME THIS.aDestinations[7,2]
THIS.aDestinations[7,2] = "HTMLFILE"
liHTMLFile = 7
ENDIF
THIS.aDestinations[1,2] = "PRINTREPORT"
liPrintReport = 1
THIS.aDestinations[2,2] = "PRINTLIST"
liPrintList = 2
THIS.aDestinations[3,2] = "SCREEN"
liScreen = 3
THIS.aDestinations[4,2] = "TEXTFILE"
liTextFile = 4
THIS.aDestinations[5,2] = "PRINTFILE"
liPrintFile = 5
THIS.aDestinations[6,2] = "EXPORT"
liExport = 6
CASE (NOT EMPTY(THIS.cAlias))
IF EMPTY(_GENHTML)
DIME THIS.aDestinations[3,2]
ELSE
DIME THIS.aDestinations[4,2]
THIS.aDestinations[4,2] = "HTMLFILE"
liHTMLFile = 4
ENDIF
THIS.aDestinations[1,2] = "PRINTLIST"
liPrintList = 1
THIS.aDestinations[2,2] = "SCREEN"
liScreen = 2
THIS.aDestinations[3,2] = "EXPORT"
liExport = 3
CASE (NOT EMPTY(THIS.cReport))
IF EMPTY(_GENHTML)
DIME THIS.aDestinations[4,2]
ELSE
DIME THIS.aDestinations[5,2]
THIS.aDestinations[5,2] = "HTMLFILE"
liHTMLFile = 5
ENDIF
THIS.aDestinations[1,2] = "PRINTREPORT"
liPrintReport = 1
THIS.aDestinations[2,2] = "SCREEN"
liScreen = 2
THIS.aDestinations[3,2] = "TEXTFILE"
liTextFile = 3
THIS.aDestinations[4,2] = "PRINTFILE"
liPrintFile = 4
OTHERWISE
* preventing source changes and both are empty --
* don't bother, but have to show something in the dialog!
liScreen = 1
IF NOT EMPTY(_GENHTML)
liHTMLFile = 2
ENDIF
ENDCASE
IF EMPTY(THIS.cReport)
IF liPrintReport > 0
THIS.aDestinations[liPrintReport,1] = "\"+OUTPUT_PRINT_REPORT_LOC
THIS.aDestinations[liTextFile,1] = "\"+OUTPUT_TEXTFILE_LOC
THIS.aDestinations[liPrintFile,1] = "\"+OUTPUT_PRINTFILE_LOC
ENDIF
ELSE
THIS.aDestinations[liPrintReport,1] = OUTPUT_PRINT_REPORT_LOC + lcSourceReport
THIS.aDestinations[liTextFile,1] = OUTPUT_TEXTFILE_LOC + lcSourceReport
THIS.aDestinations[liPrintFile,1] = OUTPUT_PRINTFILE_LOC + lcSourceReport
ENDIF
IF EMPTY(THIS.cAlias)
IF liPrintList > 0
THIS.aDestinations[liPrintList,1] = "\"+OUTPUT_PRINT_LIST_LOC
THIS.aDestinations[liExport,1] = "\"+OUTPUT_EXPORT_LOC
ENDIF
ELSE
THIS.aDestinations[liPrintList,1] = OUTPUT_PRINT_LIST_LOC + lcSourceAlias
THIS.aDestinations[liExport,1] = OUTPUT_EXPORT_LOC + lcSourceAlias
ENDIF
DO CASE
CASE EMPTY(THIS.cAlias) AND EMPTY(THIS.cReport)
THIS.aDestinations[liScreen,1] = "\"+OUTPUT_SCREEN_LOC
IF NOT EMPTY(_GENHTML)
THIS.aDestinations[liHTMLFile,1] = "\"+OUTPUT_HTMLFILE_LOC
ENDIF
CASE EMPTY(THIS.cAlias)
THIS.aDestinations[liScreen,1] = OUTPUT_SCREEN_LOC + lcSourceReport
IF NOT EMPTY(_GENHTML)
THIS.aDestinations[liHTMLFile,1] = OUTPUT_HTMLFILE_LOC + lcSourceReport
ENDIF
CASE EMPTY(THIS.cReport)
THIS.aDestinations[liScreen,1] = OUTPUT_SCREEN_LOC + lcSourceAlias
IF NOT EMPTY(_GENHTML)
THIS.aDestinations[liHTMLFile,1] = OUTPUT_HTMLFILE_LOC + lcSourceAlias
ENDIF
OTHERWISE
THIS.aDestinations[liScreen,1] = OUTPUT_SCREEN_LOC + lcSourceBoth
IF NOT EMPTY(_GENHTML)
THIS.aDestinations[liHTMLFile,1] = OUTPUT_HTMLFILE_LOC + lcSourceBoth
ENDIF
ENDCASE
ENDPROC
PROCEDURE setoptions && Drives options for output destinations.
DO CASE
CASE INLIST("#"+THIS.cDestination+"#","#PRINTREPORT#", "#PRINTLIST#", "#PRINTFILE#")
DIME THIS.aOptions[3,2]
THIS.aOptions[1,1] = OUTPUT_PRINT_OPTIONS_WINDEFAULT_LOC + ;
" ("+PROPER(SET("PRINT",2))+")"
THIS.aOptions[2,1] = OUTPUT_PRINT_OPTIONS_VFPDEFAULT_LOC + ;
" ("+THIS.cVFPPrinterName+")"
THIS.aOptions[3,1] = OUTPUT_PRINT_OPTIONS_SETVFPDEFAULT_LOC
THIS.aOptions[1,2] = "WINDEFAULT"
THIS.aOptions[2,2] = "VFPDEFAULT"
THIS.aOptions[3,2] = "SETVFPDEFAULT"
CASE THIS.cDestination == "SCREEN"
LOCAL liGraphical, liAscii, liBrowse, liList
STORE 0 TO liGraphical, liAscii, liBrowse, liList
IF (NOT THIS.lPreventSourceChanges) OR ;
(NOT EMPTY(THIS.cAlias)) AND (NOT EMPTY(THIS.cReport))
DIME THIS.aOptions[4,2]
THIS.aOptions[1,2] = "GRAPHICAL"
liGraphical = 1
THIS.aOptions[2,2] = "ASCII"
liAscii = 2
THIS.aOptions[3,2] = "BROWSE"
liBrowse = 3
THIS.aOptions[4,2] = "LIST"
liList = 4
ELSE
DIME THIS.aOptions[2,2]
IF EMPTY(THIS.cAlias)
THIS.aOptions[1,2] = "GRAPHICAL"
liGraphical = 1
THIS.aOptions[2,2] = "ASCII"
liAscii = 2
ELSE
THIS.aOptions[1,2] = "BROWSE"
liBrowse = 1
THIS.aOptions[2,2] = "LIST"
liList = 2
ENDIF
ENDIF
IF EMPTY(THIS.cReport)
IF NOT THIS.lPreventSourceChanges
THIS.aOptions[liGraphical,1] = "\"+OUTPUT_SCREEN_GRAPHICAL_LOC
THIS.aOptions[liAscii,1] = "\"+OUTPUT_SCREEN_ASCII_LOC
ENDIF
ELSE
THIS.aOptions[liGraphical,1] = OUTPUT_SCREEN_GRAPHICAL_LOC
THIS.aOptions[liAscii,1] = OUTPUT_SCREEN_ASCII_LOC
ENDIF
IF EMPTY(THIS.cAlias)
IF NOT THIS.lPreventSourceChanges
THIS.aOptions[liBrowse,1] = "\"+ OUTPUT_SCREEN_BROWSE_LOC
THIS.aOptions[liList,1] = "\"+OUTPUT_SCREEN_LIST_LOC
ENDIF
ELSE
THIS.aOptions[liBrowse,1] = OUTPUT_SCREEN_BROWSE_LOC
THIS.aOptions[liList,1] = OUTPUT_SCREEN_LIST_LOC
ENDIF
CASE THIS.cDestination == "TEXTFILE"
* we don't use any items from the options array
CASE THIS.cDestination == "HTMLFILE"
DIME THIS.aOptions[3,2]
IF EMPTY(THIS.cAlias) AND EMPTY(THIS.cReport)
THIS.aOptions[1,1] = "\"+OUTPUT_HTML_FILEONLY_LOC
THIS.aOptions[2,1] = "\"+OUTPUT_HTML_VIEWSOURCE_LOC
THIS.aOptions[3,1] = "\"+OUTPUT_HTML_WEBVIEW_LOC
ELSE
THIS.aOptions[1,1] = OUTPUT_HTML_FILEONLY_LOC
THIS.aOptions[2,1] = OUTPUT_HTML_VIEWSOURCE_LOC
THIS.aOptions[3,1] = OUTPUT_HTML_WEBVIEW_LOC
ENDIF
THIS.aOptions[1,2] = "FILEONLY"
THIS.aOptions[2,2] = "VIEWSOURCE"
THIS.aOptions[3,2] = "WEBVIEW"
CASE THIS.cDestination == "EXPORT"
DIME THIS.aOptions[10,2]
* THIS.aOptions[1,1] = OUTPUT_EXPORT_EXCEL97
* THIS.aOptions[1,2] = "XL8"
THIS.aOptions[1,1] = OUTPUT_EXPORT_EXCEL5
THIS.aOptions[1,2] = "XL5"
THIS.aOptions[2,1] = OUTPUT_EXPORT_EXCEL2
THIS.aOptions[2,2] = "XLS"
THIS.aOptions[3,1] = OUTPUT_EXPORT_FOX2X
THIS.aOptions[3,2] = "FOX2X"
THIS.aOptions[4,1] = OUTPUT_EXPORT_FOXPLUS
THIS.aOptions[4,2] = "FOXPLUS"
THIS.aOptions[5,1] = OUTPUT_EXPORT_FIXEDLEN
THIS.aOptions[5,2] = "SDF"
THIS.aOptions[6,1] = OUTPUT_EXPORT_DELIMITED
THIS.aOptions[6,2] = "DELIMITED"
THIS.aOptions[7,1] = OUTPUT_EXPORT_LOTUS2
THIS.aOptions[7,2] = "WK1"
THIS.aOptions[8,1] = OUTPUT_EXPORT_DIF
THIS.aOptions[8,2] = "DIF"
THIS.aOptions[9,1] = OUTPUT_EXPORT_SYMPHONY
THIS.aOptions[9,2] = "WRK"
THIS.aOptions[10,1] = OUTPUT_EXPORT_CSV
THIS.aOptions[10,2] = "CSV"
ENDCASE
ENDPROC
PROCEDURE setoutputprinter
DO CASE
CASE THIS.cOption = "WINDEFAULT"
SET PRINTER TO DEFAULT
* could also be: SET PRINTER TO NAME (SET(PRINTER,2))
CASE THIS.cOption = "VFPDEFAULT"
SET PRINTER TO NAME (THIS.cVFPPrinterName)
OTHERWISE
THIS.SetVFPPrinter()
ENDCASE
ENDPROC
PROCEDURE setvfpprinter
LOCAL lcName
lcName = GETPRINTER()
SET PRINTER TO NAME (lcName)
IF INLIST("#"+THIS.cDestination+"#","#PRINTFILE#","#PRINTREPORT#","#PRINTLIST#")
THIS.aOptions[2,1] = OUTPUT_PRINT_OPTIONS_VFPDEFAULT_LOC + ;
" ("+THIS.cVFPPrinterName+")"
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS _outputchoices AS _output OF "_reports.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="txtFileName" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cboDestinations" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cboOptions" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdPutFile" UniqueID="" Timestamp="" />
#INCLUDE "_reports.h"
*
Height = 49
Name = "_outputchoices"
Width = 338
cusWindows.Name = "cusWindows"
*
ADD OBJECT 'cboDestinations' AS _combobox WITH ;
BoundColumn = 2, ;
BoundTo = .T., ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 24, ;
ItemTips = .T., ;
Left = 0, ;
Name = "cboDestinations", ;
RowSourceType = 5, ;
Style = 2, ;
TabIndex = 1, ;
Top = 0, ;
Value = (""), ;
Width = 130, ;
ZOrderSet = 1
*< END OBJECT: ClassLib="_base.vcx" BaseClass="combobox" />
ADD OBJECT 'cboOptions' AS _combobox WITH ;
BoundColumn = 2, ;
BoundTo = .T., ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 24, ;
ItemTips = .T., ;
Left = 129, ;
Name = "cboOptions", ;
RowSourceType = 5, ;
Style = 2, ;
TabIndex = 2, ;
Top = 0, ;
Width = 212, ;
ZOrderSet = 2
*< END OBJECT: ClassLib="_base.vcx" BaseClass="combobox" />
ADD OBJECT 'cmdPutFile' AS _commandbutton WITH ;
Caption = "...", ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 23, ;
Left = 315, ;
Name = "cmdPutFile", ;
TabIndex = 4, ;
TabStop = .F., ;
Top = 25, ;
Width = 23, ;
ZOrderSet = 3
*< END OBJECT: ClassLib="_base.vcx" BaseClass="commandbutton" />
ADD OBJECT 'txtFileName' AS _textbox WITH ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 23, ;
Left = 0, ;
Name = "txtFileName", ;
TabIndex = 3, ;
Top = 24, ;
Value = (SPACE(200)), ;
Width = 315, ;
ZOrderSet = 0
*< END OBJECT: ClassLib="_base.vcx" BaseClass="textbox" />
PROCEDURE Init
LOCAL loControl
THIS.cboDestinations.RowSource = "THIS.Parent.aDestinations"
THIS.cboDestinations.ControlSource = "THIS.Parent.cDestination"
THIS.cboOptions.RowSource = "THIS.Parent.aOptions"
THIS.cboOptions.ControlSource = "THIS.Parent.cOption"
THIS.txtFileName.ControlSource = "THIS.Parent.cTextFile"
IF NOT DODEFAULT()
RETURN .F.
ENDIF
IF SYSTEM_LARGEFONTS
LOCAL lcStandardFont
lcStandardFont = UPPER(DIALOG_SMALLFONT_NAME)
FOR EACH loControl IN THIS.Controls
IF PEMSTATUS(loControl,"FontName",5) AND ;
UPPER(loControl.FontName) == lcStandardFont
loControl.FontName = DIALOG_LARGEFONT_NAME
ENDIF
* Note: no recursion here.
ENDFOR
ENDIF
ENDPROC
PROCEDURE output && This is main method that is called to generate output based on settings.
DODEFAULT()
THIS.txtFileName.Refresh()
ENDPROC
PROCEDURE setdestinations && Controls available output destinations.
LOCAL liDestination, llFoundGoodRow
DODEFAULT()
THIS.cboDestinations.Requery()
IF EMPTY(THIS.cAlias+THIS.cReport)
THIS.Setall("Enabled",.F.)
ELSE
THIS.cboDestinations.Enabled = .T.
THIS.SetOptions()
ENDIF
liDestination = ASCAN(THIS.aDestinations,THIS.cDestination)
IF liDestination = 0 && can happen if we've just changed
THIS.cboDestinations.Value = THIS.aDestinations[1,2]
liDestination = 1
ELSE
liDestination = ASUBSCRIPT(THIS.aDestinations,liDestination,1)
* THIS.cboDestinations.Value = THIS.aDestinations[liDestination,2]
* not needed, since this control is bound to THIS.cDestination
ENDIF
* is this row disabled? look for a good one:
IF LEFT(THIS.aDestinations[liDestination,1],1) = "\"
FOR liDestination = 1 TO ALEN(THIS.aDestinations,1)
IF LEFT(THIS.aDestinations[liDestination,1],1) # "\"
THIS.cboDestinations.Value = THIS.aDestinations[liDestination,2]
llFoundGoodRow = .T.
EXIT
ENDIF
ENDFOR
IF NOT llFoundGoodRow
THIS.cboDestinations.Value = THIS.aDestinations[1,2]
* best we can do
ENDIF
ENDIF
ENDPROC
PROCEDURE setoptions && Drives options for output destinations.
DODEFAULT()
DO CASE
CASE INLIST("#"+THIS.cDestination+"#","#PRINTREPORT#", "#PRINTLIST#", "#PRINTFILE#")
THIS.cboOptions.Requery()
THIS.cboOptions.Value = "WINDEFAULT"
IF INLIST("#"+THIS.cDestination+"#","#PRINTFILE#","#PRINTREPORT#")
STORE (NOT EMPTY(THIS.cReport)) TO ;
THIS.cboOptions.Enabled
ELSE
STORE (NOT EMPTY(THIS.cAlias)) TO ;
THIS.cboOptions.Enabled
ENDIF
THIS.cboOptions.Value = "WINDEFAULT"
CASE THIS.cDestination == "SCREEN"
THIS.cboOptions.Requery()
THIS.cboOptions.Value = IIF(EMPTY(THIS.cReport) AND ;
(NOT EMPTY(THIS.cAlias)), ;
"BROWSE", ;
"GRAPHICAL")
STORE .T. TO THIS.cboOptions.Enabled
CASE THIS.cDestination == "TEXTFILE"
THIS.cboOptions.Enabled = .F.
THIS.cboOptions.Value = THIS.aOptions[1,2]
CASE THIS.cDestination == "HTMLFILE"
STORE (NOT EMPTY(THIS.cAlias+THIS.cReport)) TO ;
THIS.cboOptions.Enabled, ;
THIS.txtFileName.Enabled, ;
THIS.cmdPutFile.Enabled
THIS.cboOptions.Requery()
THIS.cboOptions.Value = THIS.aOptions[1,2]
CASE THIS.cDestination == "EXPORT"
STORE (NOT EMPTY(THIS.cAlias)) TO ;
THIS.cboOptions.Enabled, ;
THIS.txtFileName.Enabled, ;
THIS.cmdPutFile.Enabled
THIS.cboOptions.Requery()
THIS.cboOptions.Value = THIS.aOptions[1,2]
ENDCASE
IF INLIST("#"+THIS.cDestination+"#","#PRINTFILE#","#TEXTFILE#","#EXPORT#","#HTMLFILE#")
STORE .T. TO ;
THIS.txtFileName.Enabled, ;
THIS.cmdPutFile.Enabled
IF EMPTY(THIS.cTextFile)
THIS.txtFileName.SetFocus()
ENDIF
ELSE
STORE .F. TO ;
THIS.txtFileName.Enabled, ;
THIS.cmdPutFile.Enabled
ENDIF
IF ASCAN(THIS.aOptions,THIS.cOption) = 0
THIS.cboOptions.Value = THIS.aOptions[1,2]
ENDIF
ENDPROC
PROCEDURE cmdPutFile.Click
WAIT WINDOW NOWAIT LEFTC(OUTPUT_DESTINATION_TEXTFILE_LOC,254)
LOCAL lcExt
WITH THIS.Parent
DO CASE
CASE .cDestination == "EXPORT"
*&* change for VFP 7 -
*&* extension for Delimited
*&* files explicitly set
DO CASE
CASE .cboOptions.Value == "DELIMITED"
lcExt = "ASC"
CASE LEN(.cboOptions.Value) > 3
lcExt = "DBF"
OTHERWISE
lcExt = .cboOptions.Value
ENDCASE
CASE .cDestination == "PRINTFILE"
lcExt = "PRN"
CASE .cDestination == "HTMLFILE"
lcExt = "HTM"
OTHERWISE
lcExt = "TXT"
ENDCASE
.cTextFile = PUTFILE("",ALLTR(.cTextFile),lcExt)
IF EMPTY(.cTextFile)
.ResetToDefault("cTextFile") && otherwise it's a null string and the cursor won't stay
ENDIF
ENDWITH
THIS.Parent.txtFileName.Refresh()
WAIT CLEAR
ENDPROC
ENDDEFINE
DEFINE CLASS _outputdialog AS _form OF "_base.vcx"
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="opgScope" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="shpFrameDestinations" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cusOutput" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdOK" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdCancel" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="shpFrameSources" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblDestinations" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblSources" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cboTables" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="txtReportFile" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdGetReport" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblReports" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblData" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblScope" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblOptions" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblOutputFilename" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblOutputType" UniqueID="" Timestamp="" />
#INCLUDE "_reports.h"
*
*m: calias_access
*m: calias_assign
*m: cdestination_access
*m: cdestination_assign
*m: cdisplayfontname_access
*m: cdisplayfontname_assign
*m: cfieldlist_access
*m: cfieldlist_assign
*m: checkokbutton
*m: chtmlclass_access
*m: chtmlclass_assign
*m: chtmlstyleid_access
*m: chtmlstyleid_assign
*m: creport_access
*m: creport_assign
*m: cscope_access
*m: cscope_assign
*m: laddsourcenametodropdown_access
*m: laddsourcenametodropdown_assign
*m: lpreventscopechanges_assign
*m: lpreventsourcechanges_access
*m: lpreventsourcechanges_assign
*m: output && Wrap the cusOutput.Output method for external use
*m: respondtopermissionforscopechanges
*m: respondtopermissionforsourcechanges
*m: setkeys
*p: calias && Name of data source to output.
*p: cdestination && This is list of available destinations which changes dynamically depending on whether cReport, cAlias, or both, are filled out.
*p: cdisplayfontname && This is used for on-screen display of output, for example in a BROWSE or when the _Showtext class is instantiated for text display.
*p: cfieldlist && A comma-delimited list of fields or expressions. It affects only direct data sources (BROWSEs and LISTs).
*p: chtmlclass && Optional HTML class and classlib passed to _GENHTML.
*p: chtmlstyleid && Optional HTML style passed to _GENHTML.
*p: creport && Name of report or label to output.
*p: cscope && Legal scope expression for output.
*p: laddsourcenametodropdown && Affects how some destinations show in the aDestinations array.
*p: lpreventscopechanges && Disables ability to change output scope.
*p: lpreventsourcechanges && Prevents source changes for cAlias or cReport.
*
*
AutoCenter = .T.
BorderStyle = 2
calias = ("")
Caption = "Output"
cdestination = ("")
cdisplayfontname = ("")
cfieldlist = ("")
chtmlclass =
chtmlstyleid = ("")
creport = ("")
cscope = ("")
DoCreate = .T.
Height = 274
MaxButton = .F.
MinButton = .F.
Name = "_outputdialog"
ShowWindow = 1
Width = 385
*
ADD OBJECT 'cboTables' AS _combobox WITH ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 24, ;
Left = 100, ;
Name = "cboTables", ;
RowSourceType = 1, ;
TabIndex = 13, ;
Top = 234, ;
Width = 190, ;
ZOrderSet = 8
*< END OBJECT: ClassLib="_base.vcx" BaseClass="combobox" />
ADD OBJECT 'cmdCancel' AS _commandbutton WITH ;
Cancel = .T., ;
Caption = "Cancel", ;
FontBold = .F., ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 23, ;
Left = 306, ;
Name = "cmdCancel", ;
TabIndex = 15, ;
Top = 49, ;
Width = 72, ;
ZOrderSet = 4
*< END OBJECT: ClassLib="_base.vcx" BaseClass="commandbutton" />
ADD OBJECT 'cmdGetReport' AS _commandbutton WITH ;
Caption = "...", ;
FontSize = 8, ;
Height = 24, ;
Left = 267, ;
Name = "cmdGetReport", ;
TabIndex = 11, ;
TabStop = .F., ;
Top = 202, ;
Width = 23, ;
ZOrderSet = 10
*< END OBJECT: ClassLib="_base.vcx" BaseClass="commandbutton" />
ADD OBJECT 'cmdOK' AS _commandbutton WITH ;
Caption = "OK", ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 23, ;
Left = 306, ;
Name = "cmdOK", ;
TabIndex = 14, ;
Top = 18, ;
Width = 72, ;
ZOrderSet = 3
*< END OBJECT: ClassLib="_base.vcx" BaseClass="commandbutton" />
ADD OBJECT 'cusOutput' AS _outputchoices WITH ;
BorderWidth = 0, ;
Height = 109, ;
Left = 8, ;
Name = "cusOutput", ;
TabIndex = 3, ;
Top = 18, ;
Width = 290, ;
ZOrderSet = 2, ;
txtFileName.Height = 23, ;
txtFileName.Left = 92, ;
txtFileName.Name = "txtFileName", ;
txtFileName.TabIndex = 3, ;
txtFileName.Top = 78, ;
txtFileName.Width = 161, ;
cboDestinations.Height = 24, ;
cboDestinations.Left = 92, ;
cboDestinations.Name = "cboDestinations", ;
cboDestinations.TabIndex = 1, ;
cboDestinations.Top = 14, ;
cboDestinations.Width = 190, ;
cboOptions.Height = 24, ;
cboOptions.Left = 92, ;
cboOptions.Name = "cboOptions", ;
cboOptions.TabIndex = 2, ;
cboOptions.Top = 46, ;
cboOptions.Width = 190, ;
cmdPutFile.Left = 259, ;
cmdPutFile.Name = "cmdPutFile", ;
cmdPutFile.TabIndex = 4, ;
cmdPutFile.Top = 78, ;
cusWindows.Name = "cusWindows"
*< END OBJECT: ClassLib="_reports.vcx" BaseClass="container" />
ADD OBJECT 'lblData' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
BorderStyle = 0, ;
Caption = "Da\
ADD OBJECT 'lblDestinations' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 1, ;
BorderStyle = 0, ;
Caption = "\
ADD OBJECT 'lblOptions' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
BorderStyle = 0, ;
Caption = "O\
ADD OBJECT 'lblOutputFilename' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
BorderStyle = 0, ;
Caption = "\
ADD OBJECT 'lblOutputType' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "Output t\
ADD OBJECT 'lblReports' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
BorderStyle = 0, ;
Caption = "\
ADD OBJECT 'lblScope' AS _label WITH ;
AutoSize = .T., ;
Caption = "\
ADD OBJECT 'lblSources' AS _label WITH ;
AutoSize = .T., ;
BackStyle = 1, ;
BorderStyle = 0, ;
Caption = "\
ADD OBJECT 'opgScope' AS _optiongroup WITH ;
BackStyle = 0, ;
BorderStyle = 1, ;
ButtonCount = 3, ;
Height = 35, ;
Left = 8, ;
Name = "opgScope", ;
TabIndex = 7, ;
Top = 140, ;
Width = 290, ;
ZOrderSet = 0, ;
Option1.AutoSize = .T., ;
Option1.BackStyle = 0, ;
Option1.Caption = "\
ADD OBJECT 'shpFrameDestinations' AS _shape WITH ;
BackStyle = 0, ;
Height = 109, ;
Left = 8, ;
Name = "shpFrameDestinations", ;
SpecialEffect = 0, ;
Top = 18, ;
Width = 290, ;
ZOrderSet = 1
*< END OBJECT: ClassLib="_base.vcx" BaseClass="shape" />
ADD OBJECT 'shpFrameSources' AS _shape WITH ;
BackStyle = 0, ;
Height = 78, ;
Left = 8, ;
Name = "shpFrameSources", ;
SpecialEffect = 0, ;
Top = 188, ;
Width = 290, ;
ZOrderSet = 5
*< END OBJECT: ClassLib="_base.vcx" BaseClass="shape" />
ADD OBJECT 'txtReportFile' AS _textbox WITH ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 24, ;
Left = 100, ;
Name = "txtReportFile", ;
TabIndex = 10, ;
Top = 202, ;
Width = 161, ;
ZOrderSet = 9
*< END OBJECT: ClassLib="_base.vcx" BaseClass="textbox" />
PROCEDURE Activate
IF NOT THIS.lPreventSourceChanges
WITH THIS.cboTables
LOCAL ARRAY laTables[1,2]
LOCAL liCount, liIndex, lcRowSource, lcAlias
liCount = AUSED(laTables)
lcRowSource = ""
FOR liIndex = 1 TO liCount
lcAlias = PROPER(laTables[liIndex,1])
lcRowSource = lcRowSource + lcAlias + ","
ENDFOR
IF RIGHTC(lcRowSource,1) = ","
lcRowSource = LEFTC(lcRowSource, LEN(lcRowSource) - 1)
ENDIF
.RowSource = lcRowSource
.Requery()
.ControlSource = "THISFORM.cusOutput.cAlias"
ENDWITH
THIS.txtReportFile.ControlSource = "THISFORM.cusOutput.cReport"
THISFORM.Refresh()
ENDIF
THIS.CheckOKButton()
THIS.SetKeys(.T.)
ENDPROC
PROCEDURE calias_access
RETURN THIS.cusOutput.cAlias
ENDPROC
PROCEDURE calias_assign
LPARAMETERS m.vNewVal
IF VARTYPE(m.vNewVal) = "C"
STORE m.vNewVal TO THIS.cusOutput.cAlias, THIS.cAlias
IF NOT THIS.lPreventSourceChanges
THIS.cboTables.Refresh()
ENDIF
THIS.CheckOKButton()
ENDIF
ENDPROC
PROCEDURE cdestination_access
RETURN THIS.cusOutput.cDestination
ENDPROC
PROCEDURE cdestination_assign
LPARAMETERS m.vNewVal
STORE m.vNewVal TO THIS.cDestination, THIS.cusOutput.cDestination
ENDPROC
PROCEDURE cdisplayfontname_access
RETURN THIS.cusOutput.cDisplayFontName
ENDPROC
PROCEDURE cdisplayfontname_assign
LPARAMETERS m.vNewVal
THIS.cusOutput.cDisplayFontName = m.vNewVal
ENDPROC
PROCEDURE cfieldlist_access
RETURN THIS.cusOutput.cFieldList
ENDPROC
PROCEDURE cfieldlist_assign
LPARAMETERS m.vNewVal
STORE m.vNewVal TO THIS.cFieldList, THIS.cusOutput.cFieldList
ENDPROC
PROCEDURE checkokbutton
IF NOT THIS.Visible
RETURN
ENDIF
THIS.cmdOK.Enabled = (NOT EMPTY(THIS.cAlias+THIS.cReport))
IF THIS.cmdOK.Enabled
IF INLIST("#"+THIS.cusOutput.cDestination+"#","#PRINTFILE#","#TEXTFILE#","#EXPORT#", "#HTMLFILE#") AND ;
EMPTY(THIS.cusOutput.txtFileName.Value)
THIS.cmdOK.Enabled = .F.
ENDIF
ENDIF
IF THIS.cmdOK.Enabled
IF INLIST("#"+THIS.cusOutput.cDestination+"#","#PRINTREPORT#","#TEXTFILE#","#PRINTFILE#") AND ;
EMPTY(THIS.cReport)
THIS.cmdOK.Enabled = .F.
ENDIF
ENDIF
IF THIS.cmdOK.Enabled
IF INLIST("#"+THIS.cusOutput.cDestination+"#","#EXPORT#","#PRINTLIST#") AND ;
EMPTY(THIS.cAlias)
THIS.cmdOK.Enabled = .F.
ENDIF
ENDIF
ENDPROC
PROCEDURE chtmlclass_access
RETURN THIS.cusOutput.cHTMLClass
ENDPROC
PROCEDURE chtmlclass_assign
LPARAMETERS tvNewVal
IF VARTYPE(tvNewVal) = "C"
STORE tvNewVal TO THIS.cHTMLClass, THIS.cusOutput.cHTMLClass
ENDIF
ENDPROC
PROCEDURE chtmlstyleid_access
RETURN THIS.cusOutput.cHTMLStyleID
ENDPROC
PROCEDURE chtmlstyleid_assign
LPARAMETERS tvNewVal
IF VARTYPE(tvNewVal) = "C"
STORE tvNewVal TO THIS.cHTMLStyleID, THIS.cusOutput.cHTMLStyleID
ENDIF
ENDPROC
PROCEDURE creport_access
RETURN THIS.cusOutput.cReport
ENDPROC
PROCEDURE creport_assign
LPARAMETERS m.vNewVal
IF VARTYPE(m.vNewVal) = "C"
STORE m.vNewVal TO THIS.cReport, THIS.cusOutput.cReport
IF NOT THIS.lPreventSourceChanges
THIS.txtReportFile.Refresh()
ENDIF
THIS.CheckOKButton()
ENDIF
ENDPROC
PROCEDURE cscope_access
RETURN UPPER(ALLTRIM(THIS.cusOutput.cScope))
ENDPROC
PROCEDURE cscope_assign
LPARAMETERS tvNewVal
LOCAL lcNewVal
IF VARTYPE(tvNewVal) = "C"
lcNewVal = ALLTRIM(UPPER(tvNewVal))
STORE lcNewVal TO THIS.cScope, THIS.cusOutput.cScope
ELSE
lcNewVal = ALLTRIM(UPPER(THIS.cScope))
ENDIF
DO CASE
CASE lcNewVal == "ALL" OR EMPTY(lcNewVal)
THIS.opgScope.Value = 1
CASE lcNewVal == "NEXT 1"
THIS.opgScope.Value = 2
CASE lcNewVal == "REST"
THIS.opgScope.Value = 3
OTHERWISE
THIS.opgScope.Value = 0
ENDCASE
ENDPROC
PROCEDURE Deactivate
THIS.SetKeys()
ENDPROC
PROCEDURE Init
LPARAMETERS tcReport, tcAlias, tlPreventSourceChanges, tlPreventScopeChanges
LOCAL loControl
IF NOT DODEFAULT()
RETURN .F.
ENDIF
THIS.MaxHeight = THIS.Height
THIS.cReport = tcReport
THIS.cAlias = tcAlias
IF PCOUNT() >= 3 AND VARTYPE(tlPreventSourceChanges) = "L"
THIS.lPreventSourceChanges = tlPreventSourceChanges
ENDIF
IF PCOUNT() = 4 AND VARTYPE(tlPreventScopeChanges) = "L"
THIS.lPreventScopeChanges = tlPreventScopeChanges
ENDIF
IF SYSTEM_LARGEFONTS
LOCAL lcStandardFont
lcStandardFont = UPPER(DIALOG_SMALLFONT_NAME)
FOR EACH loControl IN THIS.Controls
DO CASE
CASE PEMSTATUS(loControl,"FontName",5) AND ;
UPPER(loControl.FontName) == lcStandardFont
loControl.FontName = DIALOG_LARGEFONT_NAME
CASE TYPE("loControl.Buttons(1)") = "O"
loControl.SetAll("FontName",DIALOG_LARGEFONT_NAME)
OTHERWISE
* Note: no recursion here.
ENDCASE
ENDFOR
ENDIF
ENDPROC
PROCEDURE laddsourcenametodropdown_access
RETURN THIS.cusOutput.lAddSourceNameToDropDown
ENDPROC
PROCEDURE laddsourcenametodropdown_assign
LPARAMETERS tlNewVal
IF VARTYPE(tlNewVal) = "L"
STORE tlNewVal TO ;
THIS.cusOutPut.lAddSourceNameToDropDown, ;
THIS.lAddSourceNameToDropDown
ENDIF
ENDPROC
PROCEDURE lpreventscopechanges_assign
LPARAMETERS tlNewVal
IF VARTYPE(tlNewVal) = "L"
STORE tlNewVal TO THIS.lPreventScopeChanges
ENDIF
THIS.RespondToPermissionForScopeChanges()
ENDPROC
PROCEDURE lpreventsourcechanges_access
RETURN THIS.cusOutput.lPreventSourceChanges
ENDPROC
PROCEDURE lpreventsourcechanges_assign
LPARAMETERS tlNewVal
LOCAL llChange
IF VARTYPE(tlNewVal) = "L" AND tlNewVal # THIS.lPreventSourceChanges
STORE tlNewVal TO THIS.lPreventSourceChanges, THIS.cusOutput.lPreventSourceChanges
llChange = .T.
ENDIF
THIS.RespondToPermissionForSourceChanges(llChange)
ENDPROC
PROCEDURE output && Wrap the cusOutput.Output method for external use
THIS.cusOutput.Output()
ENDPROC
PROCEDURE respondtopermissionforscopechanges
LOCAL llScopeEnabled
llScopeEnabled = (NOT THIS.lPreventScopeChanges)
STORE llScopeEnabled TO ;
THIS.opgScope.Enabled, THIS.lblScope.Enabled
THIS.opgScope.Setall("Enabled", llScopeEnabled)
ENDPROC
PROCEDURE respondtopermissionforsourcechanges
LPARAMETERS tlExplicitChange
LOCAL lnBottomMargin
lnBottomMargin = INT(THIS.lblDestinations.Top * .66)
IF (THIS.lPreventSourceChanges)
IF EMPTY(THIS.cusOutput.cReport+THIS.cusOutput.cAlias) AND tlExplicitChange
MESSAGEBOX(OUTPUT_REPORT_OR_DATASOURCE_REQUIRED_LOC, MB_ICONEXCLAMATION)
ENDIF
THIS.Height = lnBottomMargin + ;
THIS.opgScope.Height + ;
THIS.opgScope.Top
ELSE
THIS.Height = THIS.MaxHeight
ENDIF
STORE (NOT THIS.lPreventSourceChanges) TO ;
THIS.lblSources.Visible, THIS.lblSources.Enabled, ;
THIS.shpFrameSources.Visible, THIS.shpFrameSources.Enabled, ;
THIS.lblReports.Visible, THIS.lblReports.Enabled, ;
THIS.lblData.Visible, THIS.lblData.Enabled, ;
THIS.txtReportFile.Visible, THIS.txtReportFile.Enabled, ;
THIS.cmdGetReport.Visible, THIS.cmdGetReport.Enabled, ;
THIS.cboTables.Visible, THIS.cboTables.Enabled
ENDPROC
PROTECTED PROCEDURE setkeys
LPARAMETERS tlOn
IF tlOn
PUSH KEY
ON KEY LABEL Alt-Y IIF(TYPE("_SCREEN.ActiveForm.cusOutput.cboDestinations") = "O" AND ;
_SCREEN.ActiveForm.cusOutput.cboDestinations.Enabled, ;
_SCREEN.ActiveForm.cusOutput.cboDestinations.SetFocus(),;
.T.)
ON KEY LABEL Alt-P IIF(TYPE("_SCREEN.ActiveForm.cusOutput.cboOptions") = "O" AND ;
_SCREEN.ActiveForm.cusOutput.cboOptions.Enabled, ;
_SCREEN.ActiveForm.cusOutput.cboOptions.SetFocus(),;
.T.)
ON KEY LABEL Alt-F IIF(TYPE("_SCREEN.ActiveForm.cusOutput.txtFileName") = "O" AND ;
_SCREEN.ActiveForm.cusOutput.txtFileName.Enabled, ;
_SCREEN.ActiveForm.cusOutput.txtFileName.SetFocus(),;
.T.)
ELSE
POP KEY
ENDIF
ENDPROC
PROCEDURE Show
LPARAMETERS nStyle
IF NOT EMPTY(THIS.cScope)
THIS.lPreventScopeChanges = .T.
ENDIF
THIS.cScope = THIS.cScope && fix opgScope value
THIS.RespondToPermissionForSourceChanges()
ENDPROC
PROCEDURE cmdCancel.Click
THISFORM.Release()
ENDPROC
PROCEDURE cmdGetReport.Click
WAIT WINDOW NOWAIT LEFTC(OUTPUT_SOURCE_REPORT_LOC,254)
LOCAL lcName
lcName = UPPER(GETFILE("FRX,LBX","","Open"))
IF LASTKEY() = 13
CLEAR TYPEAHEAD
ENDIF
IF NOT EMPTY(lcName)
THISFORM.txtReportFile.Value = lcName
ENDIF
WAIT CLEAR
ENDPROC
PROCEDURE cmdOK.Click
THISFORM.Output()
ENDPROC
PROCEDURE cusOutput.calias_assign
LPARAMETERS tcVal
DODEFAULT(tcVal)
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.cboDestinations.InteractiveChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.cboDestinations.ProgrammaticChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.cboOptions.InteractiveChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.cboOptions.ProgrammaticChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.cmdPutFile.Click
DODEFAULT()
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.creport_assign
LPARAMETERS tcVal
DODEFAULT(tcVal)
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.txtFileName.InteractiveChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE cusOutput.txtFileName.ProgrammaticChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE opgScope.InteractiveChange
DO CASE
CASE THIS.Value = 2
THISFORM.cScope = "NEXT 1"
CASE THIS.Value = 3
THISFORM.cScope = "REST"
OTHERWISE
THISFORM.cScope = ""
ENDCASE
ENDPROC
PROCEDURE txtReportFile.InteractiveChange
THISFORM.CheckOKButton()
ENDPROC
PROCEDURE txtReportFile.ProgrammaticChange
THISFORM.CheckOKButton()
ENDPROC
ENDDEFINE
DEFINE CLASS _showtext AS _form OF "_base.vcx"
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="edtText" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="OleCommonDialog" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdSave" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdClose" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdFonts" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkReadOnly" UniqueID="" Timestamp="" />
#INCLUDE "_reports.h"
*
*m: csourcefile_assign
*m: ctargetfile_access
*m: getfixedfont && Uses common dialog to display font dialog, restricted to fixed font items.
*m: setfonts && Applies the current font property characteristics to the editbox displaying the file.
*p: cfixedfontname && Font name for display editbox.
*p: csourcefile && Name of source file to view/edit.
*p: ctargetfile && Name of file to which you would like to save the (possibly edited) contents of the editbox.
*p: ifixedfontsize && Font size for display editbox.
*p: lfixedfontbold && Font bold for display editbox.
*p: lfixedfontitalic && Font italic for display editbox.
*p: lsuppresscaptionchange && Suppresses the dialog caption from changing as the source file changes. This is useful for displaying the contents of a temporary file.
*
*
Caption = "Text Editor"
cfixedfontname = ("Courier New")
csourcefile = ("")
ctargetfile = ("")
DoCreate = .T.
Height = 237
ifixedfontsize = 9
Left = 0
Name = "_showtext"
ShowWindow = 1
Top = 0
Width = 419
*
ADD OBJECT 'chkReadOnly' AS _checkbox WITH ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "Read only", ;
ControlSource = "THISFORM.edtText.Readonly", ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Left = 336, ;
Name = "chkReadOnly", ;
Top = 112
*< END OBJECT: ClassLib="_base.vcx" BaseClass="checkbox" />
ADD OBJECT 'cmdClose' AS _commandbutton WITH ;
Cancel = .T., ;
Caption = "\
ADD OBJECT 'cmdFonts' AS _commandbutton WITH ;
Caption = "Fonts...", ;
FontName = "MS Sans Serif", ;
FontSize = 8, ;
Height = 25, ;
Left = 337, ;
Name = "cmdFonts", ;
Top = 134, ;
Width = 74
*< END OBJECT: ClassLib="_base.vcx" BaseClass="commandbutton" />
ADD OBJECT 'cmdSave' AS _commandbutton WITH ;
Caption = "\
ADD OBJECT 'edtText' AS _editbox WITH ;
ColorSource = 3, ;
FontName = "Courier New", ;
FontSize = 8, ;
Height = 229, ;
Left = 0, ;
Name = "edtText", ;
ReadOnly = .T., ;
ScrollBars = 2, ;
Top = 3, ;
Width = 324
*< END OBJECT: ClassLib="_base.vcx" BaseClass="editbox" />
ADD OBJECT 'OleCommonDialog' AS olecontrol WITH ;
Height = 100, ;
Left = 336, ;
Name = "OleCommonDialog", ;
Top = 72, ;
Width = 100, ;
ZOrderSet = 1
*< END OBJECT: BaseClass="olecontrol" OLEObject="c:\winnt\system32\comdlg32.ocx" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCjXj3KP8ABAwAAAEABAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABcAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAAAAAAABAAAAAIAAAD+/////v////7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+FPAT58vYaEKPJCAArL0n7IUM0EggAAABPAwAATwMAAIY8BPkAAAYAAAAAACAAAAAAAAAAAAAAAAEAAAAEAQAAXAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyOEM0QzgyMC00MDFBLTEwMUItQTNDOS0wODAwMkIyRjQ5RkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" />
PROCEDURE csourcefile_assign
LPARAMETERS tvNewVal
LOCAL lcVal
IF VARTYPE(tvNewVal) # "C"
THIS.cSourceFile = ""
ELSE
lcVal = ALLTR(tvNewVal)
DO CASE
CASE FILE(lcVal) OR (NOT EMPTY(SYS(2000,lcVal)))
THIS.cSourceFile = lcVal
CASE FILE(lcVal+".txt") OR (NOT EMPTY(SYS(2000,lcVal+".txt")))
THIS.cSourceFile = lcVal+".txt"
OTHERWISE
THIS.cSourceFile = ""
ENDCASE
ENDIF
IF EMPTY(THIS.cSourceFile)
THIS.edtText.Value = ""
ELSE
THIS.edtText.Value = FileToStr(THIS.cSourceFile)
IF NOT THIS.lSuppressCaptionChange
THIS.Caption = THIS.cSourceFile
ENDIF
ENDIF
ENDPROC
PROCEDURE ctargetfile_access
IF EMPTY(THIS.cTargetFile)
WITH THIS.oleCommonDialog
.Flags = cdlOFNPathMustExist + ;
cdlOFNNoChangeDir + ;
cdlOFNHideReadOnly + ;
cdlOFNExplorer + ;
cdlOFNOverwritePrompt+ ;
cdlOFNNoReadOnlyReturn
.ShowSave()
THIS.cTargetFile = .FileName
ENDWITH
ENDIF
RETURN THIS.cTargetFile
ENDPROC
PROCEDURE getfixedfont && Uses common dialog to display font dialog, restricted to fixed font items.
LOCAL lcName, liSize
lcName = THIS.cFixedFontName
liSize = THIS.iFixedFontSize
WITH THIS.oleCommonDialog
.Flags = cdlCFScreenFonts + ;
cdlCFForceFontExist + ;
cdlCFFixedPitchOnly
.FontName = THIS.cFixedFontName
.FontSize = THIS.iFixedFontSize
.FontItalic = IIF(THIS.lFixedFontItalic,1,0)
.FontBold = IIF(THIS.lFixedFontBold,1,0)
.ShowFont()
IF NOT EMPTY(.FontName)
THIS.cFixedFontName = .FontName
THIS.lFixedFontBold = NOT EMPTY(.FontBold)
THIS.lFixedFontItalic = NOT EMPTY(.FontItalic)
ELSE
THIS.cFixedFontName = lcName
ENDIF
IF NOT EMPTY(.FontSize)
THIS.iFixedFontSize = .FontSize
ELSE
THIS.iFixedFontSize = liSize
ENDIF
ENDWITH
ENDPROC
PROCEDURE Init
LPARAMETERS tcSourceFile
LOCAL loControl
IF NOT DODEFAULT()
RETURN .F.
ENDIF
IF SYSTEM_LARGEFONTS
LOCAL lcStandardFont
lcStandardFont = UPPER(DIALOG_SMALLFONT_NAME)
FOR EACH loControl IN THIS.Controls
IF PEMSTATUS(loControl,"FontName",5) AND ;
UPPER(loControl.FontName) == lcStandardFont
loControl.FontName = DIALOG_LARGEFONT_NAME
ENDIF
ENDFOR
* Note: no recursion here.
ENDIF
THIS.cSourceFile = tcSourceFile
THIS.Caption = SHOWTEXT_TEXT_EDITOR_LOC
THIS.MinHeight = THIS.Height
THIS.MinWidth = THIS.Width
THIS.SetFonts()
THIS.Resize()
ENDPROC
PROCEDURE Resize
LOCAL lnMargin
lnMargin = SYSMETRIC(VERTICAL_SCROLLBAR_WIDTH)
WITH THIS.edtText
.Width = THIS.Width - (THIS.cmdClose.Width + ;
(lnMargin * 2) + ;
.Left)
STORE (.Width + .Left + lnMargin) TO ;
THIS.cmdSave.Left, ;
THIS.cmdClose.Left, ;
THIS.chkReadonly.Left, ;
THIS.cmdFonts.Left
lnMargin = .Top
.Height = THIS.Height - lnMargin * 2
ENDWITH
ENDPROC
PROCEDURE setfonts && Applies the current font property characteristics to the editbox displaying the file.
THIS.edtText.FontName = THIS.cFixedFontName
THIS.edtText.FontSize = THIS.iFixedFontSize
THIS.edtText.FontItalic = THIS.lFixedFontItalic
THIS.edtText.FontBold = THIS.lFixedFontBold
ENDPROC
PROCEDURE cmdClose.Click
THISFORM.Release()
ENDPROC
PROCEDURE cmdFonts.Click
THISFORM.GetFixedFont()
THISFORM.SetFonts()
ENDPROC
PROCEDURE cmdSave.Click
LOCAL lcFile
lcFile = THISFORM.cTargetFile
IF AT(".",lcFile) = 0
lcFile = lcFile + ".TXT"
ENDIF
StrToFile(THISFORM.edtText.Value,lcFile)
ENDPROC
ENDDEFINE