Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 3.00 Создание графического интерфейса и контролов: Dialog, Button, Static, Edit, Check, Combo. Считывание и запись в них данных.

Страниц (5): [1] 2 3 4 5 »
 

1. Kibor - 28 Октября, 2013 - 09:38:39 - перейти к сообщению
Данная версия Кибор обзавела скрипты и генерируемые EXE графическим интерфейсом и контролами, которые позволяют тесное двухстороннее взаимодействие пользователя со скриптом.
В частности появилось настраиваемое диалоговое окно и такие контролы:
Static - Статичный текст, однако специальными функциями его можно считать или изменить.
Edit - Поле для ввода текста или чисел. Можно считать и изменить.
Check - Кнопка с галочкой. Можно считать статус и изменить.
Combo - Выпадающее поле со списком. Можно считать текст активного пункта или изменить его на другой указав в соответствующей функции или текст нужного пункта или его индекс. 0 - верхний. Вниз увеличивается.

Dialog - Является самим диалоговым окном на котором эти контролы распологаются.
Button - Кнопка для запуска скрипта.
Dialog и Button допускаются в единственном экземпляре.

Остальные контролы допускается до 30 каждого. Классифицируются по индексу от 0 до 29 включительно: STATIC_0, CHECK_5, EDIT_26...

Создание интерфейса происходит в основном коде с помощью специального блока:

 Цитата:
CREATE_INTERFACE
{
DIALOG "Название окна" 237 180 //РазмерX РазмерY
BUTTONSCRIPT "Запустить" 125 121 100 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
STATIC_0 "Статичный текст" 10 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "Текст по умолчанию" 105 8 120 18 //ПозицияX ПозицияY РазмерX РазмерY
CHECK_0 0 /*Выключена*/ "Включить опцию" 10 130 105 18 //ПозицияX ПозицияY РазмерX РазмерY
COMBO_0 0 /*Начальный выбор*/ "Выбор строки 1" | "Выбор строки 2" | "Выбор строки 3" 10 40 212 200 //ПозицияX ПозицияY РазмерX РазмерY_выпадающий список
}


Сохранение настроек осуществляется в INITDIALOG

Этот блок не является исполняемым и может располагаться в любом месте скрипта. В нем не допускаются переменные. Только текст и числа. Потом взаимодействие с контролами осуществляется с помощью двух функций:
getcontrol - Считывает данные с конторола.
sendcontrol отправляет данные контролу.

getcontrol для Static, Edit, Combo возвращает string.
Для Static и Edit текст, для Combo текст активной строки в списке.
Для Check getcontrol возвращает 0 или 1 в зависимости от того стоит галка или нет.

Пример:
string активная_строка_списка = getcontrol(COMBO_0);
string текст_который _ввели_в_Edit = getcontrol(EDIT_6);
int число_в_Edit = formatsn(getcontrol(EDIT_25)); - Форматируем string в число
string текст_в_Static = getcontrol(STATIC_5);
int статус галки = getcontrol(CHECK_0); - 1 - есть, 0 - нету.
sendcontrol принимает string, int и double.

Пример:
sendcontrol(EDIT_0, "Пишем в текстовое поле текст");
sendcontrol(EDIT_12, 2013.56); Вводим в это же поле число 2013.56
sendcontrol(STATIC_0, "Пишем текст");
sendcontrol(STATIC_6, 56); Пишем в текст число
sendcontrol(CHECK_2, 0); Снимаем галку
sendcontrol(COMBO_2, 5); Установили активным шестой пункт меню в списке
sendcontrol(COMBO_2, "Пункт такой то"); Установили активным пункт в списке с таким текстом
sendcontrol(COMBO_2, "Пункт такой то", "Меняем название на это"); Меняет название пункта который имеет имя во втором параметре на имя третьего
sendcontrol(COMBO_2, 1, "Меняем название на это"); Меняет название пункта 1 (это второй будет с верху ) на имя третьего

Доступные команды находятся в меню на правой кнопке - Создание графического интерфейса.
Вставьте все команды по одной в блок и станет все понятно.

Функции getcontrol и sendcontrol в списке функций.

Блок графического интерфейса подсвечен светлым шрифтом и не исполняем во время работы скрипта. Служит только для создания контролов.


Вот код демонстрирующий чтение запись в контролы:

CODE:
if (formatsn(getcontrol(EDIT_0))==2013)//Если в поле EDIT 2013
{
sendcontrol(STATIC_0, 2013+5);//Отправим в статичный текст сумму 2013+5
sendcontrol(EDIT_0, "Посчитали");//Отправим в поле EDIT текст
}
else
{
if (getcontrol(COMBO_0)=="Выбор строки 3")//Если это второй запуск и в выпадающем меню уже строка 3
{
sendcontrol(COMBO_0, 1);//Установим выпадающее меню на вторую строку по ее ИНДЕКСУ (2 способ)
sendcontrol(CHECK_0, 0);//Снимаем галку
}
else
{
if (getcontrol(CHECK_0)==1)//Если галка "Включить опцию" есть
{
sendcontrol(EDIT_0, "Галка EDIT есть");//Отправим в поле EDIT текст
sendcontrol(COMBO_0, "Выбор строки 3");//Установим выпадающее меню на третью строку по ее ИМЕНИ (1 способ)
sendcontrol(STATIC_0, getcontrol(COMBO_0));//Отправим в поле EDIT текст
}
else
{
if (getcontrol(COMBO_0)=="Выбор строки 1")
{
sendcontrol(STATIC_0, "Галки EDIT нету");//Отправим в поле EDIT текст
sendcontrol(EDIT_0, getcontrol(COMBO_0));//Отправим в поле EDIT текст текщей строки в выпадающем меню
}
else
{
sendcontrol(STATIC_0, "2013+5 = ?");//Отправим в поле EDIT текст
sendcontrol(EDIT_0, 2013);//Отправим в поле EDIT число
}
}
}
}


