999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

在VFP中TreeView控件的應用

2016-04-29 00:00:00何文輝
現代職業教育·中職中專 2016年12期

[摘 要] 介紹TreeView(樹型)控件在信息管理系統開發中的使用方法及如何設計符合應用TreeView控件的數據表結構,并且結合遞歸算法實現TreeView控件在信息管理系統中的應用。

[關 鍵 詞] VFP;TreeView控件;遞歸算法;數據庫;信息管理系統

[中圖分類號] TP311 [文獻標志碼] A [文章編號] 2096-0603(2016)35-0105-01

一、前言

使用TreeView控件表達數據之間具有層次隸屬關系時非常形象直觀,因此TreeView控件在應用程序設計中具有非常重要的作用。可是在VFP開發平臺下,沒有TreeView控件,只能通過ActiveX控件使用TreeView控件,下面以本人為電視臺開發的電視收費管理系統軟件為例說明TreeView控件在VFP中的具體應用。

二、模塊功能介紹

電視收費管理系統的基礎數據表是房屋信息表,字段是編號(主鍵)、小區、樓棟、單元、樓層、門號、姓名等。為了直觀、方便地查找用戶基本信息,在此處采用了TreeView控件組織房屋信息數據檢索。TreeView控件包含三層數據檢索,分別是小區、樓棟、單元,可以根據用戶地址在TreeView控件中一層層地展開數據,相應在窗口的另一側檢索出符合條件的記錄信息。

三、關鍵步驟、技術與核心代碼

1.設計符合應用TreeView控件的數據表結構。(1)建立一個查詢視圖query_tv,內容包括房屋的地址信息及其他相關信息。建立此視圖的好處是可以從若干基礎信息表中提取相關數據,供查詢使用,這樣可以降低代碼復雜度。(2)在此表單的Load事件中加入如下代碼:

Select Distinct xq As dm,xqmc As mc From query_tv Group By xq,xqmcInto Cursor sql_dm_xq

Select Distinct xq,trim(lh)+′棟′ As mc,xq+′-′+lh As dm From query_tv Group By xq,lh,dm Into Cursor sql_dm_lh

Select Distinct xq,lh,trim(dy) +′單元′ As mc,xq+′-′+lh+′-′+dy As dm From query_tv Group By xq,lh,dy,dm Into Cursor sql_dm_dy

此三條SQL語句將生成三個臨時內存表供TreeView控件檢索數據使用。這里使用了一個技巧,就是三個臨時表中的DM字段的設計。最后一個臨時表中的DM字段是由小區、樓棟、單元三個字段復合而成的,當用戶在檢索最后一級節點時,系統實際是檢索復合而成的DM字段,這樣就不用再找它的父節點樓棟的數據及更高節點的數據。在查詢視圖query_tv中設計一個相應的字段DM,包括小區、樓棟、單元,這樣就可以在TreeView控件中點擊任何一層時,系統都能準確檢索出相應數據。

2.在此表單中通過ActiveX控件加入ImageList控件,將TreeView控件使用的圖標都保存在ImageList控件中,每個節點應該顯示的圖標由程序根據用戶的操作進行設置。

3.表單的布局。表單的布局可以借鑒WINDOWS系統中資源管理器的窗口布局,左邊放置一個TreeView控件,用于數據檢索。右邊放置一個Grid控件,用來顯示檢索數據的具體信息。然后可以利用VFP9提供的錨定功能,加入錨定值,以適應各種分辨率。

4.遞歸算法在TreeView控件初始化的應用。(1)在表單中新建字符型屬性組wa_tname[2,3],表示建立了表單級字符型3行2列的二維數組。這個數組用于保存上述三個臨時內存表的名字和特征字符。(2)在表單中新建一個方法wf_treeinitadd,這個方法將采用遞歸算法,把數據填充到TreeView控件中。wf_treeinitadd方法的代碼如下:

Lparameters ps_layer,ps_dm 兩個參數分別為層數和代碼(就是節點的KEY)

SELECT(Thisform.wa_tname(1,ps_layer))

Set Filter To dm =ps_dm

Go Top

Do While Not Eof()

ls_dm =dm

If ps_layer= 1

THISform.tv_1.NODES.ADD(,,Thisform.wa_tname(2,ps_layer) +dm,mc,1,2)

Else

THISform.tv_1.NODES.ADD(Thisform.wa_tname(2,ps_layer -1) +ps_dm,4,Thisform.wa_tname(2,ps_layer) +dm,mc,1,2)

