成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>開發編程>>綜合開發>>新聞內容
Text字段Delphi中手動分頁輸出
作者:wuaihua/西部E網 發布時間:2004-4-9 11:37:19 文章來源:西部E網

聲明:西部E網(www.wsalc.com) wuaihua 原創,如轉載請注明出處

作者:wuaihua    emailRiver2003@126.com  QQ:18408685

  說明:本人使用的是Delphi6
  由于本人在制作打印報表時遇到以下問題:在設計時從數據庫中取出的某一字段類型為Text型,經過用戶在界面添加新的內容后不存入數據庫 直接打印輸出,大家都知道Text的長度較長[text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。],而且在制作 報表時要求單獨輸出,所以就有可能存在分成多頁輸出的問題。而Delphi中通常對分頁輸出的處理是使用QReport控件組中的TQRDBRichText控 件放在報表的TQRSubDetail子表控件上,要求是TQRDBRichText要與數據源連接!但是例中的Text數據類型的值是選賦值到TRichEdit控件中,經 過用戶對內容的再次添加后直接打印輸出,由于要考虛程序執行效率,不重新寫入數據庫,所以無法通上面提到的賦值給TQRDBRichText控件的 辦法去實現。所以一切分頁打印工作必須通過程序手動分頁打印處理。

  首先對上面提到的實際情況特性進行分析:

  1.所有Text字段的內容以及新增的內空都在TRichEdit控件中,TRichEdit是界面上的Win32組的控件。

  2.輸出報表是要把錄入時的格式也能夠完全的展示出來,因為TRichEdit控件中可以輸入控制符,例如:"回車符",所以也只有選用能夠把 TRichEdit.Text的所以字符都能夠接收的TQRRichText控件。

  3.按2中的控件已經可以確定,所以下一步就要考虛把TRichEdit.Text的值賦給TQRRichText控件。通過TQRRichText.Lines.Add()方法逐行加入。

  4.用戶界面上的TRichEdit(取名為RichEditUser)與報表界面上的TQRRichText(取名為QRRichTextQRp)的寬度可能有所不同,所以再要添加一 個TQRRichText的控件(取名為QRRichText1),將QRRichText1.Width與最終報表控件上的QRRichTextQRp.Width相同字體字號也要相同,目的 是將界面上的RichEditUser.text內容賦到QRRichText1中能夠得到最終輸出報表上QRRichTextQRp真實總行數,然后將總行數進行分頁處理。


  具體算程序及算法如下:

procedure TFrmWorkBill.Print;
var
  FrmGroupPrint: TFrm_A_AF_GroupInfoPrint;
 
  PageCount,k,LinesCount,PageRow: Integer; //PageCount頁數循環中間變量,LinesCount總行數,k新一頁在取的QRRichText1.Lines的起點數
begin
  PageRow := 58;                           //每頁中QRRichTextQRp中容納的行數,此值根據字體大小經過實際測算得出
  QRRichText1.Lines.Clera;
  QRRichText1.Lines.Add(RichEditUser.Text);  //將用戶介面的RichEditUser.Text內容賦值到QRRichText1.Lines.Add中
  LinesCount := QRRichText1.Lines.Count;

  for PageCount := 1 to LinesCount div PageRow  + 1 do begin
    WorkTallyPrint := TFrm_Work_Tally_Print.create(self);  //WorkTallyPrint是報表所在的窗體
    WorkTallyPrint.ClareQRRich;
    WorkTallyPrint.AssignRep(PageCount);    //PageCount將當前所在頁傳給報表,作為頁號標記,相關過程在WorkTallyPrint中

    if PageCount = LinesCount div PageRow  + 1 then    //判斷如果是末頁
      for k := (PageCount - 1) * PageRow  + 1 to LinesCount do begin
        WorkTallyPrint.QRRichTextQRp.Lines.Add(QRRichText1.Lines[k  - 1]);
      end

    else                                         //判斷非末頁
      for k := (PageCount - 1) * PageRow  + 1 to PageCount * PageRow  do begin
        WorkTallyPrint.QRRichTextQRp.Lines.Add(QRRichText1.Lines[k  - 1]);
      end;
    WorkTallyPrint.QuickRep1.Print;
    WorkTallyPrint.Free;
  end;
end;


最新更新
·wml中頁面自動跳轉的實現方法
·Alexa排名數據接口的簡要介紹
·利用U盤進行軟件加密的方法(VB)
·優秀程序員的十個習慣
·項目管理:如何逃離垃圾客戶
·QQ2009去廣告部分核心源代碼
·讓程序更容易理解:13個代碼注釋的小技
·nx1和nx2后綴名是什么數據庫文件?
·正則表達式符號解釋大全
·什么是RIA?介紹幾種RIA客戶端開發技術
相關信息
·Delphi中Hash表的使用方法
·利用Delphi控制Windows任務欄
·Delphi常用控件命名縮寫規范
·Delphi中建議使用的語句
·用Delphi實現圖像放大鏡
·Delphi編程禁止用戶關閉操作系統
·[推薦]Delphi快捷鍵大全
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個傳說
丟了幸福的豬
找個人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因為寂寞才想你
愛上你等于愛上了錯
在心里從此永遠有個你
一個人的寂寞兩個人的錯
主站蜘蛛池模板: 西畴县| 遵化市| 云霄县| 利川市| 德兴市| 博兴县| 中西区| 修武县| 壤塘县| 金平| 工布江达县| 名山县| 开江县| 筠连县| 石台县| 恭城| 聂拉木县| 金阳县| 湘潭市| 漯河市| 尉犁县| 彝良县| 光山县| 朝阳县| 卢氏县| 察哈| 海宁市| 铁力市| 双柏县| 德庆县| 苏尼特左旗| 繁昌县| 宁乡县| 和田县| 肃南| 平安县| 瑞安市| 漠河县| 辽阳市| 盐亭县| 贵溪市|