delphi在TreeView 裡加核取方塊

2021-04-01 04:50:19 字數 1759 閱讀 4123

//這裡是建立乙個乙個類

type tcheckboxtreeview=class(ttreeview)

protected

procedure createparams(var params: tcreateparams); override;

end;

//具體只要加一句話

procedure tcheckboxtreeview.createparams(var params: tcreateparams);

begin

inherited;

params.style:=params.style or tvs_checkboxes;

end;

或者在窗體上加乙個ttreeview 控制項,然後設定

setwindowlong(treeview.handle,gwl_style,getwindowlong(treeview.handle,gwl_style) or tvs_checkboxes);

可以定義const tvs_checkboxes =$0100 或者在單元裡新增***mctrl單元

兩個函式:分別得到核取方塊狀態

function isnodechecked(node :ttreenode) :boolean;

const

tvis_checked = $2000;

vartvitem :ttvitem;

begin

tvitem.mask  := tvif_state;

tvitem.hitem := node.itemid;

treeview_getitem(node.treeview.handle, tvitem);

result := (tvitem.state and tvis_checked) = tvis_checked;

end;

procedure setnodechecked(node :ttreenode; checked :boolean);

const

tvis_checked = $2000;

vartvitem :ttvitem;

begin

fillchar(tvitem, sizeof(tvitem), 0);

with tvitem do begin

hitem     := node.itemid;

mask      := tvif_state;

statemask := tvis_stateimagemask;

if checked then

tvitem.state :=tvis_checked

else

tvitem.state :=tvis_checked shr 1;

treeview_setitem(node.treeview.handle, tvitem);

end;

end;

窗體上新增乙個tlistbox,在按鈕裡新增**

procedure tform1.button1click(sender: tobject);

var i:integer;

begin

listbox1.clear;

for i:=0 to mytree.items.count-1 do begin

if isnodechecked(mytree.items.item[i]) then

listbox1.items.add(mytree.items.item[i].text);

end;

end;

DELPHI控制項學習之TreeView

一.如何初始化乙個treeview?弄乙個視窗,放上乙個treeview和乙個button,分別取名為tv1和btn1。如果需要 在每個節點前有個圖,請在視窗上放上乙個imagelist,取名為imagelist1,雙擊 它,加入六個圖示。還要記得記得將tv1的images屬性改為imagelist...

delphi中Treeview的使用介紹

今天重點學習了treeview的使用方法,基本的已經寫了,現在主要想說的是如何顯示資料庫的資料,今天只是做了個較簡單的例子,乙個父節點下顯示資料庫中某個field的值。如下 procedure tmainform.treeviewshow sender tobject varnode1,subnod...

在TreeView中獲得TreeCtrl指標

一般來說,在文件 視 框架中使用ctreeview類,而在基於對話方塊的程式中使用ctreectrl類,而ctreeview實際上是包裝了乙個ctreectrl物件,因此我們可以通過ctreeview gettreectrl 來得到ctreectrl的指標,然後就直接操作ctreectrl物件吧 新...