版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ReportMachine(RM)報(bào)表控件簡(jiǎn)潔用法
RM(ReportMachine)是一個(gè)功能強(qiáng)大的Delphi報(bào)表控件包。運(yùn)用它可以制作出特別困難的報(bào)表。下面講解并
描述最簡(jiǎn)潔的用法:
在Form上放上兩個(gè)數(shù)據(jù)庫(kù)控件:ADOConnection和ADOQuery
設(shè)置好ADOConnection的Connectionstring<>LoginPrompt=Falseo
ADOQuery的Connection指向ADOConnectiono
ADOQuery的SQL設(shè)置好數(shù)據(jù)查詢(xún)語(yǔ)句。
在Form上放上兩個(gè)RM報(bào)表控件:RMDBDataSet和RMReporto
RMDBDataSet的DataSet指向ADOQueryo
RMReport的DalaSet指向RMDBDataSet,
(假如想使最終生成的應(yīng)用程序具備報(bào)表設(shè)計(jì)實(shí)力,還須要放上RMDesigner及件,不須要設(shè)置任何屬性)
雙擊RMReport控件,起先設(shè)計(jì)報(bào)表模板。
對(duì)丁一般比較規(guī)則的報(bào)表,只需向模板中加入四個(gè)Band對(duì)象,分別是:
1)、頁(yè)標(biāo)頭:通常用來(lái)顯示報(bào)表名稱(chēng),時(shí)間等
2)、主項(xiàng)標(biāo)頭:通常用來(lái)顯示欄目名稱(chēng)。
3)、主項(xiàng)數(shù)據(jù):用來(lái)顯示數(shù)據(jù)。
4)、頁(yè)注腳:用來(lái)顯示頁(yè)號(hào),日期等。
設(shè)計(jì)好的模板可以保存在DFM中,也可以保存到獨(dú)立的模板文件中,擴(kuò)展名為RMF,運(yùn)行時(shí)調(diào)入。下面給
出幾個(gè)代碼片斷:
procedureTBrowseForm.Button5Click(Sender:TObject);
var
RMReport:TRMReport;
begin
ifADOQuery1.IsEmptythen
Exit;
try
RMReport:=TRMR叩ort.Create(Self);
RMReport.LoadFromFile('Match.rmf);
RMReport.PrepareReport;
RMReport.ShowRcport;
finally
RMReport.Free;
end;
end;
procedureTForm1.Button1Click(Sender:TObject);
begin
RMReport1.ShowRcport;
end;
//設(shè)計(jì)報(bào)表模板
procedureTForm1.Button2Click(Sender:TObjcct);
begin
RMReportl.LoadFromFile('TTT.rmf);
RMReportl.DesignReport:
end;
對(duì)于大多數(shù)規(guī)則的報(bào)表,以上學(xué)問(wèn)就足夠了。但這只是RM最簡(jiǎn)潔的用法,遠(yuǎn)遠(yuǎn)沒(méi)體現(xiàn)出RM功能的強(qiáng)大。
RM有兩個(gè)吸引人的功能是我目前最須要的:
1)、數(shù)據(jù)可以來(lái)自數(shù)據(jù)庫(kù),也可以來(lái)自其它任何地方,如文件中、內(nèi)存中等。
2)、不肯定須要預(yù)先制作好模板,可以在運(yùn)行時(shí)刻通過(guò)代碼生成模板,這對(duì)于數(shù)據(jù)中字段個(gè)數(shù)不定的狀況特
別有用。
RM雖然功能強(qiáng)大,但用起來(lái)并不覺(jué)的很困難,它是我見(jiàn)過(guò)的為數(shù)不多的報(bào)表控件中最好的一個(gè)。
1.對(duì)于一張紙要兩面打的報(bào)表你有什么好方法?
打印時(shí)可以選擇打奇數(shù)頁(yè)還是打偶數(shù)頁(yè)。
2.怎么能在一個(gè)頁(yè)面中打印固定的條數(shù),另外最終一頁(yè)記錄不夠時(shí)怎么打出空白的格子出來(lái)啊.
固定條數(shù):設(shè)置LinesPerPage
空白格子:設(shè)置AutoAppendBlank=True
3.怎樣屏蔽雙擊報(bào)表進(jìn)入設(shè)計(jì)報(bào)表的界面?
RMReportl.ModifyPrepared:=False
4.怎樣在報(bào)表中增加表合計(jì)???
可以放在標(biāo)題欄,頁(yè)面設(shè)置中選“兩遍報(bào)表”
匯總框的TotalCaIc=True即可
5.我想用代碼把參數(shù)傳遞給報(bào)表中的某一個(gè)TRMMemoView該怎么做?
RMReportl.FindObject(4Memor).Memo.Text:=’ddddd'
或者
RMVariables['a-]:=Pdddd,;〃這樣就可以在報(bào)表中運(yùn)用變量匕1,了。
6.如何能夠不打印重復(fù)內(nèi)容?
Suppres=Truc
7.如何讓打印預(yù)覽時(shí)雙擊不能進(jìn)入報(bào)表編輯器!
設(shè)置RMRcport.ModifyPreview=False
8.如何在報(bào)表程序中限制MEMO的邊框是否顯示
在delphi中:
memo1.LeftFrame.Visible:=False
memo1.TopFrame.Visible:=False;
memo1.RightFrame.Visible:=False;
memo1.BottomFrame.Visible:=False
在報(bào)表的script中
memol.FrameTyp:=15;〃這個(gè)參數(shù)多試幾次就知道如何設(shè)置了
FrameTyp:=0;〃不顯示
9.怎樣變更page的名稱(chēng)和限制它顯示但不打印
可以,在Page1的OnBeforePrint中
begin
Pagel.Visible:=True;
Pagel.Visible:=False;〃不顯示
end;
10.ImportMachine中,如何強(qiáng)制每3行一個(gè)表格
設(shè)置主項(xiàng)數(shù)據(jù)欄:LinesPerPage=3
假如三人一行有方法:設(shè)置主項(xiàng)數(shù)據(jù)欄的Columns=3
用分組打印,分組條件:NowLine>3
在分組標(biāo)頭的OnBeforePrint:
begin
NowLine:=1;
end;
在主項(xiàng)數(shù)據(jù)的OnBeforePrint:
begin
NowLine:=NowLine+1;
end;
11.能否只顯示分組統(tǒng)計(jì)值而不顯示分組數(shù)據(jù)?
可以,設(shè)置主項(xiàng)數(shù)據(jù)欄:Visible=False
統(tǒng)計(jì)框:CalcNoVisible:True
12.能否只對(duì)超過(guò)長(zhǎng)度的單條記錄進(jìn)行折行?
可以,設(shè)置文本框:Stretched=True;wordwrap=True
設(shè)置文本框所在的欄:Slrelched=True;Breaked=True
13.如何實(shí)現(xiàn)打印預(yù)覽的問(wèn)題
RMReportLLoadFromFHe('c:l.rmP);//讀入報(bào)表
RMR叩ortl.ShowReport;//預(yù)覽
RMReport!.PrintRcport;〃打印
RMReport1.DesignReport;〃設(shè)計(jì)
14.請(qǐng)問(wèn)如何在程序中限制:1、縱向打印還是橫向打印。2、分組標(biāo)頭是否每組換頁(yè)。
1.RMReport1,Pages[01.ChangePaper()
2.RMReportl.Pages[0].FindObject(分組標(biāo)頭欄名).Prop「NewPagc[:=False;
15.干脆打印的方法是什么?
RMReport1.ShowPrintDialog:=False;
RMReportI.PrintReport;
16.頁(yè)邊距變更以后,全部控件應(yīng)當(dāng)相應(yīng)的變更位置。
須要在頁(yè)面設(shè)置中不選”縮放到可打印區(qū)域”頁(yè)面居中或
RMReport1.Pages[01.pgMargins:=;〃這樣式試
17.如何從導(dǎo)入一個(gè)rtf文件作為T(mén)RMFonnRcport的PageHeader
var
TempStream:TMemoryStream;
begin
TempStream:=TMemoryStream.Create;
RichEdit1.Lines.SaveToStream(TempStream);
TempStream.Position:=0;
RMFormReportLPageHeadcr.Caption.LoadFromStream(TempStream);
TempStream.Free;
end;
18.怎樣確定報(bào)表模版書(shū)目?
設(shè)置TRMDesigner的TemplateDir
19.我想動(dòng)態(tài)設(shè)”虛擬數(shù)據(jù)集”該怎么設(shè)!
(RMReportl.FindObject('Bandl')asTRMBandView).DataSet:=tRMDBDataSet14;
20.在程序中
RMVariables[*aaa4]:=form1.Caption;
在報(bào)表中就可以運(yùn)用變量'aaa'
21.左邊距:
CurReport.Pages[0].pgMargins.Left:=Round(RMConvertToPixels(亳米*10,rmsuMM))
22.RMVariables[品牌']:=True;
RMVariables「品名]:=,計(jì)算機(jī)二
在Pagel的OnBeforPrint事務(wù)中的代碼如下:
If品牌Then
MessageBox(品名);
23.每頁(yè)只打10條記錄怎么處理?。恐黜?xiàng)數(shù)據(jù)欄LinePerPage=10
24.怎么實(shí)現(xiàn)主項(xiàng)數(shù)據(jù)的統(tǒng)計(jì)?????
最好用欄目注腳欄,在上面放統(tǒng)計(jì)框,然后設(shè)置CalcType即可
25.動(dòng)態(tài)生成報(bào)表時(shí),RM的頁(yè)邊距如何設(shè)定?
TRMPagc.pgMargins:=Rect(30,30,40,40);
26.如何在程序運(yùn)行時(shí),在一個(gè)預(yù)覽或者打印窗口中,一次打開(kāi)多個(gè)報(bào)表文件
用TRMCompositeReport,
RMCompositeReport1.Reports.Clear;
RMCompositcRcport1.Reports.Add(RMRcport1);
RMCompositeReport1.Reports.Add(RMReport2);
RMCompositeReport1.ShowReport;
27.rm如何進(jìn)行套打
Pagel不是有個(gè)BackGroundPic屬性嗎,這個(gè)就是特地做套打的
28.GridViewl能象MicrosoftExcel
實(shí)現(xiàn)a3=al+a2嗎?
可以,a3內(nèi)容
(memol.CalcValue+memo2.CalcValue]
29.
運(yùn)用總頁(yè)數(shù),將CalcMemoView放在頁(yè)頭,組頭,欄目頭時(shí)須要選擇“兩遍報(bào)表",對(duì)打印沒(méi)影響,只打印一遍.
30.如何打印中括號(hào)如:[2023]
在memoview的OnBeforePrint中
begin
memo:=[2023]';
end;
或者把下,丁定義成變量:
RMVariables[*ar]:=4[\
RMVariables[ta2t
reportmachine開(kāi)發(fā)運(yùn)用手冊(cè)-創(chuàng)建報(bào)表2023-02-1013:08
創(chuàng)建報(bào)表:
創(chuàng)建一個(gè)報(bào)表由下面幾步組成:
1、選擇數(shù)據(jù):選擇報(bào)表中用到的數(shù)據(jù)源
2、設(shè)計(jì)報(bào)表模板:利用區(qū)域(稱(chēng)為Band)將報(bào)表分布不同的部分,確定報(bào)表樣式。
3、處理:用報(bào)表內(nèi)置腳本語(yǔ)言或在delphi中對(duì)報(bào)表中用的的數(shù)據(jù),報(bào)表模板等進(jìn)行處理
4、生成報(bào)表:依據(jù)報(bào)表模板+數(shù)據(jù)源,生成最終的報(bào)表。
選擇數(shù)據(jù)源:
大多數(shù)報(bào)表須要的數(shù)據(jù)都是來(lái)自數(shù)據(jù)庫(kù)。TTable和TQuery組件可以作為報(bào)表的數(shù)據(jù)源??偟膩?lái)說(shuō)它可以
運(yùn)用任何一個(gè)從TDataSet組件繼承的子類(lèi)。每個(gè)報(bào)表中用到的TDataSet都要有一個(gè)與之對(duì)應(yīng)的
TRMDBDataSeto
除了TDataSet,ReportMachine頁(yè)可以運(yùn)用任何數(shù)據(jù)源(數(shù)組,文件,字符網(wǎng)格等等).在這種狀況下,
程序必需自己限制非數(shù)據(jù)庫(kù)源的存取。你可以用TRMUserDataSet便利地把數(shù)據(jù)傳送到報(bào)表中。
設(shè)計(jì)報(bào)表模板:
報(bào)表模板本身就是描述怎樣可以看到正確的報(bào)表。每個(gè)報(bào)表模板由多個(gè)區(qū)域組成,ReportMachine把這些
區(qū)域稱(chēng)為“Band”。有兩種類(lèi)型的Band:固定區(qū)域Band(比如報(bào)表標(biāo)題,頁(yè)標(biāo)頭,頁(yè)注腳等等)和用于顯示數(shù)
據(jù)集中全部記錄的Band(比如主項(xiàng)數(shù)據(jù)欄)。數(shù)據(jù)Band須要聯(lián)接到數(shù)據(jù)源,內(nèi)容是數(shù)據(jù)源中的記錄。
在ReportMachine中供應(yīng)了報(bào)表開(kāi)發(fā)的可視化環(huán)境(報(bào)表設(shè)計(jì)器,這個(gè)設(shè)計(jì)器也可以供應(yīng)應(yīng)你的EndUser,
以便利你的EndUser自己修改報(bào)表模板)用于創(chuàng)建報(bào)表。報(bào)表設(shè)計(jì)器功能強(qiáng)勁,簡(jiǎn)潔又易于運(yùn)用。報(bào)表設(shè)計(jì)器
的界面由帶有浮動(dòng)的工具欄,可以自由地變更它們的位置,運(yùn)用對(duì)象視察器(ObjectsInspector)可以限制對(duì)
象的屬性,類(lèi)似于DelphiIDE中的那個(gè)。
處理:
在生成報(bào)表的時(shí)候,須要對(duì)輸入的數(shù)據(jù)進(jìn)行某種處理(比如格式化),:艮表模板須要某些修改(比如報(bào)
表模板中某個(gè)文本框須要變更字體)。
實(shí)現(xiàn)這個(gè)處理可以在Delphi中的TRMRepon的事務(wù)處理中編寫(xiě)代碼,這個(gè)方法并不通用,因?yàn)樗辉试S
在Delphi外創(chuàng)建報(bào)表而無(wú)需重新編譯。這就是為什么在ReportMachinet中內(nèi)置腳本語(yǔ)言,ReportMachine的內(nèi)
置腳本語(yǔ)言特別類(lèi)似于ObjeciPascal,功能強(qiáng)大。用這個(gè)腳本語(yǔ)言編寫(xiě)事務(wù)處理代碼,這就可以讓你創(chuàng)建困難
的處理而無(wú)需在Delphi中編寫(xiě)代碼,協(xié)作報(bào)表設(shè)計(jì)器,不須要修改某個(gè)報(bào)表而重新編譯項(xiàng)目??梢詫?shí)現(xiàn)報(bào)表
于你的項(xiàng)目分別。
報(bào)表腳本例子:
unitReport;
interface
procedureMemo1OnBeforePrint(Sender:TObject);
implementation
procedureMemo1OnBeforePrint(Sender:TObject);
begin
Memo1.Text:='test';
end;
procedureMain;
begin
end;
end.
生成報(bào)表:
生成報(bào)表是ReportMachine依據(jù)報(bào)表模板,對(duì)數(shù)據(jù)源進(jìn)行加工處理生成最終的報(bào)表并能在點(diǎn)擊“預(yù)覽”按鈕
后進(jìn)行預(yù)覽的過(guò)程。在ReportMachine中打算好的報(bào)表是一組對(duì)象的集合,描述報(bào)表處理后各頁(yè)面所包含的內(nèi)
容。這允許你可以修改生成的報(bào)表頁(yè)面,通過(guò)在設(shè)計(jì)器中調(diào)用所需的頁(yè)面。除此之外,還可以描述在預(yù)覽窗
口中鼠標(biāo)點(diǎn)擊對(duì)象的反應(yīng)。這將讓你更簡(jiǎn)潔地組織你的工作(在一個(gè)報(bào)表對(duì)象點(diǎn)擊可以產(chǎn)生一個(gè)更具體的新
報(bào)表)。
4ReportMachine的預(yù)覽窗口類(lèi)似于MicrosoftWord:在一個(gè)窗口中可以看到多個(gè)頁(yè)面,并且可用用鼠標(biāo)
拖動(dòng),須要的話(huà),可以通過(guò)雙擊調(diào)出編輯器修改當(dāng)前頁(yè)。
職工工資發(fā)放一覽表
打印日煙:2002-1-21
旗底發(fā)
姓名初'7出生年月總性
招其它
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小程序隱私協(xié)議范文7篇
- 中醫(yī)生理學(xué)測(cè)試題及答案
- 2025年正德職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 專(zhuān)題02 代詞(第02期) 帶解析
- 能源供應(yīng)的應(yīng)急預(yù)案
- 幼兒重陽(yáng)節(jié)教育活動(dòng)策劃方案五篇
- ios培訓(xùn)師聘用合同
- 工業(yè)研發(fā)設(shè)計(jì)軟件在各行業(yè)的應(yīng)用現(xiàn)狀與前景
- 小轎車(chē)車(chē)輛租賃合同年
- 藥店?duì)I業(yè)員聘用合同
- 城市基礎(chǔ)設(shè)施修繕工程的重點(diǎn)與應(yīng)對(duì)措施
- GB 12710-2024焦化安全規(guī)范
- 【??途W(wǎng)】2024秋季校園招聘白皮書(shū)
- 2024-2025銀行對(duì)公業(yè)務(wù)場(chǎng)景金融創(chuàng)新報(bào)告
- 2025屆鄭州市高三一診考試英語(yǔ)試卷含解析
- 腫瘤中醫(yī)治療及調(diào)養(yǎng)
- 2022年公務(wù)員多省聯(lián)考《申論》真題(遼寧A卷)及答案解析
- 北師大版四年級(jí)下冊(cè)數(shù)學(xué)第一單元測(cè)試卷帶答案
- 術(shù)后肺炎預(yù)防和控制專(zhuān)家共識(shí)解讀課件
- 中石化高級(jí)職稱(chēng)英語(yǔ)考試
- 小學(xué)五年級(jí)英語(yǔ)閱讀理解(帶答案)
評(píng)論
0/150
提交評(píng)論