Access中使用TreeView 樹(shù)形控件 詳細(xì)講解(Excel Word Office都可
時(shí)間:2013-10-01 21:12 來(lái)源:未知 作者:admin 閱讀:次
TreeView詳解(轉(zhuǎn)載)
TreeView 控件響應(yīng)一些我們覺(jué)的VFP 控件的方法和事件: Click, DblClick, Drag, DragDrop, DragOver, GotFocus, KeyDown, KeyPress, KeyUp, LostFocus, MouseDown, MouseMove, MouseUp, Move, Refresh, SetFocus, ShowWhatsThis, 和 ZOrder。 有一個(gè)很大的例外: 沒(méi)有 RightClick 事件。在稍后,你會(huì)看到如何處理這種情況。
除這些方法和事件外,TreeView 控件有一些它自己的方法和事件(幫助文件中列出的 Clear 和 Remove 方法, 實(shí)際上是屬性節(jié)點(diǎn)集合而不是 TreeView 控件自己的):
BeforeLabelEdit 和 AfterLabelEdit 發(fā)生在標(biāo)簽被用戶修改前和修改后(就象在 Windows 的資源管理器中, 你可以單擊選定的節(jié)點(diǎn)并修改它的文本(在稍后你可以看到如何廢止該自動(dòng)編輯功能)。 該事件中的代碼通常用于在某處保存新的文本, 如一個(gè)表中的字段。
Collapse 和 Expand 當(dāng)用戶收縮或擴(kuò)展一個(gè)節(jié)點(diǎn)時(shí)激發(fā)。 它們接受的參數(shù)是選定節(jié)點(diǎn)的對(duì)象。 收縮或擴(kuò)展一個(gè)節(jié)點(diǎn)不會(huì)使該節(jié)點(diǎn)成為活動(dòng)的節(jié)點(diǎn), 這一點(diǎn)通常會(huì)使用戶糊涂。 添加以下代碼到 Collapse 和 Expand 事件來(lái)確保存該節(jié)點(diǎn)成為活動(dòng)的節(jié)點(diǎn)(調(diào)用了我將在稍解釋的 NodeClick(), 它們只在你在這些方法中有一些自定義代碼是才是必須的):
lparameters node
Node.Selected = .T.
This.NodeClick(Node)
GetVisibleCount 顯示控件中全部可見(jiàn)的節(jié)點(diǎn)數(shù)。 如果控件可以顯示最后的節(jié)點(diǎn),該數(shù)可能看起來(lái)會(huì)很小。
HitTest :如果傳遞的 X 和 Y 座標(biāo)上存在節(jié)點(diǎn),它返回一個(gè)節(jié)點(diǎn)對(duì)象引用,否則返回 .NULL. 這里有一個(gè)新的問(wèn)題: HitTest 期待 X 和 Y 座標(biāo)值是緹(twips) (用于 Visual Basic), 但 VFP 使用象素。 以下代碼將轉(zhuǎn)換象素值到緹。TREEVIEW 示例表單的 INIT 中有這些代碼, 并有兩個(gè)自定義屬性來(lái)保存計(jì)算值: nTreeFactorX 和 nTreeFactorY。
local liHWnd, ;
liHDC, ;
liPixelsPerInchX, ;
liPixelsPerInchY
* 定義一些常數(shù)。
#define cnLOG_PIXELS_X 88
* 來(lái)自 WINGDI.H
#define cnLOG_PIXELS_Y 90
* 來(lái)自From WINGDI.H
#define cnTWIPS_PER_INCH 1440
* 每英寸1440 緹
* 定義一些 Windows API 函數(shù)
declare integer GetActiveWindow in WIN32API
declare integer GetDC in WIN32API ;
integer iHDC
declare integer GetDeviceCaps in WIN32API ;
integer iHDC, integer iIndex
* 為 VFP 取得圖形設(shè)備(device context)。
liHWnd = GetActiveWindow()
liHDC = GetDC(liHWnd)
* 取得每英寸象素值。
liPixelsPerInchX = GetDeviceCaps(liHDC, cnLOG_PIXELS_X)
liPixelsPerInchY = GetDeviceCaps(liHDC, cnLOG_PIXELS_Y)
* 取得每象素緹并保存到表單屬性中。
with This
.nTreeFactorX = cnTWIPS_PER_INCH/liPixelsPerInchX
.nTreeFactorY = cnTWIPS_PER_INCH/liPixelsPerInchY
endwith
HitTest() 有助于解決一個(gè)處理鼠標(biāo)右擊事件。 你可能想在用戶在節(jié)點(diǎn)上右擊時(shí)顯示彈式菜單, 但在節(jié)點(diǎn)上右擊時(shí)不會(huì)使它成為選定節(jié)點(diǎn)。 在控件的 MouseDown 事件中用以下代碼來(lái)處理這一點(diǎn)(因?yàn)闆](méi)有 RightClick 事件,所以這是你能處理右擊的唯一辦法)。 同時(shí), 調(diào)用 NodeClick() 僅當(dāng)你在該方法中放有代碼時(shí)才是必須的:
lparameters Button, Shift, X, Y
local loNode
if Button = 2
* 如果這是右鼠標(biāo)鍵, 取得鼠標(biāo)下的節(jié)點(diǎn)的引用。
loNode = This.HitTest(X * Thisform.nTreeFactorX, ;
Y * Thisform.nTreeFactorX)
* 如果有可用的節(jié)點(diǎn), 選擇它。
if not isnull(loNode)
loNode.Selected = .T.
This.NodeClick(loNode)
endif not isnull(loNode)
* 現(xiàn)在顯示右擊快捷菜單
else
* 處理必要的鼠標(biāo)左擊
endif Button = 2
NodeClick: 當(dāng)用戶在節(jié)點(diǎn)上單擊時(shí)激活 (在 Click 事件之前)。 NodeClick 接受一個(gè)選定節(jié)點(diǎn)的對(duì)象引用作為參數(shù)。 該方法被典型地用于在一個(gè)節(jié)點(diǎn)被選定時(shí)更新一些東西(例如其它控件的值)。 如果 NodeClick 中的代碼執(zhí)行時(shí)花的時(shí)間太長(zhǎng), 選定項(xiàng)會(huì)被高亮顯示但以前的項(xiàng)會(huì)被斷續(xù)線包圍。 移動(dòng)鼠標(biāo)(即使沒(méi)有單擊鼠標(biāo)按鈕) 會(huì)恢復(fù)以前項(xiàng)的高亮顯示。 要避免這一問(wèn)題, 可以在 NodeClick 事件中放入以下代碼來(lái)保證節(jié)點(diǎn)被單擊而成為選定項(xiàng):
Node.Selected = .T.
StartLabelEdit: 通常被用于編輯節(jié)點(diǎn)的標(biāo)簽。 它用于 LabelEdit 屬性被設(shè)置為1-手動(dòng)時(shí)。
TreeView 控件節(jié)點(diǎn)集合方法
以下是TreeView 控件的節(jié)點(diǎn)集合的方法(被指定的 <Object>.Nodes 引用, 其中 <Object> 是 TreeView 控件名):
Add: 添加一個(gè)新節(jié)點(diǎn)并返回它的引用。 它使用以下語(yǔ)法
<Object>.Nodes.Add(Relative, Relationship, Key, Text, Image, ;
SelectedImage)
其中:
Relative: 一個(gè)已存在節(jié)點(diǎn)的索引或鍵值。 如果未指定, 新節(jié)點(diǎn)放在頂級(jí)節(jié)點(diǎn)的末端。
Relationship: 新節(jié)點(diǎn)放置的相對(duì)于第一個(gè)參數(shù)中指定的節(jié)點(diǎn)的位置,可以是以下值:
1: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)所在級(jí)的所有節(jié)點(diǎn)的末端。
2: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)的后面。
3: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)的前面。
4: 節(jié)點(diǎn)成為相對(duì)節(jié)點(diǎn)的子節(jié)點(diǎn)。
Key: 用于指明節(jié)點(diǎn)的唯一串。 如果顯示內(nèi)容是從一個(gè)表的記錄中載入的, 可使用記錄的主關(guān)鍵字段值 (如果不是字符型的,還需要轉(zhuǎn)換為字符型)。 否則, 可使用一個(gè)轉(zhuǎn)換為串的順序號(hào)。
Text: 控件節(jié)點(diǎn)中顯示的文本。
Image: 相關(guān) ImageList 控件中的圖象索引。
SelectedImage: 當(dāng)節(jié)點(diǎn)選定時(shí),要顯示的相關(guān) ImageList 控件中的圖象索引。
Clear: 清除全部節(jié)點(diǎn)。
Remove: 移去指定索引號(hào)的節(jié)點(diǎn)。
TreeView 控件節(jié)點(diǎn)集合屬性
以下是節(jié)點(diǎn)集合屬性:
Count: 節(jié)點(diǎn)號(hào)。
[<Index>]: 一個(gè)節(jié)點(diǎn)號(hào)的對(duì)象引用。
Treeview(續(xù)2)
TreeView 控件節(jié)點(diǎn)對(duì)象方法
以下是節(jié)點(diǎn)對(duì)象方法:
CreateDragImage: 該方法不能用于 VFP ,因?yàn)樵摲椒ǚ祷匾粋(gè)圖象時(shí), DragIcon 需要一個(gè) CUR 文件名。
EnsureVisible: 確保指定節(jié)點(diǎn)是可見(jiàn)的。 該方法在必要時(shí)卷動(dòng) TreeView 控件并擴(kuò)展所有指定節(jié)點(diǎn)的父節(jié)點(diǎn)。
TreeView 控件節(jié)點(diǎn)對(duì)象屬性
以下是節(jié)點(diǎn)對(duì)象屬性:
Children: 如果節(jié)點(diǎn)對(duì)象擁有子節(jié)點(diǎn),該值為.T.。
Expanded: 如果節(jié)點(diǎn)對(duì)象已經(jīng)擴(kuò)展,該值為.T.。
FullPath: 該節(jié)點(diǎn)的所有父節(jié)點(diǎn)(祖節(jié)點(diǎn),曾祖節(jié)點(diǎn)等)的文本串接, 各節(jié)點(diǎn)的文本間用控件的 PathSeparator 屬性中指定的分隔符分隔。它非常類似于帶路么的文件名。
Image, ExpandedImage 和 SelectedImage: 相關(guān)ImageList 控件中的適當(dāng)?shù)膱D象號(hào)。
Index: 節(jié)點(diǎn)集合中的節(jié)點(diǎn)對(duì)象的索引。
Key: 當(dāng)節(jié)點(diǎn)添加時(shí)指定的唯一鍵值。
Child, FirstSibling, LastSibling, Previous, Parent, Next 和 Root: 指向與指定節(jié)點(diǎn)相關(guān)的節(jié)點(diǎn)對(duì)象。
Selected: 如果節(jié)點(diǎn)對(duì)象是選定的,該值為.T.。 設(shè)置該屬性為 .T. 會(huì)自動(dòng)高亮顯示該節(jié)點(diǎn)并設(shè)置先前選定的節(jié)點(diǎn)的 Selected 屬性為 .F.
Text: 控件中顯示的文本。
TreeView 控件屬性
如同事件一樣, TreeView 控件支持一些其它控件所擁有的屬性, 包括 DragIcon, DragMode, Enabled 和 Visible。 許多 TreeView 特定屬性可以在設(shè)計(jì)時(shí)在 TreeView 控件上單擊鼠標(biāo)右鍵調(diào)出的 TreeView 控件屬性表中設(shè)置。 包括 Style, LineStyle, Indentation, PathSeparator 和 HideSelection。
在屬性表中可編輯的屬性中, 你最需要改變其默認(rèn)值的是:
Style: 指明 TreeView 控件顯示什么。 可以選擇是否顯示圖像,線條, 加號(hào)/減號(hào)等。
LineStyle: 指明顯示根線。 如果沒(méi)有設(shè)置該屬性為 1-根線, 無(wú)論 Style 是如何設(shè)置的,頂級(jí)對(duì)象上都不會(huì)有加號(hào)/減號(hào)標(biāo)記。
LabelEdit: 如果你不想讓用戶修改各節(jié)點(diǎn)上的文本, 設(shè)置該屬性為 1-手動(dòng)。
ImageList: 一個(gè) ImageList 控件對(duì)象引用,它包括了控件中的節(jié)點(diǎn)使用的圖象; 參見(jiàn)本文 ImageList 一章中關(guān)于該簡(jiǎn)單控件的說(shuō)明。 不幸的是,該屬性不能可視化地進(jìn)行設(shè)置; 你必須以編程方式用代碼進(jìn)行設(shè)置,象下面一樣在表單的 Init 方法中:
This.oTree.ImageList = This.oImageList.Object
除這些方法和事件外,TreeView 控件有一些它自己的方法和事件(幫助文件中列出的 Clear 和 Remove 方法, 實(shí)際上是屬性節(jié)點(diǎn)集合而不是 TreeView 控件自己的):
BeforeLabelEdit 和 AfterLabelEdit 發(fā)生在標(biāo)簽被用戶修改前和修改后(就象在 Windows 的資源管理器中, 你可以單擊選定的節(jié)點(diǎn)并修改它的文本(在稍后你可以看到如何廢止該自動(dòng)編輯功能)。 該事件中的代碼通常用于在某處保存新的文本, 如一個(gè)表中的字段。
Collapse 和 Expand 當(dāng)用戶收縮或擴(kuò)展一個(gè)節(jié)點(diǎn)時(shí)激發(fā)。 它們接受的參數(shù)是選定節(jié)點(diǎn)的對(duì)象。 收縮或擴(kuò)展一個(gè)節(jié)點(diǎn)不會(huì)使該節(jié)點(diǎn)成為活動(dòng)的節(jié)點(diǎn), 這一點(diǎn)通常會(huì)使用戶糊涂。 添加以下代碼到 Collapse 和 Expand 事件來(lái)確保存該節(jié)點(diǎn)成為活動(dòng)的節(jié)點(diǎn)(調(diào)用了我將在稍解釋的 NodeClick(), 它們只在你在這些方法中有一些自定義代碼是才是必須的):
lparameters node
Node.Selected = .T.
This.NodeClick(Node)
GetVisibleCount 顯示控件中全部可見(jiàn)的節(jié)點(diǎn)數(shù)。 如果控件可以顯示最后的節(jié)點(diǎn),該數(shù)可能看起來(lái)會(huì)很小。
HitTest :如果傳遞的 X 和 Y 座標(biāo)上存在節(jié)點(diǎn),它返回一個(gè)節(jié)點(diǎn)對(duì)象引用,否則返回 .NULL. 這里有一個(gè)新的問(wèn)題: HitTest 期待 X 和 Y 座標(biāo)值是緹(twips) (用于 Visual Basic), 但 VFP 使用象素。 以下代碼將轉(zhuǎn)換象素值到緹。TREEVIEW 示例表單的 INIT 中有這些代碼, 并有兩個(gè)自定義屬性來(lái)保存計(jì)算值: nTreeFactorX 和 nTreeFactorY。
local liHWnd, ;
liHDC, ;
liPixelsPerInchX, ;
liPixelsPerInchY
* 定義一些常數(shù)。
#define cnLOG_PIXELS_X 88
* 來(lái)自 WINGDI.H
#define cnLOG_PIXELS_Y 90
* 來(lái)自From WINGDI.H
#define cnTWIPS_PER_INCH 1440
* 每英寸1440 緹
* 定義一些 Windows API 函數(shù)
declare integer GetActiveWindow in WIN32API
declare integer GetDC in WIN32API ;
integer iHDC
declare integer GetDeviceCaps in WIN32API ;
integer iHDC, integer iIndex
* 為 VFP 取得圖形設(shè)備(device context)。
liHWnd = GetActiveWindow()
liHDC = GetDC(liHWnd)
* 取得每英寸象素值。
liPixelsPerInchX = GetDeviceCaps(liHDC, cnLOG_PIXELS_X)
liPixelsPerInchY = GetDeviceCaps(liHDC, cnLOG_PIXELS_Y)
* 取得每象素緹并保存到表單屬性中。
with This
.nTreeFactorX = cnTWIPS_PER_INCH/liPixelsPerInchX
.nTreeFactorY = cnTWIPS_PER_INCH/liPixelsPerInchY
endwith
HitTest() 有助于解決一個(gè)處理鼠標(biāo)右擊事件。 你可能想在用戶在節(jié)點(diǎn)上右擊時(shí)顯示彈式菜單, 但在節(jié)點(diǎn)上右擊時(shí)不會(huì)使它成為選定節(jié)點(diǎn)。 在控件的 MouseDown 事件中用以下代碼來(lái)處理這一點(diǎn)(因?yàn)闆](méi)有 RightClick 事件,所以這是你能處理右擊的唯一辦法)。 同時(shí), 調(diào)用 NodeClick() 僅當(dāng)你在該方法中放有代碼時(shí)才是必須的:
lparameters Button, Shift, X, Y
local loNode
if Button = 2
* 如果這是右鼠標(biāo)鍵, 取得鼠標(biāo)下的節(jié)點(diǎn)的引用。
loNode = This.HitTest(X * Thisform.nTreeFactorX, ;
Y * Thisform.nTreeFactorX)
* 如果有可用的節(jié)點(diǎn), 選擇它。
if not isnull(loNode)
loNode.Selected = .T.
This.NodeClick(loNode)
endif not isnull(loNode)
* 現(xiàn)在顯示右擊快捷菜單
else
* 處理必要的鼠標(biāo)左擊
endif Button = 2
NodeClick: 當(dāng)用戶在節(jié)點(diǎn)上單擊時(shí)激活 (在 Click 事件之前)。 NodeClick 接受一個(gè)選定節(jié)點(diǎn)的對(duì)象引用作為參數(shù)。 該方法被典型地用于在一個(gè)節(jié)點(diǎn)被選定時(shí)更新一些東西(例如其它控件的值)。 如果 NodeClick 中的代碼執(zhí)行時(shí)花的時(shí)間太長(zhǎng), 選定項(xiàng)會(huì)被高亮顯示但以前的項(xiàng)會(huì)被斷續(xù)線包圍。 移動(dòng)鼠標(biāo)(即使沒(méi)有單擊鼠標(biāo)按鈕) 會(huì)恢復(fù)以前項(xiàng)的高亮顯示。 要避免這一問(wèn)題, 可以在 NodeClick 事件中放入以下代碼來(lái)保證節(jié)點(diǎn)被單擊而成為選定項(xiàng):
Node.Selected = .T.
StartLabelEdit: 通常被用于編輯節(jié)點(diǎn)的標(biāo)簽。 它用于 LabelEdit 屬性被設(shè)置為1-手動(dòng)時(shí)。
TreeView 控件節(jié)點(diǎn)集合方法
以下是TreeView 控件的節(jié)點(diǎn)集合的方法(被指定的 <Object>.Nodes 引用, 其中 <Object> 是 TreeView 控件名):
Add: 添加一個(gè)新節(jié)點(diǎn)并返回它的引用。 它使用以下語(yǔ)法
<Object>.Nodes.Add(Relative, Relationship, Key, Text, Image, ;
SelectedImage)
其中:
Relative: 一個(gè)已存在節(jié)點(diǎn)的索引或鍵值。 如果未指定, 新節(jié)點(diǎn)放在頂級(jí)節(jié)點(diǎn)的末端。
Relationship: 新節(jié)點(diǎn)放置的相對(duì)于第一個(gè)參數(shù)中指定的節(jié)點(diǎn)的位置,可以是以下值:
1: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)所在級(jí)的所有節(jié)點(diǎn)的末端。
2: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)的后面。
3: 節(jié)點(diǎn)放在相對(duì)節(jié)點(diǎn)的前面。
4: 節(jié)點(diǎn)成為相對(duì)節(jié)點(diǎn)的子節(jié)點(diǎn)。
Key: 用于指明節(jié)點(diǎn)的唯一串。 如果顯示內(nèi)容是從一個(gè)表的記錄中載入的, 可使用記錄的主關(guān)鍵字段值 (如果不是字符型的,還需要轉(zhuǎn)換為字符型)。 否則, 可使用一個(gè)轉(zhuǎn)換為串的順序號(hào)。
Text: 控件節(jié)點(diǎn)中顯示的文本。
Image: 相關(guān) ImageList 控件中的圖象索引。
SelectedImage: 當(dāng)節(jié)點(diǎn)選定時(shí),要顯示的相關(guān) ImageList 控件中的圖象索引。
Clear: 清除全部節(jié)點(diǎn)。
Remove: 移去指定索引號(hào)的節(jié)點(diǎn)。
TreeView 控件節(jié)點(diǎn)集合屬性
以下是節(jié)點(diǎn)集合屬性:
Count: 節(jié)點(diǎn)號(hào)。
[<Index>]: 一個(gè)節(jié)點(diǎn)號(hào)的對(duì)象引用。
Treeview(續(xù)2)
TreeView 控件節(jié)點(diǎn)對(duì)象方法
以下是節(jié)點(diǎn)對(duì)象方法:
CreateDragImage: 該方法不能用于 VFP ,因?yàn)樵摲椒ǚ祷匾粋(gè)圖象時(shí), DragIcon 需要一個(gè) CUR 文件名。
EnsureVisible: 確保指定節(jié)點(diǎn)是可見(jiàn)的。 該方法在必要時(shí)卷動(dòng) TreeView 控件并擴(kuò)展所有指定節(jié)點(diǎn)的父節(jié)點(diǎn)。
TreeView 控件節(jié)點(diǎn)對(duì)象屬性
以下是節(jié)點(diǎn)對(duì)象屬性:
Children: 如果節(jié)點(diǎn)對(duì)象擁有子節(jié)點(diǎn),該值為.T.。
Expanded: 如果節(jié)點(diǎn)對(duì)象已經(jīng)擴(kuò)展,該值為.T.。
FullPath: 該節(jié)點(diǎn)的所有父節(jié)點(diǎn)(祖節(jié)點(diǎn),曾祖節(jié)點(diǎn)等)的文本串接, 各節(jié)點(diǎn)的文本間用控件的 PathSeparator 屬性中指定的分隔符分隔。它非常類似于帶路么的文件名。
Image, ExpandedImage 和 SelectedImage: 相關(guān)ImageList 控件中的適當(dāng)?shù)膱D象號(hào)。
Index: 節(jié)點(diǎn)集合中的節(jié)點(diǎn)對(duì)象的索引。
Key: 當(dāng)節(jié)點(diǎn)添加時(shí)指定的唯一鍵值。
Child, FirstSibling, LastSibling, Previous, Parent, Next 和 Root: 指向與指定節(jié)點(diǎn)相關(guān)的節(jié)點(diǎn)對(duì)象。
Selected: 如果節(jié)點(diǎn)對(duì)象是選定的,該值為.T.。 設(shè)置該屬性為 .T. 會(huì)自動(dòng)高亮顯示該節(jié)點(diǎn)并設(shè)置先前選定的節(jié)點(diǎn)的 Selected 屬性為 .F.
Text: 控件中顯示的文本。
TreeView 控件屬性
如同事件一樣, TreeView 控件支持一些其它控件所擁有的屬性, 包括 DragIcon, DragMode, Enabled 和 Visible。 許多 TreeView 特定屬性可以在設(shè)計(jì)時(shí)在 TreeView 控件上單擊鼠標(biāo)右鍵調(diào)出的 TreeView 控件屬性表中設(shè)置。 包括 Style, LineStyle, Indentation, PathSeparator 和 HideSelection。
在屬性表中可編輯的屬性中, 你最需要改變其默認(rèn)值的是:
Style: 指明 TreeView 控件顯示什么。 可以選擇是否顯示圖像,線條, 加號(hào)/減號(hào)等。
LineStyle: 指明顯示根線。 如果沒(méi)有設(shè)置該屬性為 1-根線, 無(wú)論 Style 是如何設(shè)置的,頂級(jí)對(duì)象上都不會(huì)有加號(hào)/減號(hào)標(biāo)記。
LabelEdit: 如果你不想讓用戶修改各節(jié)點(diǎn)上的文本, 設(shè)置該屬性為 1-手動(dòng)。
ImageList: 一個(gè) ImageList 控件對(duì)象引用,它包括了控件中的節(jié)點(diǎn)使用的圖象; 參見(jiàn)本文 ImageList 一章中關(guān)于該簡(jiǎn)單控件的說(shuō)明。 不幸的是,該屬性不能可視化地進(jìn)行設(shè)置; 你必須以編程方式用代碼進(jìn)行設(shè)置,象下面一樣在表單的 Init 方法中:
This.oTree.ImageList = This.oImageList.Object
***********************以下代碼為我Appler整理*********************
在表單上添加一個(gè)TreeView,把TreeView的 NAME 值修改為 TreeView1,
在表單上添加一個(gè)TreeView,把TreeView的 NAME 值修改為 TreeView1,
然后再在在表單中添加一個(gè)ImageList控件(Microsoft ImageList Control),
然后把這個(gè)ImageList控件的 NAME 值改為ImageList1
右擊這個(gè)控件,在ImageListCtrl Properties中的Images中添加幾個(gè)圖片
然后把這個(gè)ImageList控件的 NAME 值改為ImageList1
右擊這個(gè)控件,在ImageListCtrl Properties中的Images中添加幾個(gè)圖片
最后在表單的INIT事件:
This.TreeView1.ImageList=This.ImageList1.Object
this.TreeView1.Nodes.Add(,,,"Node 1")
this.TreeView1.Nodes.Add(,,,"Node 2")
THIS.TreeView1.Nodes(1).IMAGE=1 &&這里1表示節(jié)點(diǎn)圖片為Images控件中的第1個(gè)圖片
THIS.TreeView1.Nodes(2).IMAGE=2 &&這里2表示節(jié)點(diǎn)圖片為Images控件中的第2個(gè)圖片
THIS.TreeView1.Nodes(3).IMAGE=3 &&這里1表示節(jié)點(diǎn)圖片為Images控件中的第3個(gè)圖片
THIS.TreeView1.Nodes(4).IMAGE=4 &&這里2表示節(jié)點(diǎn)圖片為Images控件中的第4個(gè)圖片
或
FOR I=1 TO THIS.TreeView1.GetVisibleCount &&取得的節(jié)點(diǎn)數(shù)最小為4
THIS.TreeView1.Nodes(I).IMAGE=1
ENDFOR
This.TreeView1.ImageList=This.ImageList1.Object
this.TreeView1.Nodes.Add(,,,"Node 1")
this.TreeView1.Nodes.Add(,,,"Node 2")
THIS.TreeView1.Nodes(1).IMAGE=1 &&這里1表示節(jié)點(diǎn)圖片為Images控件中的第1個(gè)圖片
THIS.TreeView1.Nodes(2).IMAGE=2 &&這里2表示節(jié)點(diǎn)圖片為Images控件中的第2個(gè)圖片
THIS.TreeView1.Nodes(3).IMAGE=3 &&這里1表示節(jié)點(diǎn)圖片為Images控件中的第3個(gè)圖片
THIS.TreeView1.Nodes(4).IMAGE=4 &&這里2表示節(jié)點(diǎn)圖片為Images控件中的第4個(gè)圖片
或
FOR I=1 TO THIS.TreeView1.GetVisibleCount &&取得的節(jié)點(diǎn)數(shù)最小為4
THIS.TreeView1.Nodes(I).IMAGE=1
ENDFOR
******************************************************************
***********************以下代碼為我Appler整理*********************
使TreeView控件不可用:
THISFORM.TreeView1.OBJECT.ENABLED=.F. &&即在Enabled屬性前加OBJECT
******************************************************************
使TreeView控件不可用:
THISFORM.TreeView1.OBJECT.ENABLED=.F. &&即在Enabled屬性前加OBJECT
******************************************************************
注意你需要在表單的 Init 事件中而不是 TreeView 的 Init 事件中進(jìn)行上述設(shè)置, 因?yàn)?TreeView 可能會(huì)在 ImageList 之前實(shí)例化, 如果這樣,試著設(shè)置 ImageList 屬性為一個(gè)尚不存在的對(duì)象將會(huì)失敗。 同時(shí), 注意上述代碼中的"object" 關(guān)鍵字; 這是必須的。
Indentation: 子節(jié)點(diǎn)縮進(jìn)多少。
Indentation: 子節(jié)點(diǎn)縮進(jìn)多少。
HideSelection: 如果沒(méi)有關(guān)閉這一選項(xiàng), 當(dāng) TreeView 控件失去焦點(diǎn)時(shí),選定節(jié)點(diǎn)不會(huì)保持高亮度。 這很容易把用戶糊涂。
Font: 用于節(jié)點(diǎn)文本的字體名字, 字號(hào)和字型。該屬性可從屬性表中修改(注意幫助文件中說(shuō)明了 ScrollBars 屬性, 但沒(méi)有該屬性)。
DropHighlight: 該屬性用于支持TreeView 控件的 DragOver 事件, 因此可以在鼠標(biāo)經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),高亮顯示該節(jié)點(diǎn)。 但是, 這只會(huì)在 VFP 6 中的版本 6 的 TreeView 控件中才實(shí)現(xiàn)了; 在老版本的控件中設(shè)置該屬性為節(jié)點(diǎn)對(duì)象時(shí),會(huì)引發(fā)一條"類型失配" 錯(cuò)誤。 在這種情況下, 要達(dá)到同樣目的,可用 HitTest() 來(lái)檢查鼠標(biāo)經(jīng)過(guò)的是哪一節(jié)點(diǎn)并設(shè)置該節(jié)點(diǎn)的 Selected 屬性為 .T. TREEVIEW 示例表單在 DragOver 事件中使用了該技術(shù)。
Font: 用于節(jié)點(diǎn)文本的字體名字, 字號(hào)和字型。該屬性可從屬性表中修改(注意幫助文件中說(shuō)明了 ScrollBars 屬性, 但沒(méi)有該屬性)。
DropHighlight: 該屬性用于支持TreeView 控件的 DragOver 事件, 因此可以在鼠標(biāo)經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),高亮顯示該節(jié)點(diǎn)。 但是, 這只會(huì)在 VFP 6 中的版本 6 的 TreeView 控件中才實(shí)現(xiàn)了; 在老版本的控件中設(shè)置該屬性為節(jié)點(diǎn)對(duì)象時(shí),會(huì)引發(fā)一條"類型失配" 錯(cuò)誤。 在這種情況下, 要達(dá)到同樣目的,可用 HitTest() 來(lái)檢查鼠標(biāo)經(jīng)過(guò)的是哪一節(jié)點(diǎn)并設(shè)置該節(jié)點(diǎn)的 Selected 屬性為 .T. TREEVIEW 示例表單在 DragOver 事件中使用了該技術(shù)。
(責(zé)任編輯:admin)
頂一下
(1)
100%
踩一下
(0)
0%
上一篇:Access中treeview不能使用或提示沒(méi)有版權(quán)(License)的解決辦法
下一篇:Access2010使用Treeview出現(xiàn)問(wèn)題的解決辦法(適合32位及64位)
下一篇:Access2010使用Treeview出現(xiàn)問(wèn)題的解決辦法(適合32位及64位)
相關(guān)內(nèi)容
- ·注冊(cè)ActiveX控件的幾種方法
- ·在Access2003或以上版本使用RichTX32.O
- ·快速注冊(cè)DLL和OCX的方法【技巧】
- ·Access的Treeview在 MS10-036 更新后無(wú)
- ·在安全補(bǔ)丁Security Advisory 960715
- ·Access2010使用Treeview出現(xiàn)問(wèn)題的解決
- ·Access中使用TreeView 樹(shù)形控件 詳細(xì)講
- ·Access中treeview不能使用或提示沒(méi)有版
- ·The Kill-Bit FAQ: Part 3 of 3
- ·The Kill-Bit FAQ: Part 2 of 3
- ·The Kill-Bit FAQ: Part 1 of 3
- ·ACCESS EXCEL 一個(gè)增強(qiáng)Treeview 節(jié)點(diǎn)編
- ·windows 7或其它windows 64位系統(tǒng)里Tre
- ·Access Treeview 樹(shù)控件MSCOMCTL.OCX
- ·[技巧]如何導(dǎo)出Imagelist的圖標(biāo)或圖片
- ·Access中使用身份證讀卡器的技巧
最新內(nèi)容
- ·注冊(cè)ActiveX控件的幾種方法
- ·在Access2003或以上版本使用RichTX32.OCX R
- ·快速注冊(cè)DLL和OCX的方法【技巧】
- ·Access的Treeview在 MS10-036 更新后無(wú)法使
- ·在安全補(bǔ)丁Security Advisory 960715 更新
- ·Access2010使用Treeview出現(xiàn)問(wèn)題的解決辦法
- ·Access中使用TreeView 樹(shù)形控件 詳細(xì)講解(E
- ·Access中treeview不能使用或提示沒(méi)有版權(quán)(L
- ·The Kill-Bit FAQ: Part 3 of 3
- ·The Kill-Bit FAQ: Part 2 of 3
推薦內(nèi)容