用VFP6.0顯示MSGRAPHIC圖表

字號:

用VFP6.0編制應(yīng)用程序時,都希望用圖表方式實(shí)時反映銷售情況、產(chǎn)值產(chǎn)量情況等內(nèi)容,筆者使用activeX控件ms graphic97圖表功能,實(shí)現(xiàn)了圖表的實(shí)時顯示.顯示效果如圖1所示.
    一.創(chuàng)建含有如下控件的窗體
    控件名 控件 屬性
    標(biāo)簽 Label1 caption:圖表類型 Font:微軟雅黑Fontsize:12
    標(biāo)簽 Label2 caption:顯示效果 字體類型大小同上
    按鈕組 Optiongroup1
    Option1 caption:二維條狀 字體類型大小同上
    Option2 caption:三維柱狀 字體類型大小同上
    線框 Shape1
    檢查框 Check1 caption:標(biāo)題 字體類型大小同上
    檢查框 Check2 caption:欄目標(biāo)題 字體類型大小同上
    ole控件 Oleboundcontrol1
    圖1
    二.程序清單:
    (1)窗體Form1的init事件:
    #DEFINE CRLF CHR(13)+CHR(10)
    #DEFINE TAB CHR(9)
    #DEFINE bartype -4099
    SET SAFETY OFF
    dime xsss(8),xss(8)
    sele 10
    use xscx
    for ii=1 to 8
    go ii
    xsss(ii) 量
    xss(ii)=品名
    endf
    SET SAFETY ON
    use c:\hgd\forms\pics
    cGData = ""+TAB+""+CRLF+;
    allt(xss(1))+TAB+str(xsss(1),10,2)+CRLF+;
    allt(xss(2))+TAB+str(xsss(2),10,2)+CRLF+;
    allt(xss(3))+TAB+str(xsss(3),10,2)+CRLF+;
    allt(xss(4))+TAB+str(xsss(4),10,2)+CRLF+;
    allt(xss(5))+TAB+str(xsss(6),10,2)+CRLF+;
    allt(xss(6))+TAB+str(xsss(7),10,2)+CRLF+;
    allt(xss(7))+TAB+str(xsss(8),10,2)+CRLF+;
    allt(xss(8))+TAB+str(xsss(8),10,2)+CRLF
    THIS.LockScreen = .T.
    append general gen1 class "msgraph.chart" DATA m.cGData
    THIS.OleBoundControl1.ControlSource = "Gen1"
    THIS.OleBoundControl1.HasLegend = .F.
    THIS.OleBoundControl1.autoformat(bartype,1)
    THIS.LockScreen = .F.
    (2)按鈕組Optiongroup1的click事件:
    #DEFINE bartype -4099
    #DEFINE coltype -4100
    *#DEFINE pietype -4102
    DO CASE
    CASE THIS.Value = 1
    THISFORM.OleBoundControl1.autoformat(bartype,1)
    CASE THIS.Value = 2
    THISFORM.OleBoundControl1.autoformat(coltype,1)
    ENDCASE
    (3)檢查框Check1的click事件:
    #DEFINE C_GRAPHTITLE_LOC "菜肴銷售情況表"
    THISFORM.OleBoundControl1.HasTitle = !THISFORM.OleBoundControl1.HasTitle
    IF THISFORM.OleBoundControl1.HasTitle = .T.
    THISFORM.OleBoundControl1.ChartTitle.Caption = C_GRAPHTITLE_LOC
    ENDIF
    (4)檢查框Check2的click事件:
    THISFORM.OleBoundControl1.HasLegend = !THISFORM.OleBoundControl1.HasLegend
    (5)”退出”命令按鈕Command1的click事件:
    Thisform.release
    以上程序在中文WINDOWS98,VISUAL FOXPRO 6.0軟件環(huán)境下運(yùn)行通過。