麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

Report Machine(RM)報表控件簡單用法-delphi

2019-11-06 08:03:50
字體:
來源:轉載
供稿:網友

RM(Report Machine)是一個功能強大的Delphi報表控件包。使用它可以制作出非常復雜的報表。下面講述最簡單的用法:

在Form上放上兩個數據庫控件:ADOConnection和ADOQuery設置好ADOConnection的ConnectionString。LoginPRompt=False。ADOQuery的Connection指向ADOConnection。ADOQuery的SQL設置好數據查詢語句。

在Form上放上兩個RM報表控件:RMDBDataSet和RMReport。RMDBDataSet的DataSet指向ADOQuery。RMReport的DataSet指向RMDBDataSet。

(如果想使最終生成的應用程序具備報表設計能力,還需要放上RMDesigner控件,不需要設置任何屬性)

雙擊RMReport控件,開始設計報表模板。

對于一般比較規則的報表,只需向模板中加入四個Band對象,分別是:1)、頁標頭:通常用來顯示報表名稱,時間等2)、主項標頭:通常用來顯示欄目名稱。3)、主項數據:用來顯示數據。4)、頁注腳:用來顯示頁號,日期等。

設計好的模板可以保存在DFM中,也可以保存到獨立的模板文件中,擴展名為RMF,運行時調入。下面給出幾個代碼片斷:

procedure TBrowseForm.Button5Click(Sender: TObject);varRMReport:TRMReport;beginif ADOQuery1.IsEmpty thenExit;tryRMReport := TRMReport.Create(Self);RMReport.LoadFromFile('Match.rmf');RMReport.PrepareReport;RMReport.ShowReport;finallyRMReport.Free;end;end;

procedure TForm1.Button1Click(Sender: TObject);beginRMReport1.ShowReport;end;

// 設計報表模板procedure TForm1.Button2Click(Sender: TObject);beginRMReport1.LoadFromFile('TTT.rmf');RMReport1.DesignReport;end;

對于大多數規則的報表,以上知識就足夠了。但這只是RM最簡單的用法,遠遠沒體現出RM功能的強大。

RM有兩個吸引人的功能是我目前最需要的:

1)、數據可以來自數據庫,也可以來自其它任何地方,如文件中、內存中等。2)、不一定需要預先制作好模板,可以在運行時刻通過代碼生成模板,這對于數據中字段個數不定的情況非常有用。

RM雖然功能強大,但用起來并不覺的很復雜,它是我見過的為數不多的報表控件中最好的一個。

1.對于一張紙要兩面打的報表你有什么好辦法?打印時可以選擇打奇數頁還是打偶數頁。2.怎么能在一個頁面中打印固定的條數,另外最后一頁記錄不夠時怎么打出空白的格子出來啊.固定條數:設置LinesPerPage空白格子:設置AutoAppendBlank=True3.怎樣屏蔽雙擊報表進入設計報表的界面?RMReport1.ModifyPrepared := False4.怎樣在報表中增加表合計???可以放在標題欄,頁面設置中選"兩遍報表"匯總框的TotalCalc=True即可5.我想用代碼把參數傳遞給報表中的某一個TRMMemoView該怎么做?RMReport1.FindObject(‘Memo1‘).Memo.Text := ‘ddddd‘或者RMVariables[‘a1‘] := ‘ddddd‘; //這樣就可以在報表中使用變量‘a1‘了。6.如何能夠不打印重復內容?Suppres=True7.如何讓打印預覽時雙擊不能進入報表編輯器!設置RMReport.ModifyPreview=False8.如何在報表程序中控制MEMO的邊框是否顯示在delphi中:memo1.LeftFrame.Visible := Falsememo1.TopFrame.Visible := False;memo1.RightFrame.Visible := False;memo1.BottomFrame.Visible := False在報表的script中memo1.FrameTyp := 15; //這個參數多試幾次就知道如何設置了FrameTyp := 0; //不顯示9.怎樣改變page的名稱和控制它顯示但不打印可以,在Page1的OnBeforePrint中beginPage1.Visible := True;Page1.Visible := False; //不顯示end;10.Report Machine中,如何強制每3行一個表格設置主項數據欄:LinesPerPage=3如果三人一行有辦法:設置主項數據欄的Columns=3用分組打印,分組條件: NowLine > 3在分組標頭的OnBeforePrint:beginNowLine := 1;end;在主項數據的OnBeforePrint:beginNowLine := NowLine + 1;end;11.能否只顯示分組統計值而不顯示分組數據?可以,設置主項數據欄:Visible=False統計框:CalcNoVisible=True12.能否只對超過長度的單條記錄進行折行?可以,設置文本框:Stretched=True; Wordwrap=True設置文本框所在的欄:Stretched=True; Breaked=True13.如何實現打印預覽的問題RMReport1.LoadFromFile(‘c:1.rmf‘); //讀入報表RMReport1.ShowReport; //預覽RMReport1.PrintReport; //打印RMReport1.DesignReport; //設計14.請問如何在程序中控制:1、縱向打印還是橫向打印。2、分組標頭是否每組換頁。1.RMReport1.Pages[0].ChangePaper()2.RMReport1.Pages[0].FindObject(分組標頭欄名).Prop[‘NewPage‘] := False;15.直接打印的方法是什么?RMReport1.ShowPrintDialog := False;RMReport1.PrintReport;16.頁邊距改變以后,所有控件應該相應的改變位置。需要在頁面設置中不選"縮放到可打印區域"頁面居中或RMReport1.Pages[0].pgMargins := ; //這樣試試17.如何從導入一個rtf文件作為TRMFormReport的PageHeadervarTempStream : TMemoryStream;beginTempStream := TMemoryStream.Create;RichEdit1.Lines.SaveToStream(TempStream);TempStream.Position := 0;RMFormReport1.PageHeader.Caption.LoadFromStream( TempStream);TempStream.Free;end;18.怎樣確定報表模版目錄?設置TRMDesigner的TemplateDir19.我想動態設"虛擬數據集"該怎么設!(RMReport1.FindObject(‘Band1‘) as TRMBandView).DataSet :=‘RMDBDataSet1‘;20.在程序中RMVariables[‘aaa‘] := form1.Caption;在報表中就可以使用變量‘aaa‘21.左邊距:CurReport.Pages[0].pgMargins.Left := Round(RMConvertToPixels(毫米 * 10, rmsuMM))22.RMVariables[‘品牌‘] :=True;RMVariables[‘品名‘] :=‘計算機‘;在Page1的OnBeforPrint事件中的代碼如下:If 品牌 ThenMessageBox(品名);23.每頁只打10條記錄怎么處理???主項數據欄LinePerPage=1024.怎么實現主項數據的統計?????最好用欄目注腳欄,在上面放統計框,然后設置CalcType即可25.動態生成報表時,RM的頁邊距如何設定?TRMPage.pgMargins := Rect(30, 30, 40, 40);26.如何在程序運行時,在一個預覽或者打印窗口中,一次打開多個報表文件用TRMCompositeReport,RMCompositeReport1.Reports.Clear;RMCompositeReport1.Reports.Add(RMReport1);RMCompositeReport1.Reports.Add(RMReport2);RMCompositeReport1.ShowReport;27.rm如何進行套打Page1不是有個BackGroundPic屬性嗎,這個就是專門做套打的28.GridView1 能象Microsoft Excel實現 a3=a1+a2嗎?可以,a3內容[memo1.CalcValue + memo2.CalcValue]29.使用總頁數,將CalcMemoView放在頁頭,組頭,欄目頭時需要選擇"兩遍報表",對打印沒影響,只打印一遍.30.如何打印中括號如: [2002]在memoview的OnBeforePrint中beginmemo := ‘[2002]‘;end;或者把‘[‘,‘]‘定義成變量:RMVariables[‘a1‘] := ‘[‘;

RMVariables[‘a2‘

report machine開發使用手冊-創建報表2010-02-10 13:08

創建報表:

創建一個報表由下面幾步組成:

1、選擇數據:選擇報表中用到的數據源

2、設計報表模板:利用區域(稱為Band)將報表分布不同的部分,決定報表樣式。

3、處理:用報表內置腳本語言或在delphi中對報表中用的的數據,報表模板等進行處理

4、生成報表:根據報表模板+數據源,生成最終的報表。

選擇數據源:

大多數報表需要的數據都是來自數據庫。TTable和TQuery組件可以作為報表的數據源。總的來說它可以使用任何一個從TDataSet組件繼承的子類。每個報表中用到的TDataSet都要有一個與之對應的TRMDBDataSet。

除了TDataSet,ReportMachine頁可以使用任何數據源(數組,文件,字符網格等等)。在這種情況下,程序必須自己控制非數據庫源的存取。你可以用TRMUserDataSet方便地把數據傳送到報表中。

設計報表模板:

報表模板本身就是描述怎樣可以看到正確的報表。每個報表模板由多個區域組成,ReportMachine把這些區域稱為"Band"。有兩種類型的Band:固定區域Band(比如報表標題,頁標頭,頁注腳等等)和用于顯示數據集中所有記錄的Band(比如主項數據欄)。數據Band需要聯接到數據源,內容是數據源中的記錄。

在ReportMachine中提供了報表開發的可視化環境(報表設計器,這個設計器也可以提供給你的End User,以方便你的End User自己修改報表模板)用于創建報表。報表設計器功能強勁,簡單又易于使用。報表設計器的界面由帶有浮動的工具欄,可以自由地改變它們的位置,使用對象觀察器(Objects Inspector)可以控制對象的屬性,類似于Delphi IDE中的那個。

處理:

在生成報表的時候,需要對輸入的數據進行某種處理(比如格式化),報表模板需要某些修改(比如報表模板中某個文本框需要改變字體)。

實現這個處理可以在Delphi中的TRMReport的事件處理中編寫代碼,這個方法并不通用,因為它不允許在Delphi外創建報表而無需重新編譯。這就是為什么在ReportMachinet中內置腳本語言,ReportMachine的內置腳本語言非常類似于Object Pascal,功能強大。用這個腳本語言編寫事件處理代碼,這就可以讓你創建復雜的處理而無需在Delphi中編寫代碼,配合報表設計器,不需要修改某個報表而重新編譯項目。可以實現報表于你的項目分離。

報表腳本例子:

unit Report;

interface

procedure Memo1OnBeforePrint(Sender: TObject);implementation

procedure Memo1OnBeforePrint(Sender: TObject);beginMemo1.Text := 'test';end;

procedure Main;begin

end;

end.

生成報表:

生成報表是ReportMachine根據報表模板,對數據源進行加工處理生成最終的報表并能在點擊“預覽”按鈕后進行預覽的過程。在ReportMachine中準備好的報表是一組對象的集合,描述報表處理后各頁面所包含的內容。這允許你可以修改生成的報表頁面,通過在設計器中調用所需的頁面。除此之外,還可以描述在預覽窗口中鼠標點擊對象的反應。這將讓你更容易地組織你的工作(在一個報表對象點擊可以產生一個更詳細的新報表)。

在ReportMachine的預覽窗口類似于Microsoft Word:在一個窗口中可以看到多個頁面,并且可用用鼠標拖動,需要的話,可以通過雙擊調出編輯器修改當前頁。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 成人免费激情视频 | 免费一级在线观看 | 亚洲国产高清自拍 | h视频在线免费观看 | 热re91久久精品国产99热 | 午夜色片 | 午夜视频免费播放 | 久草手机视频在线观看 | 欧美性生交xxxxx久久久 | 黑人一区 | 精品在线观看一区二区三区 | 色网站免费观看 | 九九热播视频 | 99亚洲视频 | 久久精品一区二区三区国产主播 | 美国一级免费视频 | 亚洲一二三久久 | 玩偶姐姐 在线观看 | www.狠狠插.com | 日韩黄色片免费看 | 国产精品麻豆一区二区三区 | 欧美三级短视频 | 成人免费乱码大片a毛片视频网站 | 国产电影av在线 | 中国fx性欧美xxxx | 久草视频在线资源 | 成年人视频免费 | 欧美性受xxxx人人本视频 | 色中色激情影院 | 国产精品久久久久久一区二区三区 | 91综合在线观看 | 蜜桃视频日韩 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 日本a在线观看 | 亚洲第一视频 | 蜜桃视频在线观看免费 | 欧美成人综合视频 | 精品一区二区三区中文字幕老牛 | 国产九色在线观看 | 久久艹艹艹 | 久草在线观看首页 |