TC官方合作论坛

标题: 再谈界面控件之按钮与热键 [打印本页]

作者: 冷月无痕    时间: 2012-4-23 22:29
标题: 再谈界面控件之按钮与热键
最近还是有不少人在问TC热键的设置方法,今天在这里发一贴,谈谈自己的个人思路,就不一一回帖说明了!
TC的界面设计虽然有一些瑕疵,也许有些人觉得很麻烦,有些人觉得很方便,有些人觉得很漂亮,而有些人却又觉得很土!
所谓众口难调,但是个人认为对于初学者来说,TC的界面设计无疑是很容易上手的!前提是你掌握了方法!下面是本人的几个按钮及热键的设计思路,仅供大家参考!

一,按钮设置只开启一次
有童鞋为了使点击按钮只执行一次开启线程(避免线程重复开启),用设置全局变量来控制,或者是用判断线程句柄是否为0来控制,其实还有一种更简单,更直观的方法,那就是用控件的有效命令来设置!代码如下:
  1. 功能 按钮0_点击()
  2. 线程句柄=线程.开启("我的程序.主线程")
  3. 控件.有效("按钮0",假)
  4. 返回 真
  5. 功能结束
复制代码
效果图:
点击前
[attach]2880[/attach]
点击后
[attach]2881[/attach]
看效果图,当我们点击按钮开启线程以后,按钮控件变灰色,也就是失效了,就防止了再次开启线程,更让用户直观的看到,脚本只能开始一次

二,热键的设置
我们先在脚本界面上放个热键控件,这时这个热键控件就像个编辑框,里面有个无字!

[attach]2882[/attach]
然后我们单击它,右边的工具栏就会变成属性栏,我们就可以在属性栏里设置该热键的属性,首先是热键名称,默认是"热键0",当然如果你放的是第二个热键控件,那么默认是"热键1",以此类推!这个名称我们可以自定义的,只要不和别的控件名相同就可以,比如"开始热键"!

[attach]2883[/attach]
[attach]2884[/attach]

然后我们还可以设置热键键值,这个属性相当于默认的热键键值,点击这个属性框最右边的"...",就会弹出一个输入框,我们点击上面的编辑框,看到一个光标在编辑框闪动了没?然后按下我们需要设置为热键的键盘按键,比如"F9",那么编辑框里就会出现"F9"字样,点击确定,该热键的默认键值就设置好了!

[attach]2885[/attach]

很多童鞋到了这一步就以为热键就设置好了,所以就会出现设置的热键没反应的问题!那是因为我们没有设置热键的响应事件!
[attach]2886[/attach]
从上图我们可以看到,热键控件一共有两个响应事件,1.热键,2.失去焦点
点击热键的下拉标记,我们可以看到"<添加>......."字样,点击它就会转到代码界面,并自动生成一个热键函数:
  1. 功能 开始热键_热键()
  2. //这里添加你要执行的代码

  3. 返回 真
  4. 功能结束
复制代码
然后我们在这个函数里写的代码,就是当脚本运行后,我们按下设置的热键脚本所执行的代码了!
这里需要注意的是,TC的控件有个一个特点,所有控件的响应事件都需要这样添加,如果你只是复制粘贴代码,而没有添加事件,那么控件是无法响应事件的,也就是无效的!
那么什么是"失去焦点"事件呢?当我们运行脚本以后,点击热键控件,热键编辑框里就会有个光标在闪动,这时我们可以按下别的键盘按键,编辑框内的字符就会改变成我们按下的键盘按键,比如"A",这时,焦点就是在热键控件上的,当我们点击脚本界面上别的地方时,热键编辑框里闪动的光标就会消失了,也就是热键控件"失去焦点"了,那么"失去焦点"事件就开始响应了!看到这里大家都应该知道了,一般这个"失去焦点"事件都是为了让使用脚本的用户自定义热键而设置的!
  1. 功能 开始热键_失去焦点()
  2. //这里添加你要执行的代码
  3. 热键.销毁("开始热键")
  4. 热键.注册("开始热键")
  5. 返回 真
  6. 功能结束
复制代码
当然,如果你不让用户自定义热键,这个事件你也可以不添加!

