Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 4.05 Немодальные диалоговые окна. Интерактивное управление программой через диалоги.

Страниц (9): « 1 [2] 3 4 5 6 7 8 9 »
 

11. Kibor - 22 Апреля, 2015 - 03:58:47 - перейти к сообщению
 Stanislaw пишет:
Изучал демонстрационный скрипт и в конце обнаружил

if (flag_combo[0]==0)text_button[1]="Остановить скрипт";//меняем текст кнопки
if (flag_combo[0]==1)text_button[1]="Закрыть программу";//меняем текст кнопки
}

разве не должно быть так

if (flag_combo[0]==0){text_button[1]="Остановить скрипт";}//меняем текст кнопки
if (flag_combo[0]==1){text_button[1]="Закрыть программу"; } //меняем текст кнопки
}

в обоих случаях работает Улыбка


если одна строка кода выполняется при if не надо скобки.
они просто обозначение блока нескольких строчек.
 Цитата:
if (a==5) messagebox ("a = 5");//одна . не надо


if (a==5)// больше одной. надо блок
{
messagebox ("a = 5");
a=25;
}
12. Yura - 16 Ноября, 2015 - 08:56:27 - перейти к сообщению
1) Было бы хорошо добавить в описание информацию о максимальной длине текста, который можно вводить в text_static1[0]=, text_button1[0]= и т.д. Сделал на главном окне бота кнопку, нажатие которой вызывает хелп. А в сам хелп сделал во втором диалоге и туда написал страницу текста в несколько текстовых полей. При запуске программа постоянно крашилась, пока опытным путем не разбил текст на мелкие отдельные куски.
2) При генерации кода все text_static0[0]= (и аналигочно для других типов полей) записываются через ";" в 1 строку. Когда в диалоге много длинных текстовых полей, получается километровая строка и это не хорошо и неудобно. Лучше бы в столбец записывало.
3) Большое пожелание- в редакторе диалогов очень было бы хорошо добавить визуальное отображение границ текстовых полей- часто получается что окна "наезжают" друг на друга и этого не видно, пока на них не нажать.
4) При правом клике на обьекты в редакторе диалогов и последующем выборе "Свойства"очень часто открываются свойства совсем другого обьекта, который при том может находится на другом конце диалогового окна.
Также были приколы с сохранением и потом открытием диалоговых окон в редакторе, а именно после открытие не отображались некоторые кнопки, галки и текст. При клике по местах, где они раньше были, Rибор аварийно закрывался.
В общем быстрее получилось писать код самому, чем ловить баги с редактором. И писать в текстовом редакторе, потому что временами Кибор вылетал и при написании кода.
5) Еще одно небольшое пожелание- в messagebox добавить настройку имени окна.
6) И последнее. Виндовс 7, антивирус Аваст. Когда экраны Аваста включены, Кибор у меня не открывается, но намертво зависает в процессах - ни диспетчером ни процессексплорером не убить. Пока в нем работаю приходится выключать антивирус.

А в общем спасибо за работу над Кибором! Надеюсь, будет дальше развиваться)
13. Almax1971 - 12 Ноября, 2016 - 10:55:47 - перейти к сообщению
 Цитата:
STATIC - статичный текст до 30 в каждом диалоге

А потребовалось больше. Никак?
Кроме как обьединять отдельные поля в одно, ничего не придумал. Красота страдает.
14. Kibor - 12 Ноября, 2016 - 11:14:10 - перейти к сообщению
К сожалению нет.
Выход да. В одно поле как тут

Нажмите для увеличения
15. Almax1971 - 19 Ноября, 2016 - 07:31:01 - перейти к сообщению
Стоят две галки, одна включена, другая выключена. Если запустить скрипт первый раз, то всё нормально. Если Кибор не закрывать и снова запустить скрипт, то галка "Включено" не отображается. Еще запустить - опять стоит. И так и меняется - есть, нету, есть, нету.
Если создать exe, то то же самое. Как поправить?

