熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi 7 中使用RAVE報表(三)

2013-11-23 17:35:25  來源: Delphi編程 
 前面兩篇向大家介紹了RAVE的組件從今天開始向大家介紹如何建立報表首先要感謝li jack等各位朋友給我發的電子郵件鼓勵我繼續寫下去今天也查了一下RAVE一詞的意思

  RAVE在辭典上的翻譯為咆哮 raveup喧鬧的宴會 狂歡聚會我們經常也聽到銳舞派對也就是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
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.