線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

QR套表問題請教

尚未結案
longsanglin
初階會員


發表:10
回覆:57
積分:43
註冊:2002-04-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-10 11:59:23 IP:220.130.xxx.xxx 未訂閱
各位大大,    拜讀過套表上的相關文章後, 我還是無法解決問題! 所以想請教各位大大, 煩請幫忙. 環境 : Windows2000 or XP + Delphi 7 + EPSON LQ-680C 印表機伺服器內容已設有所以的規格尺寸. Preview時是正確的, 但印出時, Printer還是跳一整頁(66行)無法跳指定的大小(如:中一刀OR中二刀). 不知原因為何? < >< >
程式如下 :
(AccountForm內容)
procedure TAccountForm.SpeedButton6Click(Sender: TObject);
begin
  inherited;
  if adotActionD.RecordCount>0 then
     begin
      if not ToolsForm.MDIChildExist('TCG3400Form') then
         Application.CreateForm(TTCG3400Form, TCG3400Form)
      else
         begin
          TCG3400Form.Close;
          Application.CreateForm(TTCG3400Form, TCG3400Form)
         end;
      TCG3400Form.WindowState:=wsMinimized;
      if CheckBox1.Checked then
         TCG3400Form.TCG3400rpt.Print
      else
         TCG3400Form.TCG3400rpt.Preview;
     end
  else
     MessageBox(Handle,'該活動無資料可列印!!!',PChar('提示'),MB_OK MB_ICONINFORMATION);
end;    (TCG3400Form內容)
unit TCG3400;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, QRCtrls, QuickRpt, ExtCtrls, WinSpool, DB, ADODB;    type
  TTCG3400Form = class(TForm)
    TCG3400rpt: TQuickRep;
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRLabel8: TQRLabel;
    QRBand2: TQRBand;
    QRBand3: TQRBand;
    dsPrinterSet: TDataSource;
    adodsPrinterSet: TADODataSet;
    adodsPrinterSetDSDesigner: TAutoIncField;
    adodsPrinterSetAddrPrint36: TWideStringField;
    adodsPrinterSetAddrPrint48: TWideStringField;
    adodsPrinterSetPaymentPaper: TWideStringField;
    adodsPrinterSetOtherPrint: TWideStringField;
    adodsPrinterSetFaxPrinter: TWideStringField;
    QRDBText1: TQRDBText;
    QRShape1: TQRShape;
    QRShape2: TQRShape;
    procedure TCG3400rptStartPage(Sender: TCustomQuickRep);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TCG3400rptAfterPreview(Sender: TObject);
    procedure TCG3400rptAfterPrint(Sender: TObject);
  private
    { Private declarations }
    FOldPrinter: String;
    FNewPrinter: String;
    function GetCurrentPrinterName: String;
    function GetInvPrinterName: String;
    procedure ChangePrinter(const APrinterName: String);
  public
    { Public declarations }
  end;      function SetDefaultPrinter(pszPrinter: PChar): BOOL; stdcall;
  function GetDefaultPrinter(pszPrinter: PChar; var pcchBuffer : DWORD) : BOOL; stdcall;    var
  TCG3400Form: TTCG3400Form;    implementation    uses Account, MainDm;    function SetDefaultPrinter; external winspl name 'SetDefaultPrinterA';
function GetDefaultPrinter; external winspl name 'GetDefaultPrinterA';    {$R *.dfm}    procedure TTCG3400Form.ChangePrinter(const APrinterName: String);
begin
  if APrinterName <> '' then SetDefaultPrinter( PChar( APrinterName ) );
end;    function TTCG3400Form.GetCurrentPrinterName: String;
var
  AName: array [0..MAX_PATH] of Char;
  ASize: Cardinal;
begin
  ASize := SizeOf( AName );
  ZeroMemory( @AName[0], ASize );
  GetDefaultPrinter( @AName[0], ASize );
  Result := AName;
end;    function TTCG3400Form.GetInvPrinterName: String;
begin
  Result := adodsPrinterSet.FieldByName('PaymentPaper').AsString;
end;    procedure TTCG3400Form.TCG3400rptStartPage(Sender: TCustomQuickRep);
var wYear,wMonth,wDay : Word;
begin
//   QRLabel2.Caption:='茲收到' Trim(AccountForm.adotActionD.FieldByName('SuppName').Value) '人員參加XX所舉辦';
   QRLabel4.Caption:=AccountForm.Edit1.Text '整';
   if AccountForm.RadioButton1.Checked then
      QRLabel7.Caption:='XXXXXX'
   else if AccountForm.RadioButton2.Checked then
      QRLabel7.Caption:='YYYYYY'';
   DecodeDate(AccountForm.adotActionM.FieldByName('ActDate').Value,wYear,wMonth,wDay);
   QRLabel8.Caption:='中   華   民   國  ' IntToStr(wYear-1911) '  年 ' IntToStr(wMonth) '  月  '  IntToStr(wDay) '  日';
end;    procedure TTCG3400Form.FormCreate(Sender: TObject);
begin
  adodsPrinterSet.Open;
  FOldPrinter := GetCurrentPrinterName;
  FNewPrinter := GetInvPrinterName;
  if not AccountForm.adotActionD.IsEmpty then
   ChangePrinter( FNewPrinter );
end;    procedure TTCG3400Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  ChangePrinter( FOldPrinter );
  adodsPrinterSet.Close;
  TCG3400rpt.Free;
  Action := Cafree;
end;    procedure TTCG3400Form.TCG3400rptAfterPreview(Sender: TObject);
begin
 Close;
end;    procedure TTCG3400Form.TCG3400rptAfterPrint(Sender: TObject);
begin
 Close;
end;    end.
< >< >


        
longsanglin
初階會員


發表:10
回覆:57
積分:43
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-17 18:58:44 IP:220.130.xxx.xxx 未訂閱
各位大大, 有人可指導我一下嗎? help ~
aa4162
一般會員


發表:1
回覆:2
積分:0
註冊:2004-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-18 10:07:36 IP:61.64.xxx.xxx 未訂閱
quickreport3.6可以解決
系統時間:2024-09-09 15:41:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!