发表回复 
如何批量生成Button?
2017-07-17, 13 : 11
如何批量生成Button?
想给自己的B站缓存视频写个播放控制列表,实现以下功能:

在1个GUI窗体内,每间隔一段竖直距离就生成1个按钮,总共20个按钮,按钮显示名称中包含空格,类似于“第1集 XXXX”这样,然后点击某按钮就触发打开相应集的动作,比如点击按钮1,就用B站播放器打开第1集的视频和弹幕
希望的是按钮数量,按钮间距离,按钮显示名称都能设置为变量,方便随时修改

完全是代码小白,播放的那个功能勉强折腾出来了,主要是GUI的语句语法什么的都不太清楚,在网上只找到了基本用法,不知道怎么替换成变量,也不知道怎么在名称里加空格,​求大神指教,拜谢
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-07-18, 11 : 33 (这个帖子最后修改于: 2017-07-29 21 : 33 by feiyue.)
RE: 如何批量生成Button?
写了个简单的示范代码,仅供参考。
代码: (全选)
按钮数量     = 20

按钮间的距离 = 15

按钮列数=3

按钮所有名称 =
(
第1集 XXXX
第2集 XXXX
第3集 XXXX
第4集 XXXX
)

按钮所有网址 =
(
http://XXXX1
http://XXXX2
http://XXXX3
http://XXXX4
)

Gui, Color, DDEEFF
Gui, Margin,, %按钮间的距离%
Gui, Font, s16
Loop % 按钮数量
{
  i:=A_Index, j:=Mod(i, 按钮列数)=1 ? "xm" : "x+15"
  名称:=StrSplit(按钮所有名称,"`n")[i]
  Gui, Add, Button, %j% w400 r1 g运行 v@%i%, %名称%
}
Gui, Show,, 我的播放列表
return

运行:
Gui, +OwnDialogs

; A_GuiControl ==> @1、@2、……、@20
i:=SubStr(A_GuiControl,2)

网址:=StrSplit(按钮所有网址,"`n")[i]

;-- 这里改成播放网址代码,目前仅是提示
MsgBox, %网址%
return

; 所用 F1热键 可以显示/隐藏窗口
F1::Gui, Show, % (ok:=!ok) ? "Hide":""

;
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 4用户表示感谢feiyue
2017-07-26, 10 : 12
RE: 如何批量生成Button?
@feiyue 高手出手就是不一样。请教一下,如果是多列显示,是否也可以批量生成呢,譬如题主的需求,变成两列或者四列显示。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-07-28, 15 : 02 (这个帖子最后修改于: 2017-07-28 15 : 03 by robertL.)
RE: 如何批量生成Button?
应该可以。
你先手动写出包含若干个按钮能表示出规律的样板代码,从此代码中抽象出变化部分,外面再加一生成代码的功能即可。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-07-29, 21 : 35 (这个帖子最后修改于: 2017-07-29 21 : 35 by feiyue.)
RE: 如何批量生成Button?
本来就是2列显示,如果要自定义,下面这行的2改为变量即可:
i:=A_Index, j:=Mod(i, 按钮列数)=1 ? "xm" : "x+15"
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-09, 09 : 33
RE: 如何批量生成Button?
一直想如何读入参数,批量建立按钮,然后执行像似的命令,今天竟然碰巧遇到答案
@feiyue @robertL 谢谢feiyue 谢谢站长
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-21, 17 : 16
RE: 如何批量生成Button?
太感谢啦,前阵子没空折腾,我这就试试去, 再次感谢LS的大神
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-26, 10 : 36 (这个帖子最后修改于: 2017-09-26 10 : 37 by abc001.)
RE: 如何批量生成Button?
(2017-07-18 11 : 33)feiyue 提到:  写了个简单的示范代码,仅供参考。
代码: (全选)
按钮数量     = 20

按钮间的距离 = 15

按钮列数=3

按钮所有名称 =
(
第1集 XXXX
第2集 XXXX
第3集 XXXX
第4集 XXXX
)

按钮所有网址 =
(
http://XXXX1
http://XXXX2
http://XXXX3
http://XXXX4
)

Gui, Color, DDEEFF
Gui, Margin,, %按钮间的距离%
Gui, Font, s16
Loop % 按钮数量
{
  i:=A_Index, j:=Mod(i, 按钮列数)=1 ? "xm" : "x+15"
  名称:=StrSplit(按钮所有名称,"`n")[i]
  Gui, Add, Button, %j% w400 r1 g运行 v@%i%, %名称%
}
Gui, Show,, 我的播放列表
return

运行:
Gui, +OwnDialogs

; A_GuiControl ==> @1、@2、……、@20
i:=SubStr(A_GuiControl,2)

网址:=StrSplit(按钮所有网址,"`n")[i]

;-- 这里改成播放网址代码,目前仅是提示
MsgBox, %网址%
return

; 所用 F1热键 可以显示/隐藏窗口
F1::Gui, Show, % (ok:=!ok) ? "Hide":""

;

相当棒的代码,收藏了。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合