用delphi做一个dll,需要在其他程序中调用用来控制打印机的打印方向,打印纸张类型,怎么做,希望能有源代码(100分)

  • 主题发起人 主题发起人 ynfly
  • 开始时间 开始时间
Y

ynfly

Unregistered / Unconfirmed
GUEST, unregistred user!
在lotus中是控制不了打印方向和打印纸张类型的,所以每次打印都需要打印设置一次,
客户很不满意,于是我希望做一个dll,能在打印之前取得打印机的打印参数,保存起来,
然后按照打印的要求设置打印掺数,打印完了在恢复刚才的打印设置,能实现吗?
希望能提供源代码 ,谢谢了
 
可以实现。
你要会dll.
下面是设置纸张的类型:
var
aDevice,aDriver,aPort:array[0..255] of char;
DeviceHandle:Thandle;
DevMode:PDeviceMode;// 指向TDeviceMode 结构的指针
begin
printer:=Tprinter.Create;
printer.Refresh;
printer.GetPrinter(aDevice,aDriver,aPort,Devicehandle);
//首先获取Tprinter的TDeviceMode 结构的句柄
if deviceHandle=0 then
//若handle=0 ,则设备没有装入,设置printer index,再装入
begin
printer.printerIndex:=Printer.PrinterIndex;
printer.GetPrinter(aDevice,aDriver,aPort,Devicehandle);
end;

if deviceHandle=0 then
//若handle=0,则发生错误,产生异常
raise Exception.create('不能初始化TDeviceMode 结构')
else
// 否则用GlobalLock获取TDeviceMode 结构的指针
begin
DevMode:=GlobalLock(DeviceHandle);
with DevMode^do
begin
dmFields:=dmFields or DM_PAPERSIZE;
dmPaperSize:=DMPAPER_A4;
//在这里选择要设置纸张类型,例子中是a4,或可以是DMPAPER_A5,DMPAPER_letter等
end;
end;
//else
if not DeviceHandle=0 then
GlobalUnlock(DeviceHandle);
end;
还有其它的属性:
printer.orientation打印方向
你自己写dll吧.
 
打印方向和纸张来源的:
dmFields:=dmFields or DM_ORIENTATION;
//设置打印方向
if setupform.RadioButton1.Checked then
dmOrientation:=DMORIENT_PORTRAIT //纵向
else
dmOrientation:=DMORIENT_LANDSCAPE;
//横向
dmFields :=dmFields or DMBIN_MANUAL;
//设置纸张来源
case setupform.ComboBox2.Items.IndexOf(setupform.combobox2.text) of
0: dmDefaultSource:=DMBIN_Auto;
1: dmDefaultSource:=DMBIN_MANUAL;
end;

 
可以用FASTREPORT控件。[:)]
 
接受答案了.
 
后退
顶部