[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]