Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 3.16 Блок кода выполняющийся до создания графической оболочки. INITDIALOG

Страниц (1): [1]
 

1. Kibor - 05 Февраля, 2014 - 01:41:19 - перейти к сообщению
Часто бывает необходимо выполнить код до вывода главного окна программы.
Пример - загрузка ранее введенных настроек контролов с файла и установка их в контролах.

Добавлен блок INITDIALOG
Находящийся в нем код выполняется первым до создания диалогового окна и контролов.
Он имеет доступ ко всем переменным и функциям в основном теле программы.

синтаксис

INITDIALOG
{
// Тут добавить код который будет выполняться до запуска графической оболочки...

}


Найти его можно в меню правой кнопки мышки - создание интерфейса - блок кода выполняющегося до интерфейса.

Важно
Переменные объявленные таким образом в основном коде
int a=5
не будут иметь те значения что им присвоили в момент объявления, так как код в INITDIALOG выполнится перед тем как а станет равно 5.
Поэтому если a надо использовать в INITDIALOG надо объявить его в основном коде, а присвоить 5 ему в INITDIALOG
Пример
 Цитата:
int a;
INITDIALOG
{
a=5;
messagebox(a);
}



Блок может располагаться в любом месте

Пример:
 Цитата:
messagebox ("а тут основной код.");

INITDIALOG
{
// Тут добавить код который будет выполняться до запуска графической оболочки...
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
sendcontrol(STATIC_0, "Текущее время");
sendcontrol(CHECK_0, 1); //Ставим галку
sendcontrol(EDIT_0, format(Hour)+":"+format(Minute)+":"+format(Second));
sendcontrol(COMBO_0, 0, "Теперь пункт такой"); //меняем название пункта в списке по номеру
sendcontrol(COMBO_0, "Выбор строки 2", "А этот по имени такой"); //меняем название пункта в списке по названию
messagebox ("Данные контролов изменены");
}






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_выпадающий список
}


Сохранение настроек CREATE_INTERFACE
CODE:
int N;

N=formatsn(getcontrol(EDIT_0));




if (fopen ("C:\config.txt", "w")!=0)
{//если открылся
fwrite(N); fwrite (ENDL);
fclose();//закрываем файл
}


messagebox (N);


INITDIALOG
{
if (fopen ("C:\config.txt", "r")!=0)//открываем файл для чтения "r"
{//если открылся
fread(N);

sendcontrol(EDIT_0, format(N));
fclose();//закрываем файл
}
}




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 "5" 105 8 120 18 //ПозицияX ПозицияY РазмерX РазмерY

}



Доработана функция sendcontrol для списков.
Теперь можно менять названия в списках.
 Цитата:
sendcontrol(COMBO_0, 0, "Теперь пункт такой"); //меняем название пункта в списке по номеру
sendcontrol(COMBO_0, "Выбор строки 2", "А этот по имени такой"); //меняем название пункта в списке по названию
2. 007wan - 07 Апреля, 2017 - 11:07:08 - перейти к сообщению
А как сделать, что бы время шло непрерывно, т.е шло в реальном времени и не стояло
3. petyanka - 19 Апреля, 2022 - 20:16:35 - перейти к сообщению
Для тех кто так же как и я будет искать, как сделать сохранение для интерфейса в визуальном редакторе, вот вам код. (Написал сам)
CODE:

if (fopen ("C:\config.txt", "r")!=0)
{
fread(text_edit0[0]);

fclose();
}
loop ()
{
//Ваш код


if (fopen ("C:\config.txt", "w")!=0)
{
fwrite(text_edit0[0]); fwrite (ENDL);
fclose();
sleep (10);
}
}
4. Zireael - 20 Апреля, 2022 - 03:13:07 - перейти к сообщению
Постоянно перезаписывать файл нет смысла. Нужно это делать при наступлении какого-то события, например, нажатии кнопки Сохранить настройки или изменении текста контрола.

Powered by ExBB FM 1.0 Final