CODE:
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];

pos_size_check0[0][0]=20; pos_size_check0[0][1]=20; pos_size_check0[0][2]=100; pos_size_check0[0][3]=20;
pos_size_check0[1][0]=20; pos_size_check0[1][1]=40; pos_size_check0[1][2]=100; pos_size_check0[1][3]=20;
text_check0[0]="Включена"; text_check0[1]="Выключена";
flag_check0[0]=1; flag_check0[1]=0;

//////////

createdialog(0, CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0]);
//////////

showdialog(0, "Диалог", 515, 250, 250, 153, 1, 1);
//////////

loop() sleep(10);//Убрать после теста
16. avramen - 15 Февраля, 2017 - 13:43:20 - перейти к сообщению
 Almax1971 пишет:
Стоят две галки, одна включена, другая выключена. Если запустить скрипт первый раз, то всё нормально. Если Кибор не закрывать и снова запустить скрипт, то галка "Включено" не отображается. Еще запустить - опять стоит. И так и меняется - есть, нету, есть, нету.
Если создать exe, то то же самое. Как поправить?


Та же проблема, меняется положение галок. Каким образом можно исправить?
17. Flash - 07 Марта, 2017 - 07:07:46 - перейти к сообщению
собрал эти примеры чата, но сообщение не работают на Prog 1 вообще не оправляются ,а в Prog 2 пишет но сам себе , вообщем эти примеры на разных пк не работают, дело в порте ? если да то какой порт надо открыть.
18. 007wan - 14 Марта, 2017 - 07:52:40 - перейти к сообщению
 Kibor пишет:
 Tishe пишет:

Здравствуйте, а как запрограммировать не модальное диалоговое окно с кнопкой запуска и с 2-мя списками и 2-мя полями(списки пока не трогаем), так что бы в одно поле надо вставить путь к файлу "скрипт1" а во второй путь к файлу "скрипт2"?
причем если вставить путь к файлу "скрипт1" ,а в "скрипт2" не вставлять, то он будет выполнять операцию для "скрипта2" и наоборот.





(Добавление)
 Kibor пишет:
К сожалению нет.
Выход да. В одно поле как тут

Нажмите для увеличения


Здравствуйте, а как запрограммировать не модальное диалоговое окно с кнопкой запуска и с 2-мя списками и 2-мя полями(списки пока не трогаем), так что бы в одно поле надо вставить путь к файлу "скрипт1" а во второй путь к файлу "скрипт2"?
причем если вставить путь к файлу "скрипт1" ,а в "скрипт2" не вставлять, то он будет выполнять операцию для "скрипта2" и наоборот. и еще: как сделать что бы при нажатии кнопки открывал блокнот? а то не работает
19. idcco - 31 Марта, 2017 - 01:56:52 - перейти к сообщению
У меня такие вопросы:
1) Как сделать чтоб функции createdialog, showdialog, hidedialog, destroydialog что нибудь возвращали (для проверок)? Или они не возвращают ничего?
2) Как альтернативно узнать статус немодального окна (показано/скрыто/несуществует)?

Я просто столкнулся с тем, что мне нужно циклично переназначать id двух окон кроме главного (для как бы увеличения их количества) и иногда одно из них убирать из этого цикла, оставляя для переназначения последнее (третье).

Сумбурно написал, но если бы я знал статус каждого немодального диалогового окна (показано/скрыто/несуществует) это бы очень помогло решить многие задумки. Может уже есть какая-то функция или опция для этого? или был бы возврат от этих функций бы... Что-то типа, скажем, функции, к примеру, statusdialog:
CODE:
if (statusdialog(0) < 0) // если окно с id=0 не создано
createdialog(0, ... bla ... | ... bla ... | ... bla ...); // то создать

пока как временное решение делаю так:
CODE:
int status[3];
status[0] = -1;
// создаем окно 0 и присваиваем переменной status[0] то что оно создано
createdialog(0, ... bla ... | ... bla ... | ... bla ...);
status[0] = 0;

