Часто бывает необходимо выполнить код до вывода главного окна программы.
Пример - загрузка ранее введенных настроек контролов с файла и установка их в контролах.
Добавлен блок 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", "А этот по имени такой"); //меняем название пункта в списке по названию |