<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Размеры окон, создаваемых скриптом]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Размеры окон, создаваемых скриптом форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 24 May 2026 03:51:54 +0300</pubDate>
		<item>
			<title>Размеры окон, создаваемых скриптом</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29897/topic3492/">Размеры окон, создаваемых скриптом</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Для подобных целей я добавил к окну &quot;кнопку сохранения&quot;. После подстройки окна скрипт по этой кнопке сохранит параметры окна в файл, откуда при необходимости возьмет их для восстановления окна. <br />
			<i>20.03.2018 10:10:06, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29897/topic3492/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29897/topic3492/</guid>
			<pubDate>Tue, 20 Mar 2018 10:10:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Размеры окон, создаваемых скриптом</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29873/topic3492/">Размеры окон, создаваемых скриптом</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Это не сообщение о какой-то ошибке или проблеме, наоборот, это сообщение, которое может помочь программирующим на qlua скрипты роботов.<br /><br />Допустим, что Ваш скрипт создаёт одно или несколько окон на своей вкладке. Если не прилагать усилий и просто создавать окна через <span class="bx-font" style="font-family:Courier New">CreateWindow</span>, эти окна получают некоторый размер и местоположение, определяемые автоматически. Не всегда это удобно. Можно после создания указать конкретное местоположение и размеры окна с помощью функции <span class="bx-font" style="font-family:Courier New">SetWindowPos(tableId, x, y, dx, dy)</span>. Однако, откуда взять значения x, y, dx, dy? Их можно подбирать методом последовательных приближений, но ведь это неудобно!<br /><br />Предлагается следующий подход. Сначала Вы располагаете графики, окна Вашего скрипта и прочие элементы так, чтобы было удобно. Потом запускаете предлагаемый ниже код. Он создаёт пустое окно, которое можно перемещать и изменять его размер с помощью мышки, накладывая это окно ровно поверх каждого окна Вашего скрипта. При этом в заголовке накладываемого окна динамически обновляются параметры x, y, dx, dy, которые нужно будет подставить в функцию <span class="bx-font" style="font-family:Courier New">SetWindowPos(tableId, x, y, dx, dy)</span> в Вашем скрипте. При этом подбор параметров можно осуществить <U>сразу</U>, а не методом последовательных приближений.<br /><br />Вот такой вот калибровщик положения и размеров окон получается.<br /><br />Если я изобрёл велосипед, а все нормальные программисты пользуются подобными штуками, отнесусь к этому с пониманием.<br />
====code====
<pre>--
-- Подгонка размеров окна.
--

local interrupted = false

function OnStop()
&nbsp;&nbsp;&nbsp;&nbsp;interrupted = true
end

function main()
&nbsp;&nbsp;&nbsp;&nbsp;local tId = AllocTable()
&nbsp;&nbsp;&nbsp;&nbsp;CreateWindow(tId)

&nbsp;&nbsp;&nbsp;&nbsp;local topPrev, leftPrev, bottomPrev, rightPrev = 0, 0, 0, 0
&nbsp;&nbsp;&nbsp;&nbsp;while not interrupted do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IsWindowClosed(tId) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local top, left, bottom, right = GetWindowRect(tId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if top == nil or left == nil or bottom == nil or right == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if topPrev ~= top or leftPrev ~= left or bottomPrev ~= bottom or rightPrev ~= right then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetWindowCaption(tId, "x=" .. tostring(left)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.. ",y=" .. tostring(top)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.. ",dx=" .. tostring(right - left)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.. ",dy=" .. tostring(bottom - top))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;topPrev = top
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leftPrev = left
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottomPrev = bottom
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rightPrev = right
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(50)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end</pre>
============= <br />
			<i>19.03.2018 12:09:51, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29873/topic3492/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29873/topic3492/</guid>
			<pubDate>Mon, 19 Mar 2018 12:09:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
