двухстороння печать в deplhi как ?!

A

ale111zzz

Если у тебя Delphi for .NET, см. книгу Петцольд "Программирование Windows Forms на C#". Там как раз и написано про классы .NET, которые можно вызывать без различно, на каком языке C# или Paskal

Эл. копия существует в интернете.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Var
H: THandle;
DM: PDeviceMode;
begin
Printer.GetPrinter(DeviceName, DriverName, PortName, H);
//В принципе, может потребоваться работа с памятью под структуру DEVMODE.
//Смотри подробнее в MSDN в топике "HOWTO: Modify Printer Settings with the DocumentProperties() Function"
DM:=GlobalLock(H);
try
if (DM.dmFields and DM_DUPLEX) then //Если принтер поддерживает дуплекс
begin
DM.dmDuplex:=DMDUP_HORIZONTAL; //Режим дуплекса
end;
finally
GlobalUnlock(H);
end;
end;

А часто лучше просто дать пользователю возможность установить дуплекс в диалоге настройки принтера.
 

paralax

Member
Joined
Jul 9, 2005
Messages
15
Reaction score
0
Age
41
Location
Ярославль
ploki said:
Var
H: THandle;
DM: PDeviceMode;
begin
Printer.GetPrinter(DeviceName, DriverName, PortName, H);
//В принципе, может потребоваться работа с памятью под структуру DEVMODE.
//Смотри подробнее в MSDN в топике "HOWTO: Modify Printer Settings with the DocumentProperties() Function"
DM:=GlobalLock(H);
try
if (DM.dmFields and DM_DUPLEX) then //Если принтер поддерживает дуплекс
begin
DM.dmDuplex:=DMDUP_HORIZONTAL; //Режим дуплекса
end;
finally
GlobalUnlock(H);
end;
end;

А часто лучше просто дать пользователю возможность установить дуплекс в диалоге настройки принтера.

Чем иницилизить (DeviceName, DriverName, PortName) ?
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Инициализировать нужно при вызове SetPrinter :).
А при вызове GetPrinter эти параметры - выходные, то есть это ссылки на буфера, заполняемые системой.
DeviceName - название принтера (например - 'Epson EPL-5700'),
DriverName - обычно 'WINSPOOL',
APort - в WIN32 это nil.
 

paralax

Member
Joined
Jul 9, 2005
Messages
15
Reaction score
0
Age
41
Location
Ярославль
на GetPrinter Delphi делает rise exception и падает :(
Printer.GetPrinter(<name>, 'WINSPOOL', nil, H);
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Повторяю (наверное плохо объяснил :( ), эти параметры - выходные, то есть это ссылки на буфера, заполняемые системой.
Например:

var
ADeviceName, ADriver, APort: array[0..100] of Char;
ADeviceMode: THandle;
...
begin
Printer.GetPrinter(ADeviceName, ADriver, APort, ADeviceMode);
...
 
Top