【问题标题】:Treeview checkboxes (How to I get the checked value?)树视图复选框(如何获得选中的值?)
【发布时间】:2014-04-10 04:38:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: checkbox treeview powerbuilder


    【解决方案1】:

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

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

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

    然后声明这些实例变量

    //实例变量
    公开:
    常量 uint TVM_HITTEST = 4369
    常量 uint 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 鼠标移动事件
    OS_TVHITTESTINFO lstr_tvhittest

    il_handle = 句柄(这个)

    // 获取状态图标是否被点击的信息。
    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 THEN
    ib_stateclick = (lstr_tvhittest.l_flags = TVHT_ONITEMSTATEICON)
    如果结束

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

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

    如果 ib_stateclick THEN
    如果 l_tviold.StatePictureIndex=1 那么
    //复选框已选中
    Messagebox('','Check Box Checked on '+String(handle))
    其他
    //复选框未选中
    Messagebox('','Check Box Un-Checked on '+String(handle))
    如果
    结束 如果结束


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

    收集的信息

    问候
    拉杰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2010-12-14
      相关资源
      最近更新 更多