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]