Treeview复选框(如何获取选中的值?)

时间:2014-04-10 04:38:40

标签: checkbox treeview powerbuilder

我遇到了如何从TreeviewItem中的复选框获取值的问题。在下面的链接中,Terry has mentioned使用此方法,

  

(一种方法是在树视图上使用CheckBoxes属性,然后检查treeviewitem的StatePicture(Unchecked = 1,Checked = 2))

但我仍然不知道如何使用它。我不知道我需要向StatePicture声明值(1,2),否则当我选中/取消选中时,该值将自动设置。

1 个答案:

答案 0 :(得分:0)

是的,可能。你可以用很少的代码来做到这一点。首先,您需要创建两个结构。

从结构中输入os_point         长l_x
        长l_y
结束类型

从结构中输入os_tvhittestinfo         os_point str_pt
        长l_flags
        长l_hitem
结束类型

然后声明这些实例变量

//实例变量
市民:
常数uint TVM_HITTEST = 4369
常数utt TVHT_ONITEMSTATEICON = 64

受保护的


布尔值ib_stateclick = FALSE
布尔值ib_stateclickin = FALSE
长il_handle

然后您需要声明本地外部函数

//本地外部功能
FUNCTION long HitMsg(long hWindow,uint uMsg,long wParam,REF OS_TVHITTESTINFO lParam)LIBRARY“user32.dll”ALIAS FOR SendMessageA

在Treeview控制鼠标移动事件上编写此代码

// Treeview mousemove事件
OS_TVHITTESTINFO lstr_tvhittest

il_handle =句柄(THIS)

//获取有关是否已单击状态图标的信息 lstr_tvhittest.str_pt.l_x = UnitsToPixels(xpos,XUnitsToPixels!)
lstr_tvhittest.str_pt.l_y = UnitsToPixels(ypos,YUnitsToPixels!)

//发送消息以检索鼠标指向的项目的句柄 HitMsg(il_handle,TVM_HITTEST,0,lstr_tvhittest)

//如果我们处于状态复选框,请设置标志 IF lstr_tvhittest.l_hItem<> 0那么
        ib_stateclick =(lstr_tvhittest.l_flags = TVHT_ONITEMSTATEICON)
END IF

然后在Treeview Clicked事件上编写以下代码

// Treeview点击事件
TreeviewItem l_tviold
this.GetItem(handle,l_tviold)

如果ib_stateclick那么     如果l_tviold.StatePictureIndex = 1那么
        //复选框已检查
        消息框('','复选框检查'+字符串(句柄))
    否则
        //复选框未检查
        消息框('','复选框未检查'+字符串(句柄))
    结束如果
END IF


完成。从https://groups.google.com/forum/#!topic/sybase.public.powerbuilder.general/YOKf5OwjKI0

收集的信息

问候
拉吉