Author Topic: Параметры radiobox  (Read 3057 times)

0 Members and 1 Guest are viewing this topic.

Rudeek

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Параметры radiobox
« on: April 07, 2018, 01:47:00 PM »
Есть у кого-нибудь идеи, как сделать, чтоб количество параметров(переключателей) в radiobox зависело от количества элементов в массиве? Т.е. чтоб с изменением количества элементов в массиве, изменялось и количество переключателей.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Параметры radiobox
« Reply #1 on: April 07, 2018, 02:08:59 PM »
Это невозможно.

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Параметры radiobox
« Reply #2 on: April 07, 2018, 11:09:59 PM »
Тут костылить по серьезному надо:
« Last Edit: April 09, 2018, 01:07:36 PM by open_78 »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Параметры radiobox
« Reply #3 on: April 08, 2018, 12:15:21 AM »
Попробовал "сочинить" костыль. Проверял только на версии кликера 4.13.011b.
Основной код:
Code: (clickermann) [Select]
STRSEPARATE("1:2:3:4:5",":",$arr)

STRWRITELN("input.txt",0,1)

$str=STRCONCAT("$res = RADIOBOX (",CHAR(34),"Выберите пункт",CHAR(34))
FOR($n=0,$n < ARRSIZE($arr))
   $str=STRCONCAT($str,",",CHAR(34),$arr[$n],CHAR(34))
END_CYC
$str=STRCONCAT($str, ")")
TFWRITE("includ.cms",$str,2)
TFDELETE("includ.cms",3)
WAITMS(200)
EXECUTE("includ.cms")
$res=0
WHILE($res=0)
   $res=TFREAD("input.txt",1)
   WAITMS(100)
END_CYC
PRINT("Вы выбрали: ", $res)
HALT
Второй файл должен лежать рядом с основным и называться includ.cms.
Второй:
Code: (clickermann) [Select]
#autorun
$res = RADIOBOX ("Выберите пункт","1","2","3","4","5")
STRWRITELN("input.txt",$res,1)
HALT(1)
P.S. При первом запуске возможно выскочит ошибка из-за отсутствия файла input.txt, но в дальнейшем всё работает.
P.P.S. Костыль он и есть костыль.
« Last Edit: April 09, 2018, 01:47:54 PM by open_78 »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Параметры radiobox
« Reply #4 on: April 08, 2018, 05:03:17 PM »
Вот с динамическим изменением количества элементов массива:
Code: (clickermann) [Select]
UNDEFINE($arr)
$rnd=RND(1,9)
FOR($size=0,$size<$rnd)
   ARRPUSH($arr,$size+1)
END_CYC
PRINT("Размер массива-",$rnd)
STRWRITELN("input.txt",0,1)
 
$str=STRCONCAT("$res = RADIOBOX (",CHAR(34),"Выберите пункт",CHAR(34))
FOR($n=0,$n < ARRSIZE($arr))
   $str=STRCONCAT($str,",",CHAR(34),$arr[$n],CHAR(34))
END_CYC
$str=STRCONCAT($str, ")")
TFWRITE("includ.cms",$str,2)
TFDELETE("includ.cms",3)
WAITMS(200)
EXECUTE("includ.cms")
$res=0
WHILE($res=0)
   $res=TFREAD("input.txt",1)
   WAITMS(100)
END_CYC
PRINT("Вы выбрали ",$res)
WAITMS(1000)
« Last Edit: April 09, 2018, 01:47:17 PM by open_78 »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Параметры radiobox
« Reply #5 on: April 08, 2018, 08:05:43 PM »
а вот и мой костыль  :D
для начала нужно создать инклуд со свитчем такого вида:
Code: (clickermann) [Select]
SWITCH(arrsize($arr))
CASE(1)
$res = RADIOBOX("Выберите пункт",$arr[0])
CASE(2)
$res = RADIOBOX("Выберите пункт",$arr[0],$arr[1])
CASE(3)
$res = RADIOBOX("Выберите пункт",$arr[0],$arr[1],$arr[2])
//...........
//...........
//...........

END_SWITCH


делается просто:
Code: (clickermann) [Select]
TFWRITE ("include.cms", "SWITCH(arrsize($arr))")
FOR($a=1,$a<126) // 125  элементов переключателя
   TFWRITE ("include.cms",STRCONCAT ("CASE(",$a,")") )
   $str=STRCONCAT("$res = RADIOBOX(",CHAR(34),"Выберите пункт",CHAR(34))
   FOR($b=0,$b<$a)
      $str = STRCONCAT ($str,",$arr[",$b,"]")
   END_CYC
TFWRITE ("include.cms",STRCONCAT ($str,")") )
END_CYC
TFWRITE ("include.cms", "END_SWITCH")
halt

на моем мониторе - 125 элементов для радиобокса это максимум. если больше, то окно залазит за пределы р.стола, и беда  :(.

include создан, можно проверить:

Code: (clickermann) [Select]
UNDEFINE($arr)
UNDEFINE($n)
$rnd = rnd(1,125)
FOR($a=0,$a<$rnd)   //рандомное количество элементов массива.
   inc($n)
   ARRPUSH($arr, STRCONCAT("opt-", $n))
END_CYC
print("Размер массива: ",arrsize($arr))

#include "include.cms"

print("Вы выбрали: ", $res)
wait(1)

Code: [Select]
20:03:41 Размер массива: 8
20:03:41 Вы выбрали: 8
20:03:59 Размер массива: 26
20:04:02 Вы выбрали: 26
20:04:03 Размер массива: 59
20:04:06 Вы выбрали: 59
20:04:07 Размер массива: 105
20:04:09 Вы выбрали: 105
20:04:10 Размер массива: 2
20:04:13 Вы выбрали: 2
20:04:14 Размер массива: 97
20:04:17 Вы выбрали: 97
20:04:18 Размер массива: 115
20:04:21 Вы выбрали: 115
20:04:22 Размер массива: 75


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Параметры radiobox
« Reply #6 on: April 09, 2018, 11:13:50 AM »
Непонятно одно - зачем увековечивать чужие ошибки в своих комментариях, теперь тему не почистить.
Почисть свои сообщения для старта. open_78 и dramster думаю поправят свои, по крайней мере надеюсь.