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

請問QuickReport換行的問題

尚未結案
mini88888
一般會員


發表:6
回覆:4
積分:2
註冊:2005-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-03 18:17:09 IP:59.120.xxx.xxx 未訂閱
因為我要連線到資料庫取資料,透過QuickReport,好像MEMO無法直接在屬性內設連線,而且要怎麼換行呢?可以請知道的人告訴我嗎??謝謝!! 初學者留....
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-04 01:28:12 IP:219.68.xxx.xxx 未訂閱
1.使用QRDBMemo就可以連到資料庫了,使用方式DBMemo一樣。 2.如何換行,你資料存到資料庫時,如果有換行,讀出來當讓就有換行。 3.如果完全沒概念,請先去Borlan\Delphi\Demos\QuickRep,將範例玩一玩,裡面有展示各種報表模式,有問題在發問。
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-04 10:17:45 IP:211.22.xxx.xxx 未訂閱
請使用 QRDBText, 就可以連接資料庫 至於換行的部份 QRDBText 的 WordWrap 打開就可以了. 若是希望 QRDBText 的顯示範圍會自動調整再打開 AutoStreth 屬性即可. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
mini88888
一般會員


發表:6
回覆:4
積分:2
註冊:2005-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-04 10:51:56 IP:59.120.xxx.xxx 未訂閱
您好.... 此方法..(換行的部份 QRDBText 的 WordWrap 打開就可以了) 我試過了...可是並不會換行...,不知是否有別的方法
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-04 12:15:26 IP:220.228.xxx.xxx 未訂閱
這個問題我也遇到過, 後來將他改成TQRMemo, 在所屬Band的BeforePrint裡再將值填入 例如下面的範例, 這範例我有考慮到中文字的問題, 所以多了一些工
QRMemo1.Lines.Clear;
  b:='';
  AString := TStringList.Create;
  AString.Text := Query1.FieldByName(Note').AsString;
  if trim(AString.Text) <> '' then begin
     for a:= 0 to Astring.Count -1 do begin
       b := b   StringReplace(Trim(Astring.Strings[a]),'?','',[rfReplaceAll]) ';' ;
     end;
     Repeat
        Str := Copy(b, 1, 32);
        if IsLeadByteTw(Str) then begin
           Str := Copy(b, 1, 33);
           Delete(b, 1, 33);
        end
        else
           Delete(b, 1, 32);
        QRMemo1.Lines.Add(Str);
     Until Length(b) <= 0;
  end;
  AString.Free;
////////////////////////////////////////////
function IsLeadByteTw(InStr : String):Boolean;
var ws:widestring;
begin
   ws:=InStr;
   if IntToHex(Word(ws[Length(WS)]),2)='00' then
       Result := True // 中文
   else // 英文
       Result := False;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-04 15:46:05 IP:211.22.xxx.xxx 未訂閱
因為是外國人所開發的元件, 換行的規則是依據英文書寫規則. 簡單的說也就是在一行的最後一個空白字元作換行動作. 所以在連續的中文字下沒有空白可做換行的選擇位置. ㄧ般普遍的處理方式就是改用 QRMemo 作替代顯示. 自行在 BeforePrint 寫程式來判斷中文以及換行長度 然後填入 QRMemo 來列印. 範例就如 Miles 所貼. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
系統時間:2024-04-20 3:15:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!