转的代码 --------- procedure setprint(pagesize:tpagesize;width,height:variant;Orientation:tprinterOrientation); var Device: array[0..255] of char; Driver: array[0..255] of char; Port: array[0..255] of char; hDMode: THandle; PDMode: PDEVMODE; begin //设置打印机 try Printer.PrinterIndex := Printer.PrinterIndex; Printer.GetPrinter(Device, Driver, Port, hDMode); if hDMode <> 0 then begin pDMode := GlobalLock(hDMode); if pDMode <> nil then begin if pagesize=Custom then begin //设定自定义纸张 pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize or DM_PAPERWIDTH or DM_PAPERLENGTH; pDMode^.dmPaperSize := 0; pDMode^.DMPAPERWIDTH:= width*10 ; pDMode^.DMPAPERLENGTH:=height*10; end else begin //设定纸张类型 pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE ; if pagesize=A3 then pDMode^.dmPaperSize := DMPAPER_A3; if pagesize=A4 then pDMode^.dmPaperSize := DMPAPER_A4; if pagesize=A5 then pDMode^.dmPaperSize := DMPAPER_A5; if pagesize=B4 then pDMode^.dmPaperSize := DMPAPER_B4; if pagesize=B5 then pDMode^.dmPaperSize := DMPAPER_B5; if pagesize=CSheet then pDMode^.dmPaperSize := DMPAPER_CSheet; if pagesize=Executive then pDMode^.dmPaperSize := DMPAPER_Executive; if pagesize=Letter then pDMode^.dmPaperSize:= DMPAPER_Letter; end; printer.Orientation:=Orientation; GlobalUnlock(hDMode); end; end ; Printer.PrinterIndex := Printer.PrinterIndex; except showmessage('没有默认选择打印机,或默认打印机不可使!'); exit; end; end;
2楼的代码中..Printer这个类好象没定义啊....
to :Kshape([伟大的大伟!]/一心考研中!) 为什么我直接写 Printer.Orientation:= poLandscape; PrintDBGridEH1.Title.Text:=Panel3.Caption; PrintDBGridEH1.Preview;还是不行呢?
---------
procedure setprint(pagesize:tpagesize;width,height:variant;Orientation:tprinterOrientation);
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin
//设置打印机
try
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
if pagesize=Custom then
begin
//设定自定义纸张
pDMode^.dmFields := pDMode^.dmFields or
dm_PaperSize or
DM_PAPERWIDTH or
DM_PAPERLENGTH; pDMode^.dmPaperSize := 0;
pDMode^.DMPAPERWIDTH:= width*10 ;
pDMode^.DMPAPERLENGTH:=height*10;
end
else
begin
//设定纸张类型
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE ;
if pagesize=A3 then pDMode^.dmPaperSize := DMPAPER_A3;
if pagesize=A4 then pDMode^.dmPaperSize := DMPAPER_A4;
if pagesize=A5 then pDMode^.dmPaperSize := DMPAPER_A5;
if pagesize=B4 then pDMode^.dmPaperSize := DMPAPER_B4;
if pagesize=B5 then pDMode^.dmPaperSize := DMPAPER_B5;
if pagesize=CSheet then pDMode^.dmPaperSize := DMPAPER_CSheet;
if pagesize=Executive then pDMode^.dmPaperSize := DMPAPER_Executive;
if pagesize=Letter then pDMode^.dmPaperSize:= DMPAPER_Letter;
end;
printer.Orientation:=Orientation;
GlobalUnlock(hDMode);
end;
end ;
Printer.PrinterIndex := Printer.PrinterIndex;
except
showmessage('没有默认选择打印机,或默认打印机不可使!');
exit;
end;
end;
为什么我直接写 Printer.Orientation:= poLandscape;
PrintDBGridEH1.Title.Text:=Panel3.Caption;
PrintDBGridEH1.Preview;还是不行呢?
uses ......, PrViewEh, Printers.
..............
procedure TForm1.bPreviewClick(Sender: TObject);
begin
PrinterPreview.Orientation := poLandscape;
PrintDBGridEh1.Preview;
end ; 如果还不可以的话
就用print setup的设置对话框,选横向打印
@_@
具体直接设置值还未试,但用以上方法应该市可以实现横向打印