... // какой-то код

if (status[0] == 0) // если окно скрыто
{
showdialog(0, "Диалог", bla, bla, bla, bla, 0, 0); //то отобразить
status[0] = 1;
}

... // какой-то код

if (status[0] >= 0) // если окно существует
{
hidedialog(0); //то убить
status[0] = -1;
}

... // какой-то большой и запутанный код

if (status[0] < 1) // если окно убито или скрыто
{
createdialog(0, ... bla ... | ... bla ... | ... bla ...); //то создать/пересоздать
status[0] = 0;
}

Но это решение все равно не очень, так как если пользователь закроет или свернет немодальное окно из SystemMenu (нажмет на землю или крестик), то переменной значение передано не будет. То же касается и удаленного управления (из другой программы). Так что решение очень сомнительное. Вот если бы функции возвращали значения, это бы в данном примере проблему не полностью решило, но по крайней мере можно было бы уже пользоваться условиями типа:
CODE:
if (hidedialog(0) == status[0]) { ... }

Собственно вот. Ответьте плз...

Ну и вот еще что... После перетаскивания окна например в угол или на другой монитор, и его скрывания любым способом, место расположения скидывается, и при отображении его showdialog'ом оно появляется снова в центре экрана (основного монитора). Это, конечно, мелочь, но когда работаешь в нескольких мониторах, кажется существенным...
(Добавление)
 007wan пишет:
одно поле надо вставить путь к файлу "скрипт1" а во второй путь к файлу "скрипт2"?
причем если вставить путь к файлу "скрипт1" ,а в "скрипт2" не вставлять, то он будет выполнять операцию для "скрипта2" и наоборот.

Собственно так как Вы и написали. Добавьте BUTTON который будет обновлять информацию. При нажатии брать значение из CHECK, при ненахождении обращаться к второму скрипту. И наоборот. Смотрите примеры в постах выше (пример чата и пример с дочерним окном, и управления им из другого).

 007wan пишет:
как сделать что бы при нажатии кнопки открывал блокнот? а то не работает

Ну и это тоже в примерах есть. Распишу навскидку, чтоб Вы сами нашли ошибку. Заранее сори за опечатки:
CODE:
// подготавливаем диалоговое окно
int color, x, y;
int pos_size_button[1][4];
string text_button[1];
int flag_button[1];
pos_size_button[0][0]=10; pos_size_button[0][1]=20; pos_size_button[0][2]=110; pos_size_button[0][3]=40;
text_button[0]="Open notepad";
createdialog(0, BUTTON, #pos_size_button[0][0], #text_button[0], #flag_button[0]);
getdisplay (color, x, y);
showdialog(0, "Script to open a notepad", x/2-80, y/2-30, 160, 60, 1, 0);
enabletimer(0);

//зацикливаем скрипт
loop
{
sleep(20);
}

//отлавливаем события (нажатую кнопку)
//собственно тут основной код должен быть
CREATE_TIMER(0, 50)
{
if (flag_button[0]>0)
{
flag_button[0]=0;
start ("C:\Windows\System32\notepad.exe");
}
}

(Добавление)
 Flash пишет:
собрал эти примеры чата, но сообщение не работают на Prog 1 вообще не оправляются ,а в Prog 2 пишет но сам себе , вообщем эти примеры на разных пк не работают, дело в порте ? если да то какой порт надо открыть.

Данный пример показывает обмен сообщениями на одном компьютере.
То есть это пример обмена данных между двумя программами установленными на одной машине.
Он и не должен работать на разных компах.
Для работы на разных компах, смотрите writebuffernet и readbuffernet (Жмяк).
(Добавление)
Зафлудил свой вопрос ответами =(
20. Kibor - 31 Марта, 2017 - 12:06:58 - перейти к сообщению
idcco , в киборе нет такой функции..
можно заюзать какое то апи, или может пробовать получать указатель на окно и если он не 0, то оно есть..

Powered by ExBB FM 1.0 Final