<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; HTA: интерактивный ввод даты]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2552</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2552&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «HTA: интерактивный ввод даты».]]></description>
		<lastBuildDate>Sun, 07 Dec 2008 09:53:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[HTA: интерактивный ввод даты]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=16839#p16839</link>
			<description><![CDATA[<p>Одним из путей реализации интерактивного ввода даты является использование элемента управления Microsoft Calendar Control - &quot;Календарь&quot;(библиотека MSCAL.OCX).</p><p>1]В данном HTA примере происходит манипуляция с размерами &quot;Календаря&quot;. Щелкните по кнопке &quot;Ввод даты&quot; чтобы отобразить &quot;Календарь&quot; и установите дату. Повторный щелчок по этой же кнопке приведет к скрытию &quot;Календаря&quot;.</p><div class="codebox"><pre><code>&lt;!--Пример использования Microsoft Calendar Control--&gt;
&lt;META HTTP-EQUIV=Content-Type content=&#039;text/html;charset=windows-1251&#039;&gt;
&lt;HTML&gt;
&lt;TITLE&gt;Пример Microsoft Calendar Control&lt;/TITLE&gt;

&lt;HEAD&gt;
&lt;STYLE TYPE=&#039;text/css&#039;&gt;
    BODY        {background-color: #c0c0c0;}
    PRE        {border: 1px; border-style: solid; font-family: Lucida Console; font-size: 20px; background-color: #b5bcf2;}
    OBJECT        {border: 1px solid red; position: relative;}
&lt;/STYLE&gt;
    
&lt;HTA:APPLICATION
    ID=&quot;m4&quot;
    APPLICATIONNAME=&quot;MSCAL&quot;    
 /&gt;
&lt;/HEAD&gt;

&lt;BODY SCROLL=&quot;NO&quot;&gt;
&lt;INPUT TYPE=&#039;TEXT&#039; ID=&#039;dateInp&#039; style=&#039;width: 200; font-family: Verdana;font-weight: 700;&#039;&gt;
&lt;INPUT TYPE=&#039;BUTTON&#039; VALUE=&#039;Ввод даты&#039; ID=&#039;dateInv&#039;&gt;&lt;BR&gt;
&lt;OBJECT ID=&quot;CalendarObject&quot;&gt;&lt;/OBJECT&gt;&lt;BR&gt;
&lt;PRE&gt;
    Щелкните по кнопке &#039;Ввод даты&#039; 
    чтобы отобразить календарь и установите дату.

    Повторный щелчок по этой же кнопке приведет
    к скрытию календаря.
&lt;/PRE&gt;

&lt;SCRIPT&gt;
var IsVisible    =false
var dt        =new Date


//-------------------------------------------------------------------
with (CalendarObject)
{
//Установка свойств объекта Календарь
    classid=&quot;CLSID:8E27C92B-1264-101C-8A2F-040224009C02&quot;
    style.height=0
    style.width=0
    BackColor=16436877
    ShowDays=1
    today()
}
//-------------------------------------------------------------------
function CalendarObject_AfterUpdate_js()
{
//Реакция Календаря на изменения даты
//исходит из области VBScript где обрабатывается
//событие _AfterUpdate
    with (CalendarObject)
    {
        dt.setDate(Day)
        dt.setMonth(Month-1)
        dt.setYear(Year)
        dateVal=Day+&#039;.&#039;+Month+&#039;.&#039;+Year
    }
        dateInp.value=dateVal
}
//-------------------------------------------------------------------
function dateInv.onclick()
{
//Установка состояния Календаря,в зависимости от
//нажатия кнопки
    if (!IsVisible)
    {
        with (CalendarObject)
        {
            style.height=200
            style.width=200
            today()
        }
        IsVisible=true
    }
    else
    {
        with (CalendarObject)
        {
            style.height=0
            style.width=0
        }
        IsVisible=false
        alert(dt)
    }
}
&lt;/SCRIPT&gt;

&lt;SCRIPT Language=&quot;VBScript&quot;&gt;
    Sub CalendarObject_AfterUpdate()
        CalendarObject_AfterUpdate_js()
    End Sub

&lt;/SCRIPT&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div><p>***<br />2]В данном HTA примере &quot;Календарь&quot; отображается в окне модального диалога.</p><p>Потребуется создать HTA файл с произвольным именем и следующим содержимым:</p><div class="codebox"><pre><code>&lt;!--Пример использования Microsoft Calendar Control--&gt;
&lt;!--Основной HTA--&gt;
&lt;META HTTP-EQUIV=Content-Type content=&#039;text/html;charset=windows-1251&#039;&gt;
&lt;HTML&gt;
&lt;TITLE&gt;Пример Microsoft Calendar Control&lt;/TITLE&gt;

&lt;HEAD&gt;
&lt;STYLE TYPE=&#039;text/css&#039;&gt;
    BODY        {background-color: white;}
    PRE        {border: 1px; border-style: solid; font-family: Lucida Console; font-size: 14px; background-color: #b5bcf2;}
    INPUT        {border: 1px solid olive;}    
&lt;/STYLE&gt;
    
&lt;HTA:APPLICATION
    ID=&quot;m4&quot;
    APPLICATIONNAME=&quot;MSCAL&quot;    
 /&gt;
&lt;/HEAD&gt;

&lt;BODY SCROLL=&quot;NO&quot;&gt;
&lt;INPUT TYPE=&#039;TEXT&#039; ID=&#039;dateInp&#039; style=&#039;width: 200; font-family: Verdana;font-weight: 700;&#039;&gt;
&lt;INPUT TYPE=&#039;BUTTON&#039; VALUE=&#039;Ввод даты&#039; ID=&#039;dateInv&#039;&gt;&lt;BR&gt;
&lt;PRE&gt;
    Щелкните по кнопке &#039;Ввод даты&#039; 
    чтобы отобразить календарь и установите дату.
&lt;/PRE&gt;

&lt;SCRIPT&gt;
dt=new Date
//-------------------------------------------------------------------
dateInp.readOnly=true
dateInp.value=dt.getDate()+&#039;.&#039;+eval(dt.getMonth()+1)+&#039;.&#039;+dt.getYear()
//-------------------------------------------------------------------
function dateInv.onclick()
{
//Вызов модального диалога Календаря
    ret=window.showModalDialog(&#039;mscal.htm&#039;,&#039;&#039;)
    if (ret){dateInp.value=ret}
    
}
//-------------------------------------------------------------------
&lt;/SCRIPT&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div><p>Далее, создать файл со строго заданным именем <strong>mscal.htm</strong> и разместить его в одном каталоге вместе с предыдущим HTA файлом. Содержимое:</p><div class="codebox"><pre><code>&lt;!--Пример использования Microsoft Calendar Control--&gt;
&lt;!--Файл модального диалога mscal.htm--&gt;
&lt;META HTTP-EQUIV=Content-Type content=&#039;text/html;charset=windows-1251&#039;&gt;
&lt;HTML&gt;
&lt;TITLE&gt;Microsoft Calendar Control&lt;/TITLE&gt;
&lt;HEAD&gt;
&lt;STYLE TYPE=&#039;text/css&#039;&gt;
    OBJECT        {border: 1px solid red; position: relative;}
    INPUT        {border: 1px solid blue; width: 90}    
&lt;/STYLE&gt;
&lt;/HEAD&gt;

&lt;BODY SCROLL=&quot;NO&quot;&gt;
    &lt;OBJECT ID=&quot;CalendarObject&quot;&gt;&lt;/OBJECT&gt;&lt;BR&gt;
    &amp;nbsp&lt;BR&gt;
    &amp;nbsp&lt;INPUT TYPE=&#039;BUTTON&#039; VALUE=&#039;Ok&#039; ID=&#039;dateOk&#039;&gt;
    &amp;nbsp&lt;INPUT TYPE=&#039;BUTTON&#039; VALUE=&#039;Cancel&#039; ID=&#039;dateCancel&#039;&gt;

&lt;SCRIPT&gt;
dialogHeight    =320/16
dialogWidth    =320/16
//-------------------------------------------------------------------
with (CalendarObject)
{
//Установка свойств объекта Календарь
    classid=&quot;CLSID:8E27C92B-1264-101C-8A2F-040224009C02&quot;
    style.height    =220
    style.width    =300
    BackColor    =16436877
    ShowDays    =1
    today()
}
//-------------------------------------------------------------------
function CalendarObject_AfterUpdate_js()
{
//Только для совместимости с VBScript
return
}
//-------------------------------------------------------------------
function dateOk.onclick()
{
//Кнопка Ok
    with (CalendarObject)
    {
        dateVal=Day+&#039;.&#039;+Month+&#039;.&#039;+Year
    }
        returnValue=dateVal
    if (!CalendarObject.Day){returnValue=&#039;&#039;}
    close()
}
//-------------------------------------------------------------------
function dateCancel.onclick()
{
//Кнопка Отмена
    returnValue=&#039;&#039;
    close()
}
//-------------------------------------------------------------------
&lt;/SCRIPT&gt;

&lt;SCRIPT Language=&quot;VBScript&quot;&gt;
&#039; Обработчик события AfterUpdate.Необходим,т.к 
&#039; Календарь оптимизирован под VBScript
    Sub CalendarObject_AfterUpdate()
        CalendarObject_AfterUpdate_js()
    End Sub
&lt;/SCRIPT&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div><p>После запуска HTA, щелкните по кнопке &quot;Ввод даты&quot; чтобы отобразить модальный диалог содержащий &quot;Календарь&quot; и установите дату.Закройте диалог - установленная дата отобразится в INPUT-поле основного документа.</p>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Sun, 07 Dec 2008 09:53:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=16839#p16839</guid>
		</item>
	</channel>
</rss>