CREATE_INTERFACE
{
DIALOG "Название окна" 237 180 //РазмерX РазмерY
BUTTONSCRIPT "Запустить" 125 121 100 25 //ПозицияX ПозицияY РазмерX РазмерY
//Добавление контролов управления ......
STATIC_0 "Статичный текст" 10 10 90 18 //ПозицияX ПозицияY РазмерX РазмерY
EDIT_0 "Текст по умолчанию" 105 8 120 18 //ПозицияX ПозицияY РазмерX РазмерY
CHECK_0 0 /*Выключена*/ "Включить опцию" 10 130 105 18 //ПозицияX ПозицияY РазмерX РазмерY
COMBO_0 0 /*Начальный выбор*/ "Выбор строки 1" | "Выбор строки 2" | "Выбор строки 3" 10 40 212 200 //ПозицияX ПозицияY РазмерX РазмерY_выпадающий список
}


Так же есть возможность создания немодальных диалоговых окон для интерактивного управления работой ботов. Немодальные диалоговые окна. Интерактивное управление программой через диалоги.
////////////////////////////////////////////////////////////////////////////////

Добавил возможность выбора создания авто запуска скрипта при запуске EXE. То есть сразу запускается графический интерфейс...
2. ArtChemist - 28 Октября, 2013 - 11:11:42 - перейти к сообщению
Красотища Улыбка большущее спасибо!
3. Stanislaw - 25 Декабря, 2013 - 04:25:25 - перейти к сообщению
Данная окно предоставляет возможность предустановки некоторых параметров скрипта в начале работы. Будет ли подобное с управлением во время работы скрипта? К примеру нажатие на кнопку запускает внеочередно одну из функций.
4. Kibor - 25 Декабря, 2013 - 06:52:18 - перейти к сообщению
Не знаю. Пока нет в этом необходимости. Возможно в дальнейшем будет, так же как и графические функции для реализации не только вывода текста на экран, но и изображений.
5. BioDread - 04 Января, 2014 - 20:47:53 - перейти к сообщению
Вывод информации и возможность управлять скриптом во время его работы с помощью такой вот панели была бы довольно приятна. Хотя запись статистики возможна и в файл, а взаимодействие со скриптом с помощью другого файла, с которого во время работы периодически считываются настройки. Значит действительно особой необходимости нету, но всё же удобнее форма чем текстовый файл)
6. Kibor - 05 Января, 2014 - 03:45:51 - перейти к сообщению
В данное время управление скриптом во время исполнения можно легко реализовать с помощью горячей клавиши. Вот пример как реализовывается такое управление. С помощью клавиш q, w, e можно во время исполнения выполнять одну из нужных функций fun1(), fun2(), fun3()

CODE:
textbkcolor (65535,0);
l:
if (management()=='q')fun1();
if (management()=='w')fun2();
if (management()=='e')fun3();
goto l;



function fun1()
{
textout(0, 50, 50, " q ", 0);
beep(500, 200);
}

function fun2()
{
textout(0, 50, 50, " w ", 0);
beep(1000, 200);
}

function fun3()
{
textout(0, 50, 50, " e ", 0);
beep(2000, 200);
}

function management()
{
if (getkeystate(81)==1)return 'q';
if (getkeystate(87)==1)return 'w';
if (getkeystate(69)==1)return 'e';
return '0';
}
7. Stanislaw - 05 Января, 2014 - 08:35:29 - перейти к сообщению
Спасибо за хороший пример.
function management() - в конце точка-запятая не нужна? В редакторе нет лингвистического анализа. Было бы быстрее находить подобные ошибки. Хотелось бы иметь справку в .chm формате под рукой с такими же подробными примерами.
8. Kibor - 05 Января, 2014 - 10:38:29 - перейти к сообщению
Не нужна. Это не конец инструкции. После нее идет тело функции в скобках. По поводу примеров смотрите эту и эту тему. Там описано как можно быстро находить примеры.
9. RussianRemaker - 01 Мая, 2014 - 21:08:18 - перейти к сообщению
А можно ли добавить функции sendcontrol параметр удаления элемента из списка?
Например:
CODE:
sendcontrol(COMBO_5, 5, -1);

Если последний параметр -1, то шестой элемент из списка удаляется.

И ещё, можно ли сделать так, чтобы при выборе элемента в первом списке, изменялись элементы второго списка сразу, а не после нажатия на кнопку?
Если это хлопотно, то можно и не делать, т.к. обновление списков легко реализуется при помощи галочки.
Если, галочка установлена, то нажатие кнопки срабатывает на обновление списков, если не установлена, то происходит дальнейшее выполнение скрипта.
Но, если бы сразу списки обновлялись, без лишних телодвижений, то было бы удобнее.
10. Kibor - 03 Мая, 2014 - 11:08:04 - перейти к сообщению
Удалить можно сделать. Изменять сразу по галке нет.

Powered by ExBB FM 1.0 Final