打印属性设置???请教“高手”指点!(100分)

  • 主题发起人 主题发起人 sodes
  • 开始时间 开始时间
S

sodes

Unregistered / Unconfirmed
GUEST, unregistred user!
在控制面版的打印机属性里,可以自定义纸
张,在delphi中执行 PrinterSetupDialog 控件
可以选择和设置,用程序语句怎样"动态设置"纸
张的长,宽?
怎样操作控制面版的"打印机属性"?
 
转贴一个
procedure SetPaperSize(X, Y: Integer);
// 这段代码绝对可用。单位是0.1mm
// A4时 Printer.Pagewidth:=1440; A5时 Printer.Pagewidth:=1049;
// B5时 Printer.Pagewidth:=1290; 16K时 Printer.Pagewidth:=1035;
// lq1600宽行打印机这个值宽度最大为42cm左右, 长度大约2m。
//改变devicemode结构
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin

Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then

begin

pDMode := GlobalLock(hDMode);
if pDMode <> nil then

begin

if (x = 0) or (y = 0) then

begin

{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
{pDMode^.dmPaperSize := DMPAPER_LEGAL;
changed by wulianmin}
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else

begin

{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
end;

{Set the bin to use}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;

GlobalUnlock(hDMode);
end;

end;

Printer.PrinterIndex := Printer.PrinterIndex;
//以下开始打印
end;
 
win2000/winXP下能用吗?
任意变长(>120行),或出小票(1,2行)可以吗?
 
用这个看看:PageSetupDialog
 
这个PageSetupDialog在哪里有?
诸位帮我回答问题我都会给分的,哪怕只给一分!
谢谢啦。
 
在Dialog页面。最后一个
 
to:chuguozhen
老兄,Dialog页面的最后一个是ReplaceDialog,
不是你说的PageSetupDialog。爽快点啊!
你是不是装了别的什么工具包?
 
ft了,没有
打开delphi7/source/vcl/dialogs.pas文件,其中有这个class;
procedure TForm1.Button1Click(Sender: TObject);
var
dlg:TPageSetupDialog;
begin
dlg:=TPageSetupDialog.Create(self);
//14800
if dlg.Execute then
begin
showmessage(inttostr(dlg.PageWidth));
end;
end;
 
后退
顶部