亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用delphi編寫醫院的復雜報表

2019-11-18 18:56:55
字體:
來源:轉載
供稿:網友
江蘇省無錫市中醫醫院電腦房
袁波
---- 我院的信息管理系統采用delphi編程,由于各科要求不同,報表形式也多種多樣,編寫起來讓人頭痛。delphi運行在WINDOWS平臺下,打印同DOS下完全不同,而Quick Report即難以控制又占用資源,對于一個稍復雜的、有特殊要求的報表,Quick Report無法實現。這里介紹幾個在編程中遇到的比較典型的報表的實現方法。

---- 1、哪個單位的財務科都有幾本厚厚的臺帳,我院財務科提出打印藥庫的臺帳,好脫掉手工帳,也算是辦公現代化了,要求合情合理,院長也說應當如此??粗攧湛铺峁┑募t綠相間的、統一印制的、行間距3毫米的臺帳專用小卡片,我不由想到中國人節儉的美德??紤]到每個藥品至少打印一張,而且表格線一個都不能少,加上中醫院藥品有二千多種,所以這個報表必須用激光打印機來打?。ㄖ劣谌绾巫屧洪L同意購買激光打印機,則是另一回事,辦公自動化哪能沒有代價呢)。程序實現的思路基本上是把打印紙當做畫布在上面畫一個個小矩形,具體由以下幾個過程實現:(設Form名為Ttzview)。

先在程序中定義二個類:
titlerecord=record
Currect:Trect;
Atitle:string;
end;
detailrecord=record
Arect:Trect;
alignment:Word;
end;

---- 再建立以下四個過程;
---- RectDraw(Acanvas:Tcanvas;s:string;R:Trect;frame:boolean;position:word);

