You are here

Пример использования диалогов

Указанный ниже код на языке JavaScript показывает HTML-диалог при нажатии на кнопку "Create Dialog" в программе.

Для корректной работы необходимо, чтобы при событии onBeforeLoadSettings вызывалась функция OnBeforeLoadSettings(), а при событии onAfterSaveSettings вызывалась функция OnAfterSaveSettings().

// глобальная переменная, которая хранит в себе созданный диалог или null, если диалог не создан.
var g_dialog = null;
 
// функция будет вызвана при загрузке настроек (событие onBeforeLoadSettings)
function OnBeforeLoadSettings()
{
	// показываем пользователю кнопку.
	Window.ShowWindow("customButton1");
	// подписывам кнопку.
	Window.SetWindowText("customButton1", "Create Dialog");
	// назначаем функцию, которая будет вызвана при нажатии на кнопку.
	Window.SetCallback("customButton1_click", "OnCustom1Click");
}
 
// функция будет вызвана при нажатии на кнопку
function OnCustom1Click()
{
	// выключаем кнопку, чтобы пользователь не мог создать еще один диалог, пока не закрыт текущий.
	Window.DisableWindow("customButton1");
 
	// создаём диалог, он не будет показан пользователю до вызова ShowWindow();
	g_dialog = Window.CreateDialog();
 
	// назначаем функции-обработчики событий.
	// функция будет вызвана при окончательной загрузке HTML в диалоге.
	g_dialog.OnDocumentComplete = "OnDocumentComplete";
	// фукнция будет вызвана при закрытии диалога кнопкой [X] в заголовке.
	g_dialog.OnClose = "OnDialogClose";
	// функция будет вызвана при закрытии диалога кнопкой escape на клавиатуре.
	g_dialog.OnCancel = "OnDialogCancel";
	// функция будет вызвана при нажатии на enter на клавиатуре.
	g_dialog.OnOk = "OnDialogOk";
 
	// функция загружает файл dialog.html из текущей директории (рядом с checkparams.exe).
	g_dialog.WebBrowser.Navigate("file://" + GetCurrentDirectory() + "/dialog.html");
}
 
// вспомогательная функция, которая уничтожает диалог, если он создан и
// повторно включает кнопку создания нового диалога.
function Destroy()
{
	// если диалог не был создан, то выходим.
	if (!g_dialog)
		return;
 
	// уничтожаем диалог.
	Window.DestroyDialog(g_dialog);
	g_dialog = null;
 
	// включаем кнопку создания диалогов.
	Window.EnableWindow("customButton1");
}
 
// фукнция будет вызвана при закрытии диалога кнопкой [X] в заголовке.
function OnDialogClose(dlg)
{
	AddToLog("OnClose");
	Destroy();
}
 
// функция будет вызвана при закрытии диалога кнопкой escape на клавиатуре.
function OnDialogCancel(dlg)
{
	AddToLog("OnCancel");
	Destroy();
}
 
// функция будет вызвана при нажатии на enter на клавиатуре.
function OnDialogOk(dlg)
{
	AddToLog("OnOk");
	Destroy();
}
 
// функция будет вызвана при окончательной загрузке HTML в диалоге.
function OnDocumentComplete(dlg, doc, url)
{
	AddToLog("HTML Document loaded");
	// показываем диалог пользователю
	dlg.ShowWindow(5);
	// назначаем вызов функции OnHtmlButtonClicked при клике на кнопку внутри диалога.
	dlg.Document.all.butt.onclick = OnHtmlButtonClicked;
}
 
// функция будет вызвана при клике на кнопку "Call function" внутри диалога.
// показано взаимодействие диалога со скриптами в программе CheckParams.
function OnHtmlButtonClicked()
{
	AddToLog("HTML button clicked, value is: " + g_dialog.Document.all.inp.value);
}
 
// функция вызывается после сохранения настроек программой перед самым её закрытием.
// в функции закрывается диалог в том случае, если пользователь закрыл программу без
// закрытия самого диалога.
function OnAfterSaveSettings()
{
	AddToLog("Script: saving settings");
	Destroy();
}

Код файла dialog.html, который используется в примере выше:

<html>
	<head>
		<title>Hello World</title>
	</head>
	<body>
		<input id='inp' type='text' value='123' />
		<input id='butt' type='button' value='Call function' />
		<br />
		<textarea style='width: 100%;' id='txt' cols='60' rows='30'></textarea>
	</body>
</html>