2012年5月5日星期六

How to fixed a bug in class RunBaseReport.

// Changed on 05 五月 2012 at 21:40:07 by Jimmy
/*
When you create a class that extends from RunBaseReport and you try to modify the printer preferences
it won’t have any effect. This small bug can be fixed very easy.
Edit the class RunBaseReportDialog, method main and check lines 14 and 15:
*/
static void main(Args args)
{
    RunBaseReportDialog reportDialog = new RunBaseReportDialog(args.caller());
    RunBaseReport       runBaseReport = args.caller().runbase();
    ReportRun           reportRun = runBaseReport.reportRun();
    Report              report = reportRun.report();
    boolean             oldInteractive;
    boolean             res;
    Dialog              dialog;
;
    // We must invoke the SysPrintForm via the report object so that we honor an prompt overrides.
    oldInteractive = report.interactive();
    report.interactive(true);
   
    /* Original
    res = reportRun.prompt(); // commented
    */
    // Changed on 05 五月 2012 at 21:40:07 by Jimmy Begin
    if (SysReportRun::hasMethod(reportRun.name(), 'prompt'))
    {
        res = reportRun.prompt();
    }
    else
    {
        res = reportDialog.prompt();
    }
    // Changed on 05 五月 2012 at 21:40:07 by Jimmy End
    report.interactive(oldInteractive);
    if (!res)
        return;
    dialog = Dialog::getDialogFromCaller(args.caller());
    if (dialog)
    {
        dialog.updateServer();
    }
    runBaseReport.dialogUpdatePrinterSettings(dialog);
    reportDialog.run();
}

没有评论:

发表评论