三,多功能按钮
什么是多功能按钮与热键呢?比如,当脚本运行以后,我们第一次点击一个按钮,那么脚本开启线程,之后再次点击该按钮,线程暂停,再次点击,线程恢复,再点,暂停,再点,恢复......
我是用按钮上显示的文本来实现这个功能的,当然你也可以用别的方法!
效果图
[attach]2878[/attach]
[attach]2879[/attach]
(额,不知道为什么,"开始挂机(F9)"的图片上传不了,大家知道该按钮一开始设置的文本为:"开始挂机(F9)"就好了!按钮名定义的是"开始挂机")
2.1版TC代码如下:
  1.     功能 开始挂机_点击()
  2.     内容=按钮.获得文本("开始挂机")
  3.     如果 (内容=="开始挂机(F9)")
  4.     按钮.设置文本("开始挂机","暂停挂机(F9)")
  5.     主线程句柄=线程.开启("我的程序.主线程")
  6.     如果结束
  7.     如果(内容=="暂停挂机(F9)")
  8.     按钮.设置文本("开始挂机","恢复挂机(F9)")
  9.     线程.暂停(主线程句柄)
  10.     如果结束
  11.     如果(内容== "恢复挂机(F9)"
  12.     按钮.设置文本("开始挂机","暂停挂机(F9)")
  13.     线程.恢复(主线程句柄)
  14.     如果结束
  15.     返回 真
  16.     功能结束


  17. 等3.0版TC出来以后,我们可以用"选择"命令来简化代码:
复制代码
   功能 开始挂机_点击()
    内容=按钮.获得文本("开始挂机")
    选择 (内容)
    条件 "开始挂机(F9)":
    按钮.设置文本("开始挂机","暂停挂机(F9)")
    主线程句柄=线程.开启("我的程序.主线程","")
    条件 "暂停挂机(F9)":
    按钮.设置文本("开始挂机","恢复挂机(F9)")
    线程.暂停(主线程句柄)
    条件 "恢复挂机(F9)":
    按钮.设置文本("开始挂机","暂停挂机(F9)")
    线程.恢复(主线程句柄)
    选择结束
    返回 真
    功能结束
四,热键控制按钮
其实很简单,我们只要在热键的函数里写上调用按钮函数的命令,就可以让热键和按钮的功能一致!

  1. 功能 开始热键_热键()
  2. 我的程序.开始挂机_点击()
  3. 返回 真
  4. 功能结束
复制代码

最后再次提醒大家,界面控件的响应事件一定要点击控件属性里的事件添加到代码中,如果你只是复制粘贴了代码,而没有添加事件,控件是无效的哦!
好了,关于按钮和热键今天就谈到这里,希望对大家的脚本制作有点帮助!



作者: bacsj118    时间: 2012-4-23 22:44
:smoke 高手就是高手
作者: cylhb    时间: 2012-4-23 23:55
很好很透彻,我也发现很多人会搞混...这是一个明灯
作者: fuwengh    时间: 2012-4-24 08:19
新手小白必须顶的贴
作者: tyuyan    时间: 2012-4-24 09:14
:D   必须的支持!
作者: 龙归_莫言    时间: 2012-4-24 23:45
额 有点麻烦了
作者: 冷月无痕    时间: 2012-4-24 23:47
回复 6楼龙归_莫言的帖子

很麻烦么?其实不会,麻烦表示更自由,更灵活!
作者: 53988235    时间: 2012-4-25 08:56
又是一个扯东扯西的家伙.说注册热键的扯那么多,你让新手怎么看得明白?
作者: 冷月无痕    时间: 2012-4-25 15:39
回复 8楼53988235的帖子

额 我说过这贴只说注册热键?
作者: jian4892    时间: 2012-4-25 23:11
支持。。。学习了。。
作者: 597585225    时间: 2012-4-26 14:38
新手小白必须顶的贴
作者: hngsdj    时间: 2012-4-27 17:31
真的很好,很给力!!
作者: 272109081    时间: 2012-4-28 05:58
有点多   顶了再看
作者: thischild    时间: 2012-6-5 15:37
就一个字:学习.
作者: qq965903135    时间: 2012-6-9 09:29
无情
作者: 很丑很温柔    时间: 2012-6-26 22:46
顶起
作者: baijatqbj1    时间: 2012-6-29 13:11
学习
作者: 刀疤兔1519    时间: 2012-7-12 20:52
大神果然不同凡响
作者: 最爱念    时间: 2012-7-14 00:42
又学到新东西了,感谢lz
作者: iqis000    时间: 2012-8-14 13:49
这个非常有用啊,我没粘贴代码,我是在代码编辑器里一行行输入的,也不好用,一直奇怪呢,原来是要TC增加事件才行,前面试的不好用的功能都可以用了
作者: yjbdmcx    时间: 2012-8-19 13:40
冷月是小白最好的导师!

要是有个界面图就更好了!
作者: molunshang    时间: 2012-10-15 22:02
学习了
作者: 947895630    时间: 2012-10-25 08:46
支持
作者: lyyybz    时间: 2012-11-27 14:08
支持。。。学习了。。
作者: 05windows    时间: 2012-12-2 21:18
再次膜拜了冷月大神
作者: 313442275    时间: 2012-12-14 09:40
好东西
作者: 雨碎江南    时间: 2012-12-30 05:07
这个很实用
作者: yyyyjx    时间: 2013-1-24 01:34
我只想把事件写在别的空间里,也就是事件跨空间,比如按钮的点击事件,按钮多了,脚本多了写在一个界面里就要管理,所以我需要把一部份事件写在另一个空间里,方便管理。
可是,事件别不支持跨空间使用啊,请问管理员,你是怎么做的呢?可否给点建议。
作者: kkk3918    时间: 2014-10-25 00:41
老实说,看了几遍还是不明白,所有的高手怎么都不会照顾新手,前面的跟着做都会了,到了  <<<<然后我们在这个函数里写的代码,就是当脚本运行后,我们按下设置的热键脚本所执行的代码了!
这里需要注意的是,TC的控件有个一个特点,所有控件的响应事件都需要这样添加,如果你只是复制粘贴代码,而没有添加事件,那么控件是无法响应事件的,也就是无效的!    >>>> 到了这里就直接扯到"失去焦点了",  连<然后我们在这个函数里写的代码,就是当脚本运行后,我们按下设置的热键脚本所执行的代码了!> 那到底是什么代码又不说清楚,  也不写出来,  更不会直接搞成个 <实例>或做成个视频出来给大家看看,  都只是纸上谈兵,   小白和新手只会浪费时间看你在几级跳而已,  我帮小白们清楚的问你吓:  您能否把上面的教程做成视频让广大小白们看看?
作者: T星人    时间: 2014-11-14 19:37
很强大~~




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1