А теперь пробуем чекбоксы - меняем HTML таким образом:
Code: Select all
<HTML>
<HEAD><TITLE>Rgrid example</TITLE>
<META HTTP-EQUIV="Content-Language" content="en">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<SCRIPT type="text/javascript" src="Rgrid.js"></SCRIPT>
<SCRIPT type="text/javascript" src="robot.js"></SCRIPT>
</HEAD>
<BODY BGCOLOR=#000000 TEXT=#00AA00 LINK=#00AAAA>
<p id="here" align=center>Rgrid requires a modern web-browser to work properly...</p>
<p align=center>
<input name="el1" type="checkbox" onclick="inputcheck(10)" id="input10">
<input name="el2" type="checkbox" onclick="inputcheck(20)" id="input20">
<input name="el3" type="checkbox" onclick="inputcheck(30)" id="input30">
</p>
<font size=-4>
<p id="pow" align=center>Powered...</p>
</font>
</BODY>
<script type="text/javascript">
$R.prefix = "pcb/";
$_("pow","Powered by " + $R.powered());
function command1(r) {
alert("Robot "+r.regs[9]+" "+r.regs[0xA]+" "+r.regs[0xB]+" "+r.regs[0xC]);
}
$R.callback(1,command1);
function action(x,y) {
$R.event(0,-1,1,x,y);
}
if($R.grid('here',20,12,action)>0) {
$R.add(robot);
$R.start();
}
function inputcheck(i) {
var e = $("input"+i);
if(e.checked) i++;
$R.event(0,-5,i);
}
</script>
</HTML>
Этот код добавляет под сеткой 3 чекбокса:
Screenshot from 2023-04-15 03-45-17.png
Модифицируем робота вот так:
Code: Select all
author "Shaos"
robot "Example"
main()
{
def pak[9]
def buf[10]
pak[0]=8
buf[0]=13
for(A=1;A<=8;A++)
{
pak[A] = 8-A
buf[A] = 13
}
while(1)
{
code = 0
recv code
if(N==0) continue
if(N==#FFFF) // mouse click
{
select x y
set #FF
}
if(N==#FFFB) // GUI action
{
A = k
B = n
C = code
COMMAND 1
}
}
}
Теперь при выборе первого чекбокса выскочит вот такой попап (Robot 1 далее время, потом код -5=0xFFFB и далее идентификатор события):
Screenshot from 2023-04-15 03-43-44.png
В данном случае идентификатор события 11 - т.е. контрол с кодом 10 включён (+1).
Далее снимаем чек с первого чекбокса - теперь идентификатор события 10 (чекбокс выключен):
Screenshot from 2023-04-15 03-44-05.png
И для разнообразия ставим чек на третьем чекбоксе:
Screenshot from 2023-04-15 03-44-25.png
В данном случае попапчик нам нужен только для отладки с помощью COMMAND 1 выводящем значения регистров A B C куда предварительно записаны K (время), N (код источника) и CODE (код пришедший из очереди сообщений) - так можно видеть, что всё сработало как надо.
P.S. По идее можно разными отрицательными кодами источника кодировать разные контролы, а в коде данных можно указывать взведён чекбокс или нет - в этом случае функция обработчик может выглядеть вот так:
Code: Select all
function inputcheck(i) {
var e = $("input"+i);
$R.event(0,-i,e.checked);
}
(тут последние 2 аргумента опущены, но в них что-то ещё можно передавать - внутри робота они принимаются как регистры X и Y)
P.P.S. Вот прям сразу можно ещё и обычные кнопки поддержать:
Code: Select all
<input value="Click" type="button" onclick="inputcheck(30)" id="input30">
Screenshot from 2023-04-15 04-10-38.png
А вот для радио-кнопок (type=radio) надо будет дополнительный код на JS городить, который будет выключать лишние радиокнопки...
P.P.P.S. Не - лишние радиокнопки сами выключаются если у них один и тот же name (а вот id у них должны быть разные, чтобы робот умел их отличать друг от друга).
You do not have the required permissions to view the files attached to this post.