![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
По следам К.Пачеко. Двусторонняя печать [D7, WinXP]
так себе © (2006-04-08 16:04:00)В книге К.Пачеко приводится пример получения информации о принтере. В частности, как узнать поддерживает ли принтер двустороннюю печать. Использую из примера:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Label2: TLabel;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
Device,Driver,Port: array[0..255] of char;
public
{ Public declarations }
procedure GetDuplexSupport;
end;
var
Form1: TForm1;
implementation
uses Printers, WinSpool;
const
NoYesArray: array[Boolean] of string = ('Нет','Да');
var
Rslt: Integer;
{$R *.dfm}
procedure TForm1.GetDuplexSupport;
begin
Rslt := DeviceCapabilitiesA(Device, Port, DC_DUPLEX,nil,nil);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//получаем список доступных принтеров в ComboBox
ComboBox1.Items.Assign(Printer.Printers);
//Принтер по умолчанию
ComboBox1.ItemIndex := Printer.PrinterIndex;
ComboBox1Change(nil);
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
//Выбор принтера
begin
try
Printer.PrinterIndex := ComboBox1.ItemIndex;
GetDuplexSupport;
Label1.Caption := ('Принтер - ' + ComboBox1.Items[ComboBox1.ItemIndex] +#13#10 +
'Двусторонняя печать - '+ NoYesArray[Rslt=1]);
except
end;
end;
end.
В системе установлен принтер HP LaserJet 2200 Series, поддерживающий двустороннюю печать, однако с помощью вышеприведенного примера это не определяется. В чем причина?
так себе (2006-04-08 16:54:00) [1]
> MBo © (08.04.06 16:10) [1]
Спасибо, всё заработало!
MBo (2006-04-08 16:10:00) [2]Device, Port где заполняются?
Function PrinterSupportsDuplex: Boolean;
Var
Device, Driver, Port: Array [0..255] of Char;
hDevMode: THandle;
Begin
Printer.GetPrinter(Device, Driver, Port, hDevmode);
Result :=
WinSpool.DeviceCapabilities( Device, Port, DC_DUPLEX, Nil, Nil ) <> 0;
End;