EndIf

If ps_layer

Thisform.wf_treeinitadd(ps_layer+1,ls_dm)

此處為遞歸調用,即為此節點下面還有子節點

EndIf

SELECT(Thisform.wa_tname(1,ps_layer))

Skip

EndDo

If ps_layer=Thisform.wi_layer 遞歸返回條件

Return

EndIf

對此段代碼中幾個重要的地方做一下說明。wa_tname這個二維數組,第一維保存臨時內存表的名字,第二維保存特征字符。這里為什么需要特征字符呢?因為在TreeView控件中NODE節點的KEY屬性值必須是唯一的,加入特征字符是預防數據表中有重復數據引起系統報錯。

5.現在運行此表單,在TreeView控件將能夠按層顯示房屋檢索信息數據。

四、總結

TreeView控件填充數據的過程就是不停地循環調用直到填充到TreeView控件的末梢節點數據,這個過程正好體現了遞歸算法的精髓,因此實現起來方便,代碼簡潔。并且應用程序使用TreeView控件,可以使人機界面更加友好,更加直觀形象。使應用程序操作簡單,易學易用??傊?,在開發信息管理系統中,TreeView控件具有非常重要的作用,它能使數據之間具有的層次隸屬關系非常形象地表達出來,方便用戶的理解和操作。

參考文獻:

[1]張洪舉.Visual FoxPro 6.0~9.0解決方案與范例大全[M].人民郵電出版社,2006.

[2]陳宗興Visual FoxPro 6.x 中文版程序設計Internet應用篇[M].中國鐵道出版社,1999.

主站蜘蛛池模板: 98精品全国免费观看视频| 欧美日韩在线亚洲国产人| 在线永久免费观看的毛片| 噜噜噜久久| 中文字幕无码中文字幕有码在线| 一级香蕉人体视频| 欧美精品另类| 中文纯内无码H| 国产精品欧美激情| 国产精品私拍在线爆乳| 色爽网免费视频| 亚洲制服中文字幕一区二区| 欧美精品在线观看视频| 日韩亚洲综合在线| 妇女自拍偷自拍亚洲精品| 亚洲第一精品福利| 亚洲综合欧美在线一区在线播放| 国产精品无码一二三视频| 亚洲午夜久久久精品电影院| 中文字幕久久精品波多野结| 国产噜噜在线视频观看| 国产精品欧美亚洲韩国日本不卡| 无码一区18禁| 91视频青青草| 日韩AV无码免费一二三区 | 在线色国产| 99成人在线观看| 亚洲成人黄色在线| 91丝袜在线观看| A级全黄试看30分钟小视频| 日本91视频| 午夜无码一区二区三区| 亚洲无码精彩视频在线观看| 国产原创演绎剧情有字幕的| 久久国产乱子伦视频无卡顿| 一级高清毛片免费a级高清毛片| AV网站中文| 青青草91视频| 亚洲国产亚综合在线区| 色噜噜中文网| 亚洲AⅤ波多系列中文字幕| 91精品免费高清在线| 久久永久免费人妻精品| 亚洲美女高潮久久久久久久| 欧美色伊人| 国产午夜精品一区二区三区软件| 高清无码一本到东京热| 在线欧美一区| 亚洲精品第一在线观看视频| 亚洲福利一区二区三区| 草逼视频国产| 日本成人不卡视频| 一本一道波多野结衣一区二区| 亚洲天堂网站在线| 国产福利观看| 国产午夜福利在线小视频| 亚洲精品欧美重口| 又大又硬又爽免费视频| 日韩毛片免费观看| 尤物亚洲最大AV无码网站| 精品国产免费观看一区| 91年精品国产福利线观看久久| 国产精品视频公开费视频| 暴力调教一区二区三区| 91久久夜色精品国产网站| 亚洲天堂自拍| 日韩免费成人| 国产爽歪歪免费视频在线观看| 99视频只有精品| 国产亚洲精品在天天在线麻豆| 亚洲第一区在线| 亚洲IV视频免费在线光看| 国产日本欧美亚洲精品视| 亚洲毛片网站| 国产不卡一级毛片视频| 成人国产三级在线播放| 成人欧美在线观看| 国产特级毛片| 99国产在线视频| 一区二区三区国产精品视频| 国产毛片高清一级国语| 国产精品蜜芽在线观看|