虽然我不是没有为mIRC编程,但我不熟悉使用对话框,因为我之前没有使用它们,而且我的客户不需要使用它们,所以直到现在,我还没有深入研究它们先前。
alias ss {
dialog -dm setup setup
}
dialog setup {
; === Window ===
title "Script Setup"
size -1 -1 420 335
button "OK",1,145 307 73 21, OK
button "Cancel",2,226 307 73 21
button "Help",3,307 307 73 21
; ==============
box "Personal Preferences",4, 3 3 493 293
combo 5,128 60 185 210,sort
button "Add",6, 323 83 73 21
button "Edit",7, 323 112 73 21
button "Delete",8, 323 141 73 21
button "Reset List",9, 323 170 73 21
}
alias -l update.setup {
did -r setup 5
set %temp.total $count(%setup.list,$chr(44))
set %temp.count 0
:start
inc %temp.count 1
did -a setup 5 $gettok(%setup.list,%temp.count,44)
if (%temp.count < %temp.total) { goto start }
}
on *:DIALOG:setup:edit:*: {
if ($did == 5) {
set %setup.temp.channel $did(5).text
}
}
on *:DIALOG:setup:sclick:*: {
; ====== Channel List Btn's ======
; === Add ===
if ($did == 6) {
set %setup.list %setup.list $+ %setup.temp.channel $+ ,
update.setup
}
; === Edit ===
if ($did == 7) {
}
; === Delete ===
if ($did == 8) {
set -u3 %setup.tc %setup.channel.selected $+ ,
set %setup.list $remove(%setup.list,%setup.tc)
update.setup
}
; === Reset ===
if ($did == 9) {
unset %setup.list
update.setup
}
}
我正在尝试创建一个对话框,其功能与添加新服务器的选项窗口相同,但这是添加新频道,而我实际上希望上面的版本没有文本输入,而是在点击添加或编辑时打开另一个对话框。
以上只是一个额外的问题,可以节省自己在这里设置另一个问题的时间,但是我当前的问题导致这是在点击删除频道时,没有频道删除而是当前列表合并
感谢您提供任何帮助和/或建议,并随时提供我的问题。
最诚挚的问候, 添
答案 0 :(得分:1)
你的剧本中有几个主要问题。
一个。您没有在对话框初始化时显示列表 解决方案:
on *:dialog:setup:init:*: update.setup
B中。当你收到“确定”,“取消”按钮时,请确保给他们相关的命令:
button "Cancel",2,226 307 73 21, cancel
℃。 添加/删除/编辑命令 对于以下所有命令,我使用纯粹的“令牌标识符”,因此我可以最大化mIRC内置函数的使用。 (有关更多信息,请在mIRC /帮助令牌标识符处写入) 1.如果条目已在我们的列表中,则添加测试。这种保护有助于我们避免列表中的相同通道,并帮助我们更好地使用删除令牌。 2.对“删除”命令使用“$ remtok”标识符。 3.使用“$ input”标识符进行简单优雅的条目编辑。目前的编辑不是很好的编程习惯+会导致几个错误。 *在每个命令之后我放置了“update.setup”,这样它将在每次更改列表时“刷新”我们的列表。
d。 适当的条件
使用“if..elseif..else”逻辑,不要使用“if..if..if”方法。
电子。 / ss别名
Change alias logic, now it will create new dialog or if dialog is already open it will maximize and display it.
奖励:推特使用“update.setup”别名
完整代码
alias ss {
dialog $iif($dialog(setup), -ve, -dmv) setup setup
}
dialog setup {
; === Window ===
title "Script Setup"
size -1 -1 420 335
button "OK",1,145 307 73 21, OK
button "Cancel",2,226 307 73 21, cancel
button "Help",3,307 307 73 21
; ==============
box "Personal Preferences",4, 3 3 493 293
combo 5,128 60 185 210,sort
button "Add",6, 323 83 73 21
button "Edit",7, 323 112 73 21
button "Delete",8, 323 141 73 21
button "Reset List",9, 323 170 73 21
}
alias -l update.setup {
did -r setup 5
var %i = 1, %n = $numtok(%setup.list, 44)
while (%i <= %n) {
did -a setup 5 $gettok(%setup.list, %i, 44)
inc %i
}
}
on *:dialog:setup:init:*: update.setup
; ====== Channel List Btn's ======
on *:DIALOG:setup:sclick:*: {
; === Add ===
if ($did == 6) {
if (!$istok(%setup.list,$did(5),44)) {
set %setup.list $addtok(%setup.list, $did(5), 44)
update.setup
}
}
; === Edit ===
elseif ($did == 7) {
var %temp.editChannel = $did(5)
if ($input(Channel to be edited., ye, Channel Editing, %temp.editChannel)) {
set %setup.list $reptok(%setup.list, %temp.editChannel, $v1, 1, 44)
update.setup
dialog -ev setup
}
}
; === Delete ===
elseif ($did == 8) {
set %setup.list $remtok(%setup.list, $did(5), 1, 44)
update.setup
}
; === Reset ===
elseif ($did == 9) {
unset %setup.list
update.setup
}
}