Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Немодальные диалоговые окна. Интерактивное управление программой через диалоги.
Kibor
Отправлено: 22 Апреля, 2015 - 11:58:47
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 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;
}
 
 Top
Yura
Отправлено: 16 Ноября, 2015 - 16:56:27
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2015  
Репутация: 0




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

А в общем спасибо за работу над Кибором! Надеюсь, будет дальше развиваться)
 
 Top
Almax1971
Отправлено: 12 Ноября, 2016 - 18:55:47
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 49
Дата рег-ции: Апр. 2016  
Репутация: 0




 Цитата:
STATIC - статичный текст до 30 в каждом диалоге

А потребовалось больше. Никак?
Кроме как обьединять отдельные поля в одно, ничего не придумал. Красота страдает.
 
 Top
Kibor
Отправлено: 12 Ноября, 2016 - 19:14:10
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




К сожалению нет.
Выход да. В одно поле как тут

Нажмите для увеличения
 
 Top
Almax1971
Отправлено: 19 Ноября, 2016 - 15:31:01
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 49
Дата рег-ции: Апр. 2016  
Репутация: 0




Стоят две галки, одна включена, другая выключена. Если запустить скрипт первый раз, то всё нормально. Если Кибор не закрывать и снова запустить скрипт, то галка "Включено" не отображается. Еще запустить - опять стоит. И так и меняется - есть, нету, есть, нету.
Если создать 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);//Убрать после теста
 
 Top
avramen
Отправлено: 15 Февраля, 2017 - 21:43:20
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2017  
Репутация: 0




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


Та же проблема, меняется положение галок. Каким образом можно исправить?
 
 Top
Flash
Отправлено: 07 Марта, 2017 - 15:07:46
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 57
Дата рег-ции: Нояб. 2015  
Откуда: Лангепас
Репутация: 0




собрал эти примеры чата, но сообщение не работают на Prog 1 вообще не оправляются ,а в Prog 2 пишет но сам себе , вообщем эти примеры на разных пк не работают, дело в порте ? если да то какой порт надо открыть.
 
 Top
007wan
Отправлено: 14 Марта, 2017 - 14:52:40
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




 Kibor пишет:
 Tishe пишет:

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





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

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


Здравствуйте, а как запрограммировать не модальное диалоговое окно с кнопкой запуска и с 2-мя списками и 2-мя полями(списки пока не трогаем), так что бы в одно поле надо вставить путь к файлу "скрипт1" а во второй путь к файлу "скрипт2"?
причем если вставить путь к файлу "скрипт1" ,а в "скрипт2" не вставлять, то он будет выполнять операцию для "скрипта2" и наоборот. и еще: как сделать что бы при нажатии кнопки открывал блокнот? а то не работает
 
 Top
idcco
Отправлено: 31 Марта, 2017 - 09:56:52
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2017  
Репутация: 5




У меня такие вопросы:
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 (Жмяк).
(Добавление)
Зафлудил свой вопрос ответами =(

(Отредактировано автором: 31 Марта, 2017 - 10:10:56)

 
 Top
Kibor
Отправлено: 31 Марта, 2017 - 20:06:58
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




idcco , в киборе нет такой функции..
можно заюзать какое то апи, или может пробовать получать указатель на окно и если он не 0, то оно есть..
 
 Top
Страниц (9): « 1 [2] 3 4 5 6 7 8 9 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by