---- 這個過程就是畫矩形用的,frame決定是否畫線(這里當然要畫啦?。?;

---- PRintinitit(firsttop,firstleft:integer);

---- 這個過程是初始化用的,就是定義各個小矩形在紙上的位置;

---- printtitle(acanvas:Tcanvas);

---- 這個過程是打印表頭的,因為表頭的字總是要大一些;

---- printdetail(acanvas:Tcanvas;Qtz:Tdataset;acount:integer;firstpage:integer);

---- 這個過程才是打印具體內容的,一頁打印40行,不夠就換頁,總之一頁只能是一個藥品;

---- printhj(acanvas:Tcanvas);

---- 一看就知道,這個過程就是打印合計的啦!

---- 只要建個Botton,順序調用printinitit,printtitle,printdetail,printhj這四個過程就行了,

---- (調用格式:printtitle(printer.canvas);)

---- 對了,Qtz就是查詢出來的臺帳數據,如何生成的這里就不談了。

---- 具體程序如下

---- 此程序在delphi1,delphi3版本WIN3.2,WIN95,WIN97,WIN98平臺下運行通過,順便提供臺帳數據庫的庫結構

---- 2、非常復雜,無法取巧的報表

---- 我院腫瘤科需要打印病人的病案,這可是特色??片F代化建設的一部分,衛生局要來檢查的,所以必須完成任務。每一個病案有100多個項目,若用Qreport,中間如果要加減一個項目(這事常有),幾十個項目的調整排列會使人昏倒。我一下子建立100多個臨時變量,在虛擬的畫布上畫啊畫,運行在我的PII233,64M內存的機子上倒是順順當當的,不過換到腫瘤科的486,8M內存的機子上時(大家別笑),系統堆棧馬上溢出,所以只好祭出指針大法(我的編程水平好象又有長進,竊喜),方法如下:

先建立titleprint類:
titleprint=^Titlerecord;
titlerecord=record
Currect:Trect;
Atitle:string[50];
end;
再建立過程printnow(Form的名稱叫
zlk,printdot就是打印機的點數,一般針打是180);
procedure Tzlk.printnow(acanvas:Tcanvas);
var i,x,y,pc_count:integer;
myprint:array[0..200] of titleprint;
begin
firsttop:=round(int(0.5/2.54*printdot));
firstleft:=round(int(0.1/2.54*printdot));
rowheight:=round(int(0.7/2.54*printdot));
x:=0+firstleft;y:=round(int
(1.3/2.54*printdot))+firsttop;
pc_count:=0;
inc(pc_count); new(myprint[pc_count]);
myprint[pc_count]^.currect:=rect
(x+round(int(0.1/2.54*printdot))+firstleft,y,
x+round(int(3.0/2.54*printdot))+firstleft,
y+firsttop+round(int(0.5/2.54*printdot)));
myprint[pc_count]^.atitle:=Lname.
caption+DBname.text;
ACanvas.MoveTo(myprint[pc_count]^.
currect.left,
myprint[pc_count]^.currect.top-round
(rowheight/5));
{下面的四行還要重復100多次,基本差不多,
就不都寫出來賺稿費了}
inc(pc_count); new(myprint[pc_count]);
myprint[pc_count]^.currect:=scalerect(
myprint[pc_count-1]^.currect,round(int
(2.5/2.54*printdot)),0);
myprint[pc_count]^.atitle:=Lxb.caption+Cxb.text;
ACanvas.LineTo(myprint[i]^.currect.right,
myprint[i]^.currect.top-round(rowheight/5));
.......

{打印}
printtitle(acanvas);
{這個函數就不提供了,表頭不要也沒關系}
for i:=1 to pc_count do
begin
RectDraw(Acanvas,myprint[i]^.atitle,
myprint[i]^.currect,false,
dt_left or dt_singleline or dt_vcenter);
end;
dispose(myprint[pc_count]);
{別忘了把指針占用的內存釋放}
end;

---- 最后建個Botton,加個是否真的打印的判斷,再調用這幾個函數就行了。
---- (調用格式:printtitle(printer.canvas);)

---- 看了以上兩個例子,是不是覺得WINDOWS下的打印其實很簡單,就跟你手工畫表一樣,而且表格內容的位置是居中、居左、還是居右,全由打印內容的Alignment決定,打印格式由內容的Display Format決定,用不著自己去算,方便極了。


上一篇:如何用Delphi編寫自己的可視化控件

下一篇:使用Delphi獲取系統信息

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女久久| 中文字幕不卡在线视频极品| 神马国产精品影院av| 欧美激情性做爰免费视频| www.日韩欧美| 欧美成人午夜免费视在线看片| 亚洲国产日韩欧美在线动漫| 亚洲激情久久久| 精品久久久久久久久久| 91精品久久久久久久久青青| 欧美性xxxx| 亚洲大胆美女视频| 精品久久久久久久久久国产| 国产美女高潮久久白浆| 亚洲二区在线播放视频| 精品福利视频导航| 久久99热精品这里久久精品| 成人黄色片网站| 国产成人精品视频在线| 96精品久久久久中文字幕| 日韩av片免费在线观看| 国产欧美va欧美va香蕉在线| 国产精品嫩草影院一区二区| 国产精品高潮视频| 国内精品久久久久| 日韩欧美国产免费播放| 免费av一区二区| 热草久综合在线| 国产va免费精品高清在线观看| 国产亚洲欧洲高清| 久久久久久国产精品美女| 欧美日韩一区免费| 欧美日韩激情美女| 亚洲伊人第一页| 日韩电影免费在线观看| 91免费国产视频| 成人免费观看网址| 欧美老女人xx| 欧美高清视频一区二区| 亚洲第一av在线| 一本色道久久88综合日韩精品| 一本大道亚洲视频| 亚洲美女喷白浆| 欧美在线一区二区三区四| 国产精品日韩av| 在线亚洲午夜片av大片| 日韩美女写真福利在线观看| 日韩少妇与小伙激情| 激情久久av一区av二区av三区| 538国产精品一区二区免费视频| 欧美日韩亚洲天堂| 亚洲精品第一国产综合精品| 亚洲一区二区日本| 国产精品成人aaaaa网站| 欧美福利视频在线观看| 欧美刺激性大交免费视频| 久久久久北条麻妃免费看| 国产精品自拍偷拍| 九九久久国产精品| 精品成人av一区| 久久这里有精品视频| 亚洲影院高清在线| 欧美成人精品激情在线观看| 日本高清+成人网在线观看| 欧美大片免费看| 国产成人精品国内自产拍免费看| 91伊人影院在线播放| 日韩精品久久久久久福利| 亚洲二区中文字幕| 中文字幕欧美国内| 欧美日韩美女在线观看| 国产美女久久精品| 日韩中文字幕国产精品| 91日本在线观看| 久久99热精品这里久久精品| 在线视频中文亚洲| 国产精品狠色婷| 久久久99免费视频| 91在线高清视频| 国产主播在线一区| 国产精品欧美日韩一区二区| 精品久久久久久久久久国产| 国产精品久久久久77777| 欧美性色视频在线| 久久久久久国产精品| 国产成人精品一区二区三区| 97在线观看免费高清| 国产成人精品久久二区二区91| 国产亚洲欧美日韩一区二区| 欧美老少做受xxxx高潮| zzjj国产精品一区二区| 中文字幕亚洲情99在线| 亚洲精品美女久久久久| 亚洲天堂第一页| 国产精品视频1区| 国产成人涩涩涩视频在线观看| 色噜噜狠狠狠综合曰曰曰88av| 国产成人在线播放| www日韩中文字幕在线看| 国产精品久久在线观看| 久久久久久成人| 激情亚洲一区二区三区四区| 亚洲精品国产精品国自产观看浪潮| 精品自拍视频在线观看| 久久久91精品国产一区不卡| 国产综合久久久久久| 日韩成人在线视频网站| 懂色aⅴ精品一区二区三区蜜月| 97精品视频在线观看| 成人乱人伦精品视频在线观看| 丝袜美腿精品国产二区| 在线日韩日本国产亚洲| 欧美大人香蕉在线| 亲爱的老师9免费观看全集电视剧| 亚洲欧洲日产国产网站| 91视频国产一区| 国产有码在线一区二区视频| 日韩欧美在线免费观看| 国产成人一区三区| 中文字幕日韩av电影| 国自产精品手机在线观看视频| 亚洲激情国产精品| 青青在线视频一区二区三区| 亚洲综合日韩在线| 国产精品成人一区| 国产午夜精品全部视频在线播放| 日本视频久久久| 日韩免费高清在线观看| 久久91精品国产91久久跳| 久久精品国产99国产精品澳门| 色婷婷**av毛片一区| 亚洲人成电影在线播放| 2019亚洲男人天堂| 国产精品久久久久久久app| 欧美日韩国产一区在线| 自拍视频国产精品| 日韩欧美亚洲成人| 欧美精品日韩三级| 伊人久久大香线蕉av一区二区| 亚洲福利视频在线| 亚洲深夜福利视频| 日本a级片电影一区二区| 国产日韩av在线| 国产精品一区专区欧美日韩| 亚洲午夜性刺激影院| 精品国产鲁一鲁一区二区张丽| 欧美性猛交xxxxx免费看| 亚洲精品720p| 日韩成人网免费视频| 黄色91在线观看| 日韩三级影视基地| 色偷偷av一区二区三区乱| 亚洲精品国精品久久99热一| 亚洲欧洲成视频免费观看| 国内精品一区二区三区| 久久久在线视频| 亚洲永久在线观看| 俺去亚洲欧洲欧美日韩| 羞羞色国产精品| 岛国av在线不卡| 亚洲精品短视频| 国产一区二区三区视频免费| 性欧美xxxx视频在线观看| 日韩在线播放一区|