<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; QVCLua, элемент DataEdit и как его использовать]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=191</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=191&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «QVCLua, элемент DataEdit и как его использовать».]]></description>
		<lastBuildDate>Thu, 11 Feb 2016 13:11:42 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2007#p2007</link>
			<description><![CDATA[<div class="quotebox"><cite>GREEN_X5 пишет:</cite><blockquote><p>Странное поведение у этого календарика. В одном скрипте убирается при потере фокуса, в другом - нет. И никак не могу отловить причины и закономерности. Обшарил все доступные контролы элемента,</p></blockquote></div><p>Не тратьте время, свойства никакого нет. Календарик должен исчезать при выборе (дабл-кликом) или потере фокуса. Это видно из исходного кода календарика.<br />Если собрать просто exe из Lazarus с этим же календариком - всё работает как надо.<br />Видимо есть какой-то нюанс хитрый в dll&#039;ке библиотеки. Причем не в том, что код в ней неправильный (он правильный), а видимо в том, как она в принципе функционирует, почему-то не срабатывает толи потеря фокуса, толи еще что.</p><p>Удивительно, что клик правой кнопкой мыши в самом деле отлично работает (закрывает) календарь. Значит не всё безнадёжно <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 11 Feb 2016 13:11:42 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2007#p2007</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2006#p2006</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><div class="quotebox"><cite>kalikazandr пишет:</cite><blockquote><p>Убирается нажатием ПКМ</p></blockquote></div><p>Я, конечно, дико извиняюсь, но подскажите, пожалуйста, магазин, где продаётся такая кнопка?</p><p>Вообще-то, убираться должна при выборе или при любой потере фокуса DataEdit&#039;ом или формой, на котором календарь открыт. Если просто в Lazarus сделать приложение - то именно так и происходит.</p></blockquote></div><p>Странное поведение у этого календарика. В одном скрипте убирается при потере фокуса, в другом - нет. И никак не могу отловить причины и закономерности. Обшарил все доступные контролы элемента, не нашел отвечающий за исчезание окошка. Остались неизведанными <strong>Action</strong> и <strong>PopupMenu</strong>, но что и в каком виде на них можно передать чтобы окошко схлопнулось после например даблклик - никаких инструкций не нашел.<br />Календарик этот очевидно popup окошко, и никаких имен и органов управления не видно.<br />Да и кнопок Ok и Cancel нет, хотя на соотв. контролах по-умолч. true. Высвечивался бы OK - окошко бы схлапывалось при нажатии, такое управление стандартно вшито в умолчаниях Popup.<br />Очень похоже недоделанная библиотека в части этого элемента. Начали разработчики, да бросили как есть...</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Thu, 11 Feb 2016 12:41:21 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2006#p2006</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2005#p2005</link>
			<description><![CDATA[<div class="quotebox"><cite>masalexven пишет:</cite><blockquote><p>Добрый день!<br />Подскажите пожалуйста, как результат компонента DateEdit.Date превратить в нормальный posix формат os.time?</p></blockquote></div><p>Вот еще один вариант проще, пример формы взят у swerg:<br /></p><div class="codebox"><pre><code>#xzxz.lua
VCL=require &quot;qvcl&quot;
function Handler (sender)
  local SN = sender.Name
  if SN == &quot;DateEdit&quot; then
    local dt = {}
    dt.day, dt.month, dt.year = string.match(sender.Text,&quot;(%d*)\.(%d*)\.(%d*)&quot;) --sender.Text = &quot;11.02.2016&quot;
    message (os.date(&quot;%Y%m%d&quot;,os.time(dt)))--&gt;20160211
  end
end
mainForm = VCL.Form(&quot;mainForm&quot;,
    { position=&quot;podesktopcenter&quot;, height=150, width=400, Caption=&quot;DateEdit test&quot;,
      OnClose = function(sender) is_run=false mainForm:Release() end
    }
)

dateEdit = VCL.DateEdit(mainForm,
{ Name = &quot;DateEdit&quot;, Top=20, Left=30, Text=&quot;DD.MM.YYYY&quot;, DialogTitle = &quot;Выбрать дату&quot;, OnChange = Handler, AutoSelect=true, ShowHint=true, Hint=&quot;Календарь:\nЛевый дабл-клик = выбор даты.\nПравый клик = выход из календаря&quot;}
)

mainForm:Show()

is_run = true    
function main()
  while is_run do
    sleep(50)
  end
end

function OnStop()
 is_run = false
 mainForm:Release()
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Thu, 11 Feb 2016 07:54:12 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2005#p2005</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2004#p2004</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><div class="quotebox"><cite>kalikazandr пишет:</cite><blockquote><p>Убирается нажатием ПКМ</p></blockquote></div><p>Я, конечно, дико извиняюсь, но подскажите, пожалуйста, магазин, где продаётся такая кнопка?</p><p>Вообще-то, убираться должна при выборе или при любой потере фокуса DataEdit&#039;ом или формой, на котором календарь открыт. Если просто в Lazarus сделать приложение - то именно так и происходит.</p></blockquote></div><p>ПКМ = правая кнопка мыши ))</p>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Thu, 11 Feb 2016 07:43:46 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2004#p2004</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2003#p2003</link>
			<description><![CDATA[<div class="quotebox"><cite>kalikazandr пишет:</cite><blockquote><p>Убирается нажатием ПКМ</p></blockquote></div><p>Я, конечно, дико извиняюсь, но подскажите, пожалуйста, магазин, где продаётся такая кнопка?</p><p>Вообще-то, убираться должна при выборе или при любой потере фокуса DataEdit&#039;ом или формой, на котором календарь открыт. Если просто в Lazarus сделать приложение - то именно так и происходит.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 11 Feb 2016 07:17:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2003#p2003</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2002#p2002</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Тоже столкнулся с такой проблемой. И нет никакого свойства, закрываться должно само автоматически. Опять надо разбираться.</p></blockquote></div><p>Убирается нажатием ПКМ</p>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Thu, 11 Feb 2016 07:07:40 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2002#p2002</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2001#p2001</link>
			<description><![CDATA[<div class="quotebox"><cite>CyberTrader пишет:</cite><blockquote><p>2) При выборе даты почему-то не закрывается календарь. Более того, при перемещении окна календарь остаётся на месте, т.е. он, как бы, сам по себе. Какой параметр отвечает за это поведение?</p></blockquote></div><p>Тоже столкнулся с такой проблемой. И нет никакого свойства, закрываться должно само автоматически. Опять надо разбираться.</p><p><strong>masalexven</strong>, а у вас есть такая проблема при использовании DataEdit?</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 11 Feb 2016 06:30:23 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2001#p2001</guid>
		</item>
		<item>
			<title><![CDATA[QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1985#p1985</link>
			<description><![CDATA[<p>Есть в библиотеке VCLua удобный элемент для ввода даты: <strong>DataEdit</strong>.<br />Вводить дату можно как вручную, так и выбором из календаря:</p><p><span class="postimg"><img src="https://quik2dde.ru/static-img/191/dateedit-form.png" alt="https://quik2dde.ru/static-img/191/dateedit-form.png" /></span></p><br /><div class="spoilerbox" style="padding: 0px;"><div onclick="var e,d,c=this.parentNode,a=c.getElementsByTagName('div')[1],b=this.getElementsByTagName('span')[0];if(a.style.display!=''){while(c.parentNode&&(!d||!e||d==e)){e=d;d=(window.getComputedStyle?getComputedStyle(c, null):c.currentStyle)['backgroundColor'];if(d=='transparent'||d=='rgba(0, 0, 0, 0)')d=e;c=c.parentNode;}a.style.display='';a.style.backgroundColor=d;b.innerHTML='[-]';}else{a.style.display='none';b.innerHTML='[+]';}" style="cursor: pointer;"><span style="padding: 0 5px;">[+]</span>Тестовый код</div><div style="padding: 6px; margin: 0; display: none;"><div class="codebox"><pre><code>VCL=require &quot;qvcl&quot;

mainForm = VCL.Form(&quot;mainForm&quot;,
    { position=&quot;podesktopcenter&quot;, height=150, width=400, Caption=&quot;DateEdit test&quot;,
      OnClose = function(sender) is_run=false mainForm:Release() end
    }
)

dateEdit = VCL.DateEdit(mainForm,
    { Top=20, Left=30 }
)

mainForm:Show()

is_run = true    
function main()
  while is_run do
    sleep(50)
  end
end

function OnStop()
 is_run = false
 mainForm:Release()
end</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 11 Feb 2016 06:12:06 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1985#p1985</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2000#p2000</link>
			<description><![CDATA[<div class="quotebox"><cite>masalexven пишет:</cite><blockquote><p>Большое человеческое спасибо за формулу. Константа по часовому поясу у kalikazandr красивее вышла.</p><p>В общем обобщил.</p></blockquote></div><p>Нзч, красивее - не значит быстрее ))<br />Хотя тут время исполнения не критично - разово в начале кода.</p>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Wed, 03 Feb 2016 14:51:57 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2000#p2000</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1999#p1999</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Как любитель магических констант, поправил [url=https://quik2dde.ru/viewtopic.php?pid=1930#p1930]свой пост выше[/url], уточнив формулу для TIME_ZONE_SEC_SHIFT.</p><p><strong>kalikazandr</strong>, красиво! спасибо<br />Можно и так вычислять значение TIME_ZONE_SEC_SHIFT, чтобы без магических констант )</p></blockquote></div><p>Большое человеческое спасибо за формулу. Константа по часовому поясу у kalikazandr красивее вышла.</p><p>В общем обобщил.</p>]]></description>
			<author><![CDATA[null@example.com (masalexven)]]></author>
			<pubDate>Wed, 03 Feb 2016 13:38:50 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1999#p1999</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1998#p1998</link>
			<description><![CDATA[<div class="quotebox"><cite>kalikazandr пишет:</cite><blockquote><div class="quotebox"><cite>masalexven пишет:</cite><blockquote><p>Из-за чего это может быть?</p></blockquote></div><div class="codebox"><pre><code>-- Возвращает смещение часового пояса в секундах
function os.offset()
   local currenttime = os.time()
   local datetime = os.date(&quot;!*t&quot;,currenttime)
   datetime.isdst = true -- Флаг дневного времени суток
   return currenttime - os.time(datetime)
end</code></pre></div></blockquote></div><p>Красиво, большое человеческое спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (masalexven)]]></author>
			<pubDate>Wed, 03 Feb 2016 13:37:43 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1998#p1998</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1997#p1997</link>
			<description><![CDATA[<p>Как любитель магических констант, поправил [url=https://quik2dde.ru/viewtopic.php?pid=1930#p1930]свой пост выше[/url], уточнив формулу для TIME_ZONE_SEC_SHIFT.</p><p><strong>kalikazandr</strong>, красиво! спасибо<br />Можно и так вычислять значение TIME_ZONE_SEC_SHIFT, чтобы без магических констант )</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 03 Feb 2016 13:28:01 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1997#p1997</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1996#p1996</link>
			<description><![CDATA[<div class="quotebox"><cite>masalexven пишет:</cite><blockquote><p>Из-за чего это может быть?</p></blockquote></div><div class="codebox"><pre><code>-- Возвращает смещение часового пояса в секундах
function os.offset()
   local currenttime = os.time()
   local datetime = os.date(&quot;!*t&quot;,currenttime)
   datetime.isdst = true -- Флаг дневного времени суток
   return currenttime - os.time(datetime)
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Wed, 03 Feb 2016 13:15:21 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1996#p1996</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1995#p1995</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Блин, а чего-то я тупанул, всё ведь просто.</p><p>&nbsp; &nbsp;<strong>Время (дата) в POSIX</strong> = <strong>(DateEdit.Date - 25569) * 86400 - TIME_ZONE_SEC_SHIFT</strong>, </p><p>где:<br />&nbsp; &nbsp;<strong>25569</strong> - разница в днях между разными стартовыми датами<br />&nbsp; &nbsp;<strong>86400</strong> = 24*60*60 (количество секунд в сутках)<br />&nbsp; &nbsp;<strong>TIME_ZONE_SEC_SHIFT</strong> - сдвиг в секундах вашего часового пояса (по настройкам Windows)</p><p>Т.е.</p><div class="codebox"><pre><code>TIME_ZONE_SEC_SHIFT = os.time({year=1970,month=01,day=1})
message(os.date(&quot;%d.%m.%Y&quot;, (DateEdit.Date - 25569) * 86400 - TIME_ZONE_SEC_SHIFT )) -- покажет текущую дату</code></pre></div></blockquote></div><p>Спасибо большое за формулу. Единственно что, TIME_ZONE_SEC_SHIFT показывает 9 часов (в секундах), хотя у меня часовой пояс +3. В результате Ваш message показывает текущую дату со сдвигом в 6 часов (т е. в результате получаем предыдущую дату и время 18 часов). <br />Из-за чего это может быть?</p>]]></description>
			<author><![CDATA[null@example.com (masalexven)]]></author>
			<pubDate>Wed, 03 Feb 2016 10:46:41 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1995#p1995</guid>
		</item>
		<item>
			<title><![CDATA[Re: QVCLua, элемент DataEdit и как его использовать]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1994#p1994</link>
			<description><![CDATA[<p>Блин, а чего-то я тупанул, всё ведь просто.</p><p>&nbsp; &nbsp;<strong>Время (дата) в POSIX</strong> = <strong>(DateEdit.Date - 25569) * 86400 - TIME_ZONE_SEC_SHIFT</strong>, </p><p>где:<br />&nbsp; &nbsp;<strong>25569</strong> - разница в днях между разными стартовыми датами<br />&nbsp; &nbsp;<strong>86400</strong> = 24*60*60 (количество секунд в сутках)<br />&nbsp; &nbsp;<strong>TIME_ZONE_SEC_SHIFT</strong> - сдвиг в секундах вашего часового пояса (по настройкам Windows)</p><p>Т.е.</p><div class="codebox"><pre><code>TIME_ZONE_SEC_SHIFT = 43200 - os.time({year=1970,month=1,day=1})
dt = (DateEdit.Date - 25569) * 86400 - TIME_ZONE_SEC_SHIFT  -- дата из DateEdit.Date в POSIX-формате
message(os.date(&quot;%d.%m.%Y&quot;, dt)) -- покажет текущую дату</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 03 Feb 2016 09:16:57 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1994#p1994</guid>
		</item>
	</channel>
</rss>
