Nice help program with MFG

ovf

Member
Nice tool to put in front of mf.

I created a nice program to put in front of mf.p, or "any other progress application", this will not work with the browser version of MFG!
mfstart.p:
/*************************************************************************/
/* OVF-Consult MFG/PRO Trigger to copy value of From fields to To fields */
/* In MFG/PRO report selection screens. */
/* D - in date fields insert current date */
/* Esc-P - makes a character Print screen - to a MFG printer */
/*************************************************************************/
DEFINE NEW GLOBAL SHARED VARIABLE NO-UNDO global_userid AS CHARACTER.
DEFINE NEW GLOBAL SHARED VARIABLE NO-UNDO mfguser AS CHARACTER.
DEFINE VARIABLE dbu# AS INTEGER NO-UNDO.
DEFINE VARIABLE date# AS DATE NO-UNDO.
DEFINE VARIABLE fpart# AS CHARACTER NO-UNDO.
DEFINE VARIABLE h1 AS HANDLE NO-UNDO.
DEFINE VARIABLE h2 AS HANDLE NO-UNDO.
DEFINE VARIABLE hqty# AS DECIMAL NO-UNDO.
DEFINE VARIABLE pos# AS INTEGER NO-UNDO.
DEFINE VARIABLE restqty# AS DECIMAL NO-UNDO.
DEFINE BUFFER pt1 FOR pt_mstr.
DEFINE BUFFER usrwk FOR usrw_wkfl.
DEFINE BUFFER usrwd FOR usrw_wkfl.
DEFINE BUFFER so FOR so_mstr.
DEFINE STREAM ud.
DEFINE TEMP-TABLE frames# NO-UNDO
FIELD frames#-h AS HANDLE
FIELD frames#-y AS INTEGER.
ON 'ESC-P' ANYWHERE
DO:
/* Print Screeen */
FOR EACH frames#:
DELETE frames#.
END.
h1 = SELF:WINDOW.
h2 = h1:FIRST-CHILD.
REPEAT WHILE VALID-HANDLE( h2 ):
IF h2:VISIBLE
AND h2:TYPE = "FRAME" THEN
DO:
CREATE frames#.
ASSIGN
frames#-h = h2
frames#-y = h2:Y.
END.
h2 = h2:NEXT-SIBLING.
END.
OUTPUT STREAM ud TO VALUE( mfguser + ".out" ).
FOR EACH frames#
BY frames#-y:
PUT STREAM ud UNFORMATTED
FILL( "-", 80 ) SKIP.
VIEW STREAM ud frames#-h.
PUT STREAM ud UNFORMATTED
FILL( "-", 80 ) SKIP.
END.
OUTPUT STREAM ud CLOSE.
RUN us/xx/xxpfil.p( INPUT mfguser + ".out" ).
END.
ON "D", "d" ANYWHERE
DO:
IF SELF:DATA-TYPE = "DATE" THEN
SELF:SCREEN-VALUE = STRING( TODAY ).
END.
ON "RETURN", "TAB" ANYWHERE
DO:
h1 = SELF.
IF h1:TYPE = "FILL-IN"
AND CAN-QUERY( SELF, "frame-name" ) THEN
DO:
IF h1:FRAME-NAME = "A" THEN
DO:
h2 = h1:NEXT-TAB-ITEM.
DO WHILE VALID-HANDLE( h2 )
AND h2:TYPE <> "FILL-IN":
h2 = h2:NEXT-TAB-ITEM.
END.
IF VALID-HANDLE( h2 )
AND
( h2:NAME = h1:NAME
+ "1"
OR
h2:LABEL = {t001.i}
OR
h2:LABEL = "->" ) THEN
DO:
IF h2:DATA-TYPE = "date"
AND h2:SCREEN-VALUE = "/ /"
OR h2:DATA-TYPE <> "date" THEN
h2:SCREEN-VALUE = h1:SCREEN-VALUE.
END.
END.
END.
IF h1:TYPE = "EDITOR"
AND LAST-EVENT:FUNCTION = "RETURN" THEN
DO:
SELF:INSERT-STRING( CHR( 10 ) ).
END.
IF LAST-EVENT:FUNCTION = "RETURN"
AND SELF:TYPE = "BUTTON" THEN
DO:
APPLY "CHOOSE" TO SELF.
END.
END.

xxpfil.p:
/* xxpfil.p - version 9.eb */
{mfdeclre.i}
DEFINE INPUT PARAMETER filnavn AS CHARACTER NO-UNDO.
DEFINE STREAM ud.
DEFINE STREAM ind.
DEFINE VARIABLE txt AS CHARACTER NO-UNDO.
FORM
WITH FRAME a
OVERLAY.
{mfselprt.i "printer" 80 no-page}
INPUT STREAM ind FROM VALUE( filnavn ).
REPEAT:
IMPORT STREAM ind UNFORMATTED txt.
PUT STREAM ud UNFORMATTED txt SKIP.
END.
OUTPUT STREAM ud CLOSE.
HIDE FRAME a.


See this a start programs - and use them if you can!

Ole
 

ovf

Member
Thanks, yes you are right. I made a becom - conversion - thats the reson for the no-undo. Actually you must remove no-undo in the two global sharede variables. (Thats the way they are defined in MFG!)

Regards Ole
 
Top