(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Диалоговые HTML-окна в программе на Delphi

Источник: delphiplus
Альберт Мамедов

Использование HTML диалоговых окон позволяет:

  • значительно расширить функциональность диалоговых окон программы;
  • получать и передавать информацию непосредственно из НТМL страниц расположенных в Интернете;
  • осуществлять предварительную обработку информации в диалоговом окне;
  • использовать богатые возможности скриптовых языков (JavaScript, VBScript).

Все элементы управления в таких окнах описываются HTML кодом. В библиотеке mshtml.dll. А для создания диалоговых HTML окон реализована специальная функция ShowHTMLDialog.

Богатые возможности Delphi позволяет минимальным кодом создавать такие окна.

Для использования определяем эту функцию:

function ShowHTMLDialog(hwndParent:HWND;
    pMk:     IMoniker;
    pvarArgIn:pVARIANT;
    pchOptions: PWCHAR;
    varArgOut:pVARIANT):hresult;
            stdcall; external 'mshtml.dll';

Аргументы функции:

  • hwndParent - дескриптор родительского окна;
  • pMk - указывае на интерфейс IMoniker, который идентифицирует HTML - код, выводимый в диалоговое окно;
  • pvarArgIn - содержит входные данные для диалогового окна, которые функция присваивает свойству dialogArguments;
  • pchOptions - набор параметров описывающих размеры и положение относительно рабочего стола;
  • varArgOut - содержит выходные данные диалогового окна возвращаемые через returnValue.

Для создания моникера подключаем модуль UrlMon и используем функцию CreateURLMoniker. Сам HTML-код, на который ссылается моникер, находиться в ресурсе или внешнем файле.

Вся обработка действий пользователя внутри диалогового окна производиться в сценариях на HTML.

Рассмотрим пример использования HTML диалогового окна.

  • для размещения HTML- кода в внешнем файле:
    var   s:hresult;
      outm:imoniker;
      url:pwidechar;
      InParam: Variant;
      OutParam: Variant;
      path:string;

    begin   path:= GetCurrentDir+'\HTMLDlg.htm';// определяем путь к файлу HTML диалогавого окна
      url:=StringToOleStr(path);
      s:=createurlmoniker(nil,url,outm); //создаём моникер
      TVarData(InParam).VType:=varOleStr;// определяем тип передаваемых данных
      TVarData(InParam).VOleStr:=StringToOleStr('Проба 1,Проба 2,Argument 2,Argument 3,Argument 4, Pleasant discussion 1');
    // присваиваем данные разделённые разделителем определённым в скрипте HTML-кода
      ShowHTMLDialog(Handle,outm,@InParam,'dialogWidth:25;dialogHeight:24;dialogTop:50;center:no;',@OutParam);
      InParam:=0;
    //обнуляем выходную переменную
      if VarType(OutParam)=varOleStr then
        MessageDlg('Выходные данные '+OutParam,mtInformation,[mbOK],0)   else
        MessageDlg('Данных нет',mtInformation,[mbOK],0);
    end

  • для размещения HTML-кода в ресурсе изменяем только
    url:=StringToOleStr('res://'+application.ExeName+'/RT_HTML/HTML_RESOURCE');
    и не забываем подключить ресурс {$R html.res}.

С Delphi кодом программы разобрались, рассмотрим JavaScript программу диалогового окна. Размещаем на HTML странице необходимые элементы управления.

<BODY onload="loadBody()" BGCOLOR="Teal" TEXT="White">
<SELECT NAME="ArgumentList"></SELECT><P>
<INPUT type=BUTTON value="OK" id="okButton" onClick="okButtonClick()" >
<INPUT type=BUTTON value="Cancel" id="cancelButton" class=button onClick="cancelButtonClick()" >
</BODY>

Определяем необходимые функции на JavaScript

<SCRIPT language="JavaScript">
function loadBody()
{ //
получаем значение передаваемого аргумента
var arrArgs = new Array();
arrArgs = window.dialogArguments.split(";");//
разделитель
//очищаем элемент управления Select
ArgumentList.options.length = 0;
/
/добавляем значение в элемент управления Select
var index;
index = 0;
while(index < arrArgs.length)
{
var tempOption = new Option(arrArgs[index]);
ArgumentList.options[ArgumentList.options.length] = tempOption;
index++;
}
//
устанавливаем отображение 1-го значения
ArgumentList.options[0].selected = true;
//устанавливаем default return value
window.returnValue = 0;
}

function okButtonClick()
{
/
/присваиваем возвращаемое значение
window.returnValue = ArgumentList.options[ArgumentList.selectedIndex].text;
/
/закрываем окно
window.close();
}

function cancelButtonClick()
{
window.returnValue = 0;
window.close();
}
</SCRIPT>

При открытии диалогового окна элемент Select заполняется переданным значением аргумента. При нажатии кнопки OK свойству window.returnValue присваивается значение выбранного положения Select и окно закрывается.

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 04.06.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
VCL Subscription
Microsoft 365 Apps for business (corporate)
ABBYY FineReader 14 Standard Full
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые материалы
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100