用 PrintDBGridEH 的时候,怎么让它默认就是横向打印???  解决就结贴

解决方案 »

  1.   

    转的代码
    ---------
    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.   

    2楼的代码中..Printer这个类好象没定义啊....
      

  3.   

    to :Kshape([伟大的大伟!]/一心考研中!) 
    为什么我直接写 Printer.Orientation:= poLandscape;
      PrintDBGridEH1.Title.Text:=Panel3.Caption;
      PrintDBGridEH1.Preview;还是不行呢?
      

  4.   

    TPrintDBGridEh  并没有专门的属性来设置页面特性。在调用打印或打印预览方法前,你必须设置你将要执行打印的打印源( Orientation )。 
    uses  ......, PrViewEh, Printers.
    .............. 
    procedure  TForm1.bPreviewClick(Sender: TObject); 
    begin 
      PrinterPreview.Orientation := poLandscape; 
      PrintDBGridEh1.Preview; 
    end ; 如果还不可以的话
    就用print setup的设置对话框,选横向打印
    @_@
    具体直接设置值还未试,但用以上方法应该市可以实现横向打印