全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3137
推到 Plurk!
推到 Facebook!

QuickRpt產生的報表要轉存成jpg,JPG檔內容為空白?

尚未結案
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-11 11:41:29 IP:61.222.xxx.xxx 未訂閱
小妹用QuickRpt產生的報表要轉存成jpg檔的格式,但之前寫好了,使用都正常,但最近因電腦重灌後,delphi當然也就重灌,程式重新編譯後,執行都正常,但出來圖案是沒有內容的,一片空白,想請問,為什麼會這樣呢?    麻煩大家幫我,謝謝!!    我要如何處理,是不是那一個環境或元件沒有安裝…    程式的寫法如下: procedure TForm5.Button4Click(Sender: TObject); var BMP: TBitMap; StoredUnits: TQRUnit; i: integer; StoreDir: string; begin StoreDir:=''; {!!! Assign folder to store here (with ending '\'), leave blank to store in the .exe's folder} QuickRep1.Prepare; StoredUnits:=QuickRep1.Units; QuickRep1.Units:=Pixels;  try for i:=1 to QuickRep1.QRPrinter.PageCount do begin BMP:=TBitMap.Create; try BMP.Width:=Round(QuickRep1.Page.Width); BMP.Height:=Round(QuickRep1.Page.Length); QuickRep1.QRPrinter.PageNumber:=i; BMP.Canvas.Draw(0, 0, QuickRep1.QRPrinter.Page); BMP.SaveToFile(StoreDir+'Page'+IntToStr(i)+'.bmp'); finally BMP.Free; end; end; finally QuickRep1.Units:=StoredUnits; end; end; < >< >< >< >< >< >
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-12 08:55:17 IP:61.219.xxx.xxx 未訂閱
StoreDir:='';-->請先指定至固定DIR,試試看。
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-12 08:57:11 IP:61.219.xxx.xxx 未訂閱
另外QuickRep1.PREVIEW有DATA顯示出來嗎?
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-14 10:06:00 IP:61.222.xxx.xxx 未訂閱
1.用QuickRep1.PREVIEW看是有看到資料… 2.StoreDir:='';指定路徑試後,打開的圖檔內容還是空白的… 謝謝!!
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-14 15:53:57 IP:210.243.xxx.xxx 未訂閱
2.StoreDir:='';指定路徑試後-->可否讓我知道一下,您的設定值?
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-14 20:22:50 IP:61.219.xxx.xxx 未訂閱
我已實作一個,測試無問題,請參考。 ----------------------------------  
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls,
  QuickRpt, QRCtrls, Mask;    type
  TForm1 = class(TForm)
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    Table1: TTable;
    DBGrid1: TDBGrid;
    DBImage1: TDBImage;
    QuickRep1: TQuickRep;
    Button1: TButton;
    TitleBand1: TQRBand;
    ColumnHeaderBand1: TQRBand;
    DetailBand1: TQRBand;
    Table1NAME: TStringField;
    Table1SIZE: TSmallintField;
    Table1WEIGHT: TSmallintField;
    Table1AREA: TStringField;
    Table1BMP: TBlobField;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRDBImage1: TQRDBImage;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel1: TQRLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var BMP: TBitMap;
    StoredUnits: TQRUnit;
    i: integer;
    StoreDir: string;
begin
  //
  StoreDir:='C:\Program Files\Borland\Delphi6\Projects\QuickReport\'; {!!! Assign folder to store here (with ending '\'), leave
  blank to store in the .exe's folder}
  QuickRep1.Prepare;
  StoredUnits := QuickRep1.Units;
  QuickRep1.Units := Pixels;
  showmessage(inttostr(QuickRep1.QRPrinter.PageCount));
  try
    for i:=1 to QuickRep1.QRPrinter.PageCount do
    begin
      BMP:=TBitMap.Create;
      try
        BMP.Width := Round(QuickRep1.Page.Width);
          showmessage(inttostr(BMP.Width));
        BMP.Height:= Round(QuickRep1.Page.Length);
          showmessage(inttostr(BMP.Height));
        QuickRep1.QRPrinter.PageNumber := i;
        BMP.Canvas.Draw(0, 0, QuickRep1.QRPrinter.Page);
        BMP.SaveToFile(StoreDir+'Page'+IntToStr(i)+'.bmp');
      finally
        BMP.Free;
      end;
    end;
  finally
    QuickRep1.Units:=StoredUnits;
  end;
end;    end.
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-16 16:59:55 IP:61.222.xxx.xxx 未訂閱
謝謝您~ 但我不管再怎麼試,還是不行!! 先將報表preview,都有內容,資料都正常,但存成bmp或jpg時,開啟圖檔後,出現的都是整面白色的,沒有其他的內容… ps:所以我在看是不是我什麼東西或是元件沒安裝好呢?但編譯執行都是沒有問題的也!!! sos~~~
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-16 17:56:58 IP:61.222.xxx.xxx 未訂閱
對了,是否可以請你幫我確認… BMP.Canvas.Draw(0, 0, QR_Statement1.QRPrinter.Page); 執行到這指令時,QR_Statement1.QRPrinter.Page出來的值是? 我這邊按F7執行到這時,出現是"NIL",不知道是不是正常的? 謝謝大家幫我…
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-16 22:09:56 IP:61.219.xxx.xxx 未訂閱
執行後非nil,見圖。您有重新做一個試試看嗎?
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-12-05 10:47:52 IP:61.222.xxx.xxx 未訂閱
sorry~~現在才回覆… 有,有重新寫一個測試了,也將你寫的 var BMP: TBitMap; StoredUnits: TQRUnit; i: integer; StoreDir: string; begin // StoreDir:='C:\Program Files\Borland\Delphi6\Projects\QuickReport\'; {!!! Assign folder to store here (with ending '\'), leave blank to store in the .exe's folder} QuickRep1.Prepare; StoredUnits := QuickRep1.Units; QuickRep1.Units := Pixels; showmessage(inttostr(QuickRep1.QRPrinter.PageCount)); try for i:=1 to QuickRep1.QRPrinter.PageCount do begin BMP:=TBitMap.Create; try BMP.Width := Round(QuickRep1.Page.Width); showmessage(inttostr(BMP.Width)); BMP.Height:= Round(QuickRep1.Page.Length); showmessage(inttostr(BMP.Height)); QuickRep1.QRPrinter.PageNumber := i; BMP.Canvas.Draw(0, 0, QuickRep1.QRPrinter.Page); BMP.SaveToFile(StoreDir 'Page' IntToStr(i) '.bmp'); finally BMP.Free; end; end; finally QuickRep1.Units:=StoredUnits; end; 這段copy在我這試,還是這樣…而且QuickRep1.QRPrinter.Page也是nil,所以才會想是不是我的delphi沒灌好或是元件沒安裝好呢!!
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-12-06 10:19:11 IP:210.243.xxx.xxx 未訂閱
我這裡成功的檔案上傳給您,試試看囉 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=82276
crystal
一般會員


發表:2
回覆:5
積分:1
註冊:2003-07-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-12-12 11:42:37 IP:61.222.xxx.xxx 未訂閱
程式下載,在我電腦測試後,還是一樣也…產生出來的報表圖檔是空白的… ,你可以傳你編譯好的執行檔給我試試看? 如果你傳的執行檔是ok的,那可能是我的環境的問題,就要再看是不是那一部份沒有安裝好…
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-12-12 14:04:30 IP:210.243.xxx.xxx 未訂閱
ranylin
一般會員


發表:3
回覆:1
積分:0
註冊:2006-08-22

發送簡訊給我
#14 引用回覆 回覆 發表時間:2006-09-07 09:05:00 IP:210.65.xxx.xxx 未訂閱
您好~ 因為路過此地剛好與我遇到的問題相符,我貼上您完整的code後是可以看到報表,但是程式會出現錯誤訊息"QRPrinter not ready", 請問該如何修改?另外,因為我只有一頁,也請您教教我怎麼修改?謝謝您
alar2006
一般會員


發表:0
回覆:2
積分:0
註冊:2006-12-26

發送簡訊給我
#15 引用回覆 回覆 發表時間:2010-11-29 09:30:45 IP:59.125.xxx.xxx 訂閱
之前我也遇過同樣的問題,修改如下就可以.
原本
BMP.Canvas.Draw(0, 0, Form2.QuickRep1.QRPrinter.Page);
改成
BMP.Canvas.Draw(0, 0, Form2.QuickRep1.QRPrinter.GetPage(i));
應該就可以了
系統時間:2017-12-12 8:48:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!