关设置打印机参数问题???在线等待!!! 怎样改变windows控制面板里面打印机默认设置:如打印机纸张类型或自定义纸张的尺寸,否则每打一张报表就要到windows控制面板里定义打印参数,太麻烦了!!!谢谢!!!通过改TDeviceMode我怎么用了就是不可以啊!可否给一个例子!!![email protected],谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在执行打印前调用以下函数: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; {设定纸张来源} pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL; pDMode^.dmDefaultSource := DMBIN_MANUAL; GlobalUnlock(hDMode); end; end; Printer.PrinterIndex := Printer.PrinterIndex; //以下开始打印 Printer.BeginDoc; Printer.Canvas.TextOut(100,100, 'Test 1'); Printer.EndDoc;end; 我也做过,不行。但有这样一个解决方法:你可以在上面的代码中用pDMode^.dmPaperSize := DMPAPER_A3;这样的形式设成差不多大小的纸型,那样就差不多了。 http://www.csdn.net/expert/topic/1015/1015086.xml?temp=.4705469 listview怎么获取数据库字段ID delphi dbchart series的颜色设置 ADOQuery 或者 SDAC 批更新时,怎样获取自动生成的 SQL 语句 如歌判断该字符串从后向前数第一个字符的的位数??? 如何把DateTimePicker中的时间以'yyMMdd'的格式传给变量? 简单的输入问题! 数据包的捕获问题 如何取得和传递用户名?应该在那里申明username? 关于移动记录指针。 关于语音识别系统的问题。 有谁能给我点启发——在局域网环境中做一个三层结构的应用,客户端有台式机(Windows98),也有掌上电脑(WindowsCE)? 这句sql语句是哪儿错了?
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;
{设定纸张来源}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL; GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
//以下开始打印
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;
pDMode^.dmPaperSize := DMPAPER_A3;
这样的形式设成差不多大小的纸型,那样就差不多了。