如何设置打印的纸张大小(100分)

  • 主题发起人 主题发起人 h_z_m
  • 开始时间 开始时间
H

h_z_m

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做系统的时候,用户要求我在打印的时候,所打印出来的收据象超市买东西时给的
清单一样的形式。我做报表用的工具是:quickreport。 我试过它里面没有自定义的大小。
请问: 那位大俠有办法,我真的很急!!! 我很菜,最好给我源代码。
 
用ReportBuild来做算了
 
自定义纸张
procedure TForm1.Button1Click(Sender: TObject);
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

{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_LEGAL;
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 100 {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := 100 {SomeValueInTenthsOfAMillimeter};
{Set the bin to use}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;

end;

Printer.PrinterIndex := Printer.PrinterIndex;
Printer.begin
Doc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;

 
选择纸张
if FPrintAtOnce <> nil then

begin

Timer1.Enabled := False;
FCanRefresh := False;
FPrintAtOnce.PaperSize := TPaperSize(ComboBox1.ItemIndex);
SpinEdit1.Value := FPrintAtOnce.PaperWidth;
SpinEdit2.Value := FPrintAtOnce.PaperHeight;
SpinEdit1.ReadOnly := (FPrintAtOnce.PaperSize <> Custom);
SpinEdit2.ReadOnly := (FPrintAtOnce.PaperSize <> Custom);
FCanRefresh := True;
RefreshPrinter;
end;

试试看吧。
 
请施大师告诉我如何去预览其中设置的纸张。
 
后退
顶部