[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    {
    Recently I put up a message asking for help so that I could
    change the font of the display, Editor, in the application unit
    stddlgs.pas (povided with tpw). Now that I have succeeded in doing that,
    I want to print out what is displayed on the screen. The printdlg
    function appears to be what I should use, according to on-line help. I
    have added the method below to my own TDataWindow object (inheriting
    the TFileWindow object from stddlgs.pas). It calls PrintDlg successfully
    (the result of CommExtendedDlg=0) but nothing is printed. I believe that
    either
    a) I am failing to initialise PrintDialog incorrectly;
    b) calling PrintDlg incorrectly or
    c) calling StartDoc and EndDoc incorrectly.

    If anyone can put be in the right direction, I would be extremely
    grateful.

    Fiona Stephen
    }

    procedure TDataWindow.FilePrint(var Msg: TMessage);
    var
        reply:boolean;
        output,output2:integer;
        PrintDialog:TPrintdlg;
        returnvalue:LongInt;
        errorstr:Pchar;
    begin
        fillchar(printdialog,sizeof(printdialog),#0);
        printdialog.hdc:=editor^.hwindow;
        printdialog.lstructsize:=sizeof(printdialog);
        printdialog.flags:=printdialog.flags+pd_returndc;
        reply:=printdlg(printdialog);
        returnvalue:=CommDlgExtendedError;
        errorstr:='Not identified';
        CASE RETURNVALUE OF
           CDERR_FINDRESFAILURE	:ERRORSTR:='CDERR_FINDRESFAILURE';
    (*     I've deleted the rest of the CASE statement for brevity.
           Basically it tells me the result of commdlgextendederror to
           check the application of printdlg.*)

        END;
        if returnvalue<>0 then
                output:=MessageBox(HWindow, Errorstr, 'Print Data',mb_OK)
        else begin
                output:=startdoc;
                if output=SP_ERROR then
                      output2:=MessageBox(HWindow, 'Job not started', 'Print
                      Data',mb_OK)
                else
                      output2:=MessageBox(HWindow, 'Job started', 'Print
                      Data',mb_OK);
                output:=enddoc;
                if output<0 then
                      output2:=MessageBox(HWindow, errorstr, 'Job Not
                      Finished',mb_OK);
         end;
    end;

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]