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

ReportBuilder預覽時正確,但列印出來時卻不是預覽時的樣子??

尚未結案
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-09 10:12:55 IP:61.66.xxx.xxx 未訂閱
嗨 不知道有人遇過這樣的情形呢? 我在detail band放了2個ppimage元件, 在DetailBandBeforeGenerate event裡這麼寫
procedure Tppckrpt_frm.ppDetailBand1BeforeGenerate(Sender: TObject);
var
  index1: integer;
  index2: integer;
begin
  if(row_times >= row_count)then exit;
  index1:= row_times * 2   1;
  index2:= row_times * 2   2;
  ppimage1.Picture:= nil;
  ppimage2.Picture:= nil;
  if(buff_count >= index1)then ppimage1.Picture.LoadFromFile(buff[index1 - 1]);
  if(buff_count >= index2)then ppimage2.Picture.LoadFromFile(buff[index2 - 1]);
  ppimage1.Stretch:= true;
  ppimage2.Stretch:= true;
  inc(row_times);
end;
列印的button這麼寫
  row_times:= 0;
  if(buff_count > 0)then begin
    row_count:= 0;
    row_count:= buff_count div 2;
    if((buff_count mod 2) > 0)then inc(row_count);
    ppJITPipeLine1.InitialIndex:= 1;
    ppJITPipeLine1.RecordCount:= row_count;
    ppReport1.Print;
  end;
當我按下button時 priview的狀況很正常 圖片看到的假設是 pic1 pic2 pic3 pic4 但真正按下ReportBuilder的印表時 印表機的輸出卻變成 pic1 pic2 pic1 pic2 這該怎麼辦啊 有遇過這個情形的網友幫我一下囉 謝謝!!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-16 22:01:23 IP:211.20.xxx.xxx 未訂閱
從這片斷的程式碼很看得出來問題是出在那裏 1.依你所述預覽是正確的,那列印不就可以比照預覽的程式碼嗎?但你只貼出列印的程式碼,別人很難找到問題,是否可以貼出預覽的部份或完整的程式碼 2.照理說預覽比列印的程式更容易出問題,因為預覽可以前前後後的翻頁,而列印卻一路到底,不是嗎?再加上預覽時翻回前一頁時,row_times的值到底是多少,我倒是滿懷疑你說預覽看到的是正確的(不要誤會,這不是吐槽,這只是要讓真正的原因顯現出來的心中疑問)    3.建議你使用ClientDataSet,定義兩組欄位 ....  Field1: 存放Pic1的路徑檔名 Field2: 存放Pic2的路徑檔名    將存放在陣列的檔名分別放到該欄位    然後使用
procedure Tppckrpt_frm.ppDetailBand1BeforeGenerate(Sender: TObject);
begin
  ppimage1.Picture:= nil;
  ppimage2.Picture:= nil;
  If ClientDataSet.FieldByName('Field1').AsString <> '' Then 
     ppimage1.Picture.LoadFromFile(ClientDataSet.FieldByName('Field1').AsString );
  If ClientDataSet.FieldByName('Field2').AsString <> '' Then 
     ppimage2.Picture.LoadFromFile(ClientDataSet.FieldByName('Field2').AsString );
  ppimage1.Stretch:= true;
  ppimage2.Stretch:= true;
end;
參考以下連結,有類似的觀念 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44705 發表人 - chance36 於 2004/02/16 22:04:03
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-17 10:29:27 IP:211.22.xxx.xxx 未訂閱
hi Chance36 被你猜中了 問題就出在row_times變數 那個row_times:= 0 不能寫在列印button被按下那邊 而是要寫在
procedure Tppckrpt_frm.ppReport1BeforePrint(Sender: TObject);
begin
  row_times:= 0;
end;
這樣就沒問題了 另reportbuilder預覽的話是直接叫用他內建的viwer 不需要其他的程式碼 :)
系統時間:2024-05-16 22:35:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!