Советы по Delphi

       

Проблемы с диалогом печати (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;varDevice, Driver, Port: array[0..79] of Char;DevMode: THandle;beginGetPrinter(Device, Driver, Port, DevMode);SetPrinter(Device, Driver, Port, DevMode);end;

-Steve Schafer [000864]



Содержание раздела