yeeboys 发表于 2014-11-28 11:30:33

对话框 - sk_del_window[1] 被点击

本帖最后由 yeeboys 于 2014-11-28 19:35 编辑

事件
    对话框 - sk_del_window 被点击
    对话框 - sk_del_window 被点击
....................
....................   对话框 - sk_del_window 被点击
动作
    自定义代码:   local integer p=【被点击的 对话框n=?】

//=========================================
我要做的是对话框 - sk_del_window 被点击时p=1
我要做的是对话框 - sk_del_window 被点击时p=2
.........................
我要做的是对话框 - sk_del_window 被点击时p=n
//========================================
要用哈希表吗,要具体点,我不知道用什么当 主和子目录


希瓦 发表于 2014-11-28 18:26:08

没明白……能说清楚一点吗

yeeboys 发表于 2014-11-28 19:36:11

希瓦 发表于 2014-11-28 18:26
没明白……能说清楚一点吗

我改了,你看看

希瓦 发表于 2014-11-28 20:58:20

不需要哈希表吧,可以直接用循环来查找。
local integer p = 1
loop
    exitwhen p > udg_n
    exitwhen udg_sk_del_window == GetClickedDialog()
    set p = p + 1
endloop

就是循环对比被点击的对话框和数组中的对话框,如果相同就找到了。

yeeboys 发表于 2014-11-29 00:38:33

希瓦 发表于 2014-11-28 20:58
不需要哈希表吧,可以直接用循环来查找。
local integer p = 1
loop


当n=100时,就会有点卡吧,还是绑定比较好,要怎么绑定

chyj4747 发表于 2014-11-29 04:57:09

yeeboys 发表于 2014-11-29 00:38
当n=100时,就会有点卡吧,还是绑定比较好,要怎么绑定

哈希表也是循环查找,当然具体要看哈希表的实现方式
n才等于100这么小不会卡的

希瓦 发表于 2014-11-29 11:35:58

100的数量离“卡”还早着呢。

不过如果一定要用哈希表,可以在创建的时候储存序号,被点击的时候读取序号。
// 储存序号
call SaveInteger(udg_hashtable, GetHandleId(sk_del_window(n)), StringHash("index"), n)
// 主索引和子索引只要有一个填对话框的handle id就可以了
// 一般为了避免冲突,使用handleid作为主索引,随便一个什么值做子索引,储存对话框的序号

// 读取序号
LoadInteger(udg_hashtable, GetHandleId(GetClickedDialog()), StringHash("index"))
// 使用相同的索引读取就可以了

yeeboys 发表于 2014-11-29 15:03:04

希瓦 发表于 2014-11-29 11:35
100的数量离“卡”还早着呢。

不过如果一定要用哈希表,可以在创建的时候储存序号,被点击的时候读取序 ...

循环匹配的办法,本来要100次的,加了几个条件,只要做15次了
页: [1]
查看完整版本: 对话框 - sk_del_window[1] 被点击