前面兩篇
向大家介紹了RAVE的組件
從今天開始向大家介紹如何建立報表
首先要感謝li jack等各位朋友給我發的電子郵件
鼓勵我繼續寫下去
今天也查了一下RAVE一詞的意思
RAVE在辭典上的翻譯為
咆哮
rave
up喧鬧的宴會
狂歡聚會
我們經常也聽到銳舞派對
也就是RAVE PARTY
要對Rave文化追根溯源其實不太容易
並非是因為其無從追溯
恰恰相反
正因為它涵蓋的面太廣
根基太深
所以反而讓人有些無從入手
從遠的來說
Rave與各塊大陸上土著部落的祭典儀式有著相當的淵源
因為這些祭典通常也是通過音樂與緊密的鼓點而使人進入某種超驗狀態
從近的來說
Rave又與
年代的嬉皮文化與迷幻實驗有著密不可分的關系
兩代年輕人除了裝扮不同
許多心理狀態與行為方式其實都有值得注意的相似之處
真正當代的將新式音樂與舞曲相結合的Rave運動起源於英國
多年前
Rave首先出現在曼徹斯特和伊比沙島(英國著名度假勝地)
年末及
年初
兩個並無關系的團體
Schoom和Genesis P開始在英國組織徹夜的舞會
前者是以house音樂為主
而後者以hardcore為主
與此同時
Rave在德國登陸
在柏林等大城市很受歡迎
很快
Rave在英德兩地吸引了數以萬計的青少年
更吸引了許多來自美國的DJ
現在Rave已經是歐美日甚至港台最時興最UNDERGROUND的一種青少年娛樂形式Rave 文化從一開始便被打上了高科技的烙印從急速瘋狂的前衛電子舞曲新奇剌激的影像視覺到Sharp得眼花缭亂的裝束Rave與ELife已經成為科技對青年文化影響的見證
當然我也不知道為什麼Nevrona公司把這個報表組件叫做rave也許和銳舞有著一定的關系吧就像java咖啡
一建立一張簡單的報表
言歸正傳我們開始建立一張簡單的報表打開Delphi 新建一個工程打開Tools下的Rave Designer在Rave 設計器的page中拖放Text我們在text屬性中寫入文字內容例如我的第一張報表 通過Font屬性更改字體和字的大小顏色等拖放Memo組件在text屬性中輸入文字可以看到一個多行的文本拖放Bitmap組件在FileLink屬性中選取插入圖片的位置就可以看到在報表中顯示了一張圖片
點擊[Execute Report]或者F則查看到運行後報表
接下來對在可視環境中設計好的報表保存可視化的報表就保存為*rav文件那麼在delphi程序中如何調用呢?在delphi中拖放RvProjectRvSystem組件並且把RvProject的Engine屬性連接為RvSystemRvProject的ProjectFile屬性選擇為我們剛才保存的rav文件再在form上放置一個Button添加click 事件代碼如下
procedure TFormButtonClick(Sender: TObject);
begin
RvProjectExecute ; //或者 RvProjectExecuteReport(Report);
end;
運行程序點擊按鈕就可以看到我們想要的報表了您可能注意到打印設置報表預覽的窗體都是英文的如何使它顯示中文我們在以後會介紹不過我們剛才在窗體中放入了RvSystem組件有TitlePreviewTitleSetupTitleStatus三個屬性更改後可以看到我們窗體的標題欄顯示的是您所希望顯示的中文標題RvSystem組件有很多我們需要的屬性將SystemPrinter的Orientation屬性設置為poLandScape則報表顯示為橫向的將SystemPreview 的FormStatus屬性設置為wsMaximized則報表預覽的窗體最大化顯示
好了這樣我們就完成了一張簡單的報表
二利用程序設計一張報表
上面向大家介紹了建立一張簡單報表的過程下面向大家介紹rave報表代碼編程實例窗體上放置組件RvSystem Button即可
具體代碼如下
unit Unit;
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs StdCtrls RpDefine RpBase RpSystem;
type
TForm = class(TForm)
RvSystem: TRvSystem;
Button: TButton;
procedure RvSystemPrint(Sender: TObject);
procedure ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form: TForm;
implementation
{$R *dfm}
procedure TFormRvSystemPrint(Sender: TObject);
var
I: integer;
S: string[];
S: string[];
Bitmap: TBitmap;
PolyLineArr: array[] of TPoint;
begin
with Sender as TBaseReport do begin
{ 打印表頭和表尾 }
SectionTop := ; //頂端
SetFont(黑體); //設置字體
Underline := true; //下劃線
Home;
YPos := ;
FontRotation :=;//旋轉角度
PrintCenter(我的報表PageWidth / );
SetFont(宋體);
SectionBottom := ;
PrintFooter(第 + IntToStr(CurrentPage) + 頁pjLeft); //頁碼
PrintFooter(日期: +DateToStr(Date)+ pjRight); //日期
SectionBottom := ;
YPos := ;
SetFont(宋體);
SetTopOfPage;
Home;
{ 打印列標題 }
ClearTabs;
SetPen(clBlackpsSolidpmCopy); { 設置畫筆為一個點寬 }
SetTab(pjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
Bold := true;
Tab(NANA); { 畫出具有粗邊框的表格 }
Print(Name);
Tab(NANANA);
Print(Number);
Tab(NANANA);
Print(Amount );
Tab(NANA);
Println(Amount );
Bold := false;
{ 打印具有邊框的數據 }
ClearTabs;
SetTab(pjLeftBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetTab(NApjRightBOXLINEALL);
SetTab(NApjRightBOXLINEALL);
for I := to do begin
Str(I * ::S);
Str(I * ::S);
Print(#LastName + IntToStr(I) + );
SetFont(Times New Roman);
Print(FirstName M);
SetFont(Times New Roman);
Println(# + IntToStr(I) + #$ + S + #$ + S);
end; { for }
{ 打印具有陰影的數據 }
ClearTabs;
SetTab(pjLeftBOXLINENONE);
SetTab(NApjCenterBOXLINENONE);
SetTab(NApjRightBOXLINENONE);
SetTab(NApjRightBOXLINENONE);
for I := to do begin
If Odd(I) then begin
TabShade := ;
end else begin
TabShade := ;
end; { else }
Str(I * ::S);
Str(I * ::S);
Print(#LastName + IntToStr(I) + );
SetFont(Times New Roman);
Print(FirstName M);
SetFont(Times New Roman);
Println(# + IntToStr(I) + #$ + S + #$ + S);
end; { for }
ClearTabs;
{ 分欄報表 }
ClearTabs;
SetTopOfPage;
SectionBottom := ;
Home;
SetFont(宋體);
Bold := true;
Underline := true;
Print( 分欄報表 (LinesLeft/ColumnLinesLeft/LineNum/ColumnNum));
SetTopOfPage; { Set top of page to current YPos }
Bold := false;
Underline := false;
Italic := false;
Home; { Goto home position }
SetColumns(); { Create columns with between each }
while ColumnLinesLeft > do begin
Println(IntToStr(LinesLeft) + / + IntToStr(ColumnLinesLeft) + / +
IntToStr(LineNum) + / + IntToStr(ColumnNum));
end; { while }
{ 具有邊框的分欄報表 }
ClearTabs;
SetTopOfPage;
SectionBottom := ;
Home;
SetFont(Times New Roman);
Bold := true;
Italic := true;
Print(Boxed Columns);
SetTopOfPage; { Set top of page to current YPos }
Bold := false;
Italic := false;
Home; { Goto home position }
ClearTabs;
SetPen(clBlackpsSolidpmCopy);
SetTab(pjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetTab(NApjCenterBOXLINEALL);
SetColumns(); { Create columns with between each }
while ColumnLinesLeft > do begin
if LineNum = then begin
TabShade := ;
Println(#LL#CLL#L##C#); { 打印標題欄 }
end else begin
TabShade := ;
Println(# + IntToStr(LinesLeft) + # + IntToStr(ColumnLinesLeft) +
# + IntToStr(LineNum) + # + IntToStr(ColumnNum));
end; { else }
end; { while }
SetColumns();
{ 在指定位置繪出文本 }
NewPage;
OriginX := ; { Set origin to normal }
OriginY := ;
GotoXY();
Print(Text @ );
GotoXY();
Println(Text @ );
GotoXY();
Println(Text @ );
GotoXY();
Println(Text @ );
{*** 圖形 圖片***}
NewPage;
ResetSection;
SetFont(Arial);
Underline := true;
Home;
PrintCenter(Graphics Page DemoPageWidth / );
SetFont(Times New Roman);
SectionBottom := ; { Temporarily move the section bottom down }
PrintFooter(Page + IntToStr(CurrentPage)pjLeft);
PrintFooter(Date //pjRight);
SectionBottom := ; { Reset section bottom }
OriginX := ;
OriginY := ;
SetFont(Arial);
{ 半圓 弧線}
SetPen(clBlackpsSolidpmCopy); { Set pen to black /ths wide }
YPos := ;
PrintCenter(Arc() and Chord());
Arc();
SetBrush(clBlackbsClearnil);
Chord();
{ 餅圖 }
YPos := ;
PrintCenter(Pie());
SetPen(clBlackpsSolidpmCopy); { Set pen to black /ths wide }
SetBrush(clBlackbsHorizontalnil);
Pie();
SetBrush(clBlackbsVerticalnil);
Pie();
SetBrush(clBlackbsBDiagonalnil);
Pie();
{ Bitmap 圖片}
YPos := ;
PrintCenter(PaintBitmapRect());
Bitmap := TBitmapCreate;
BitmapLoadFromFile(RPDEMOBMP);
PrintBitmapRect(Bitmap);
BitmapFree;
end;
end;
procedure TFormButtonClick(Sender: TObject);
begin
RvSystemExecute; //執行報表!
end;
end
好了這樣我們並沒有使用rave僅僅利用程序實現了報表
From:http://tw.wingwit.com/Article/program/Delphi/201311/24724.html