Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Проблемы с диалогом печати (PrintDialog)

...в итоге я получил действительно большую проблему. У меня не получается вызывать диалоги PrintDialog и PrinterSetupDialog более одного раза. Метод вызова каждого диалога у меня привязан к определенному пункту меню и соответствующим кнопкам SpeedButton. После одного или двух нажатий оба диалога перестают работать, т.е. при их вызове ничего не происходит. Я проверял это на трех других компьютерах, работающих под операционной системой Windows for Workgroups.

Вот что нужно сделать:

В DIALOGS.PAS измените


   
{ 1530 }   hWndOwner := Application.Handle;
{ 1531 }   if TaskModalDialog(@PrintDlg, PrintDlgRec) then
{ 1532 }     SetPrinter(hDevMode, hDevNames)
{ 1533 }   else

на


   
{ 1530 }   hWndOwner := Application.Handle;
{ 1531 }   SetPrinter(hDevMode, hDevNames);
{ 1532 }   if not TaskModalDialog(@PrintDlg, PrintDlgRec) then

и


   
{ 1582 }   if Result then
{ 1583 }   begin
{ 1584 }     SetPrinter(hDevMode, hDevNames);
{ 1585 }     F := Flags;

на


   
{ 1582 }   SetPrinter(hDevMode, hDevNames);
{ 1583 }   if Result then
{ 1584 }   begin
{ 1585 }     F := Flags;

Непосредственно перед печатью или вызовом диалога настройки принтера необходимо также выполнить следующую процедуру:


   
procedure InitPrinter;
var
Device, Driver, Port: array[0..79] of Char;
DevMode: THandle;
begin
GetPrinter(Device, Driver, Port, DevMode);
SetPrinter(Device, Driver, Port, DevMode);
end;

-Steve Schafer [000864]