在我們做一些工程項目的時候,常常需要把關(guān)系庫中的數(shù)據(jù)繪制成各種圖表,比如產(chǎn)量圖,生產(chǎn)率變化圖等等。我們都知道如果需要顯示報表,可以使用紫金橋提供的自由報表組件,但是如果需要顯示曲線我們怎么辦呢?
為了解決類似的問題,紫金橋公司提供了自由曲線組件,使用此組件可以非常方便的顯示關(guān)系庫中的曲線,同時也可以顯示使用腳本生成的任意的曲線。下面是自由曲線顯示的兩個示例:


下面我們來通過一個小的例子來認(rèn)識一下紫金橋軟件的自由曲線的用法。
本例子是使用曲線組件來顯示在Acess關(guān)系庫中一個表中的數(shù)據(jù),當(dāng)然其他的關(guān)系庫比如SqlServer,甚至文本文件做為數(shù)據(jù)源處理的方法類似。
我們的示例Access庫的名字是CurveData.mdb,已經(jīng)復(fù)制到了工程目錄下面的SQL中(復(fù)制到工程目錄下的好處是即使更改了工程目錄的位置,甚至更改了工程目錄的名字,仍然無需更改工程本身就可以連接該Access庫),在這個Access數(shù)據(jù)庫中有一個數(shù)據(jù)表名Data,它的內(nèi)容如下所示:

為了顯示該表中的曲線,我們首先創(chuàng)建一個窗口,然后在該窗口中創(chuàng)建自由曲線組件。
創(chuàng)建自由曲線的方法非常簡單,點擊 ,在子圖庫中選擇 ,創(chuàng)建曲線組件即可。
雙擊自由曲線可以看到如下所示的設(shè)置框:

點擊更多設(shè)置,還會看到如下圖所示的更多設(shè)置框:

通過這些設(shè)置可以更改曲線的外觀、分隔數(shù)、線型、階梯連接方式、甚至還可以給曲線設(shè)置涂色,把曲線仿真成直方圖的形狀。具體的設(shè)置方法請參考紫金橋的自由曲線使用幫助。
給曲線設(shè)置完合適的屬性之后,為了能夠進(jìn)行腳本的引用,我們并按照下面介紹的方法給曲線命名為C。
在組態(tài)模式下,使用鼠標(biāo)選中曲線組件,在屏幕的左下腳可以看到屬性列表如下圖所示。

在名稱處輸入此曲線組件的名稱。
這樣我們就可以通過#C的方式調(diào)用自由曲線支持的方法,完成繪制曲線的過程。
為了能夠訪問Access庫中的數(shù)據(jù),我們先使用報表來把Access中的數(shù)據(jù)讀取上來。首先我們需要創(chuàng)建報表關(guān)系數(shù)據(jù)源點,在點組態(tài)界面創(chuàng)建一個報表關(guān)系數(shù)據(jù)源點,如下圖所示

在聯(lián)結(jié)字符串處點擊右側(cè)按鈕選擇連接Access數(shù)據(jù)庫,并在彈出的對話框中選擇CurveData.mdb文件,就完成了連接Acess的工作。
下一步,我們需要把數(shù)據(jù)采集到報表中,首先我們創(chuàng)建一個報表,并給報表命名為R,然后我們給報表關(guān)聯(lián)到剛剛創(chuàng)建的關(guān)系數(shù)據(jù)源點上,如下圖所示:

創(chuàng)建一個按鈕,在按鈕的鼠標(biāo)點擊事件中輸入如下的腳本:
#C.AddCurve(0,"SQL曲線");
#R.SqlSelectCmd("SELECT X,Y FROM Data ORDER BY ID ASC");
第一句腳本是給自由曲線增加一條曲線,名字是SQL曲線,索引號為0
第二句腳本是,讓報表執(zhí)行SQL命令從關(guān)系庫中提取數(shù)據(jù)。
此時運行工程可以看到報表中有數(shù)據(jù)顯示。
為了繪制曲線,我們只需要做下面所示的工作即可。
雙擊報表,點擊報表的工具欄上的關(guān)系庫連接設(shè)置按鈕,如下圖所示:

在關(guān)系庫連接對話框中的關(guān)系數(shù)據(jù)源點處選擇剛剛創(chuàng)建的關(guān)系數(shù)據(jù)源點,并點擊“應(yīng)答后觸發(fā)的腳本”按鈕,輸入如下的腳本
int i = 0;
for i=0to RowCount() step1
#C.CurveAddData(0,Val(1,i+1),Val(2,i+1));//參數(shù)分別是曲線索引,X值,Y值
next
這幾句腳本是取出報表中的數(shù)據(jù),然后添加到曲線中。
此時運行工程就可以看到繪制好的曲線了。
如果希望顯示的曲線中超過50的顯示為紅色可以修改報表中的響應(yīng)腳本如下。
int i = 0;
for i=0to RowCount() step1
if Val(2,i) > 50then
//參數(shù)分別是曲線索引,X值,Y值,顏色和自定義數(shù)據(jù)
#C.CurveAddDataEx(0,Val(1,i+1),Val(2,i+1),0,0);
else
//參數(shù)分別是曲線索引,X值,Y值
#C.CurveAddData(0,Val(1,i+1),Val(2,i+1));
endif
next
曲線如下圖所示:

通過更改曲線的屬性和調(diào)整腳本,還可以讓曲線顯示成直方圖,如下圖所示:

通過上面的介紹,我們看到紫金橋軟件提供的自由曲線還是比較靈活的。使用它可以非常容易的顯示各種數(shù)據(jù)的曲線。包括關(guān)系庫,實時數(shù)據(jù),甚至用腳本任意生成的曲線。 關(guān)于更多的設(shè)置,請參考紫金橋的自由曲線使用幫助。
|