176

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

swerg пишет:

kalikazandr,
А хотя бы у каких-либо элементов изменяются цвета? Ну там Label.
У меня тоже работает, но нет Win8, чтобы проверить, может есть неожиданный нюанс.

1. Свойство Color цветом выделяет шрифт на всех компонентах;
2. Заливка работает только на Button.
3. На PageControl не корректно работают  следующие компоненты:
- Label - Caption не заполняется данными из колбека, которые обрабатываются в колбеке;
- DateEdit - нет иконки-кнопки вызова календаря, при двойном щелчке ЛКМ в ячейку, он всетаки появляется, но отображение  Даты в компонент из колбека не происходит;
-ComboBox - = - DateEdit, не открывается выпадающий список, а при двойном щелчке ЛКМ в ячейку - появляется.

Остальное не проверял, эти же компоненты на форме работают нормально.
Печаль, нет компонента Color на PageControl, ядовито белый цвет вымораживает, с цветным текстом - еще хуже)).

177

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr пишет:

эти же компоненты на форме работают нормально.

Это я не понял, а "не на форме" - это как?
Хорошо бы маленький, но полный для запуска примерчик.

kalikazandr пишет:

Печаль, нет компонента Color на PageControl, ядовито белый цвет вымораживает, с цветным текстом - еще хуже)).

Попробую посмотреть.
Но это в Windows вопросы, как любят говорить квиковцы "меняйте цветовую схему Windows" )

178

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

new_user пишет:

BitBtn. Произвольные картинки.
У кого-нибудь получилось присвоить кнопке BitBtn собственную картинку(и)?

swerg пишет:

Честно говоря смотрел-смотрел, но пока не разобрался.
Но вот вопрос: а в каком виде вы себе представляете загрузку картинок? т.е. откуда картинки могут взяться?
Я вижу варианты:
- таскать с собой (рядом со скриптом) файлы картинок (bmp)
- в коде скрипта как-то "кодировать" ("бинарно") кортинки.
Первое не очень удобно, второе как-то громоздко быть может. Или есть другие варианты на ваш взгляд, которые я не углядываю?

Тоже вчера решил разобраться, но тщетно. Читаю описания на Делфи, вроде путь к файлу (или файлАМ) картинок нужно присвоить контролу Glyph. Считываю тип Glyph, получаю Tab. Пробую несколько вариантов (подготовив картинку)
Glyph =   "C:\\1.bmp"
Glyph = {"C:\\1.bmp"}
Glyph = {"C:\\1.bmp", "C:\\1.bmp", "C:\\1.bmp"}
Glyph = {"C:\\1.bmp", "C:\\1.bmp", "C:\\1.bmp","C:\\1.bmp"}
добавлял
NumGlyphs=1
картинки подкладывал 16*16 и 16*48 (три состояния на одной bmp-карте)
везде ругается.
Из доступных функций есть LoadFromStream() и GetGlyph(), но с ходу не понял как они должны работать в данном случае.

Кому интересно, можете продолжить эксперименты, я пас )

VCL = require "qvcl"

function OnStop()
 is_run = false
 mainForm:Release()
end

mainForm = VCL.Form("mainForm",{ position="podesktopcenter", Height=250, Width=250, Caption="test", OnClose = OnStop })
BitBtn = VCL.BitBtn(mainForm,{Caption="Run"})
w = BitBtn:GetGlyph()

message(type(w))
for i,v in pairs(w) do
message(tostring(i).." "..tostring(v))
end
--BitBtn:LoadFromStream("C:\\1.bmp")

mainForm:Show()
is_run = true

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

[url=http://rghost.ru/795MHmsHZ]bmp 48*16[/url]

179

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Вы не сказали главного: какой видится вариант (желаемый) загрузки картинок?
Или таскать рядом со скриптом файлы картинок - не напряжно?

180

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

swerg пишет:

Вы не сказали главного: какой видится вариант (желаемый) загрузки картинок?
Или таскать рядом со скриптом файлы картинок - не напряжно?

Ну это не мне нужно ), new_user вроде хочет эту кнопку с картинкой.
Думаю, совершенно не напряжно положить в папку Квика рисунок.

Мне гораздо интереснее было бы получить Color для ToggleBox. )

181

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Спасибо всем кто откликнулся!
Я пытался добавлять картинку через метод Image(<полное имя картинки>), но так оказалось нельзя. Затем через ImageList, как и для MainMenu - тоже не получилось.

У меня заработал самый простой способ)) Оказывается у BitBtn есть свойство Image, в котором и задается полный путь к картинке, причем у меня можно и png.

test_BitBtn = VCL.BitBtn(wmain,
{Caption="Тест", Top=5, Left=5, Height=25, Width=70, Image="C:\\Images\\test.png"})

182

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

new_user пишет:

У меня заработал самый простой способ)) Оказывается у BitBtn есть свойство Image, в котором и задается полный путь к картинке, причем у меня можно и png.

test_BitBtn = VCL.BitBtn(wmain,
{Caption="Тест", Top=5, Left=5, Height=25, Width=70, Image="C:\\Images\\test.png"})

Интересно, у меня так не срабатывает... У вас откуда версия библиотеки?

183

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Здесь я использую старую VCL 0.3.5, а не QVCL 0.5

184 (2016-09-29 11:33:34 отредактировано sam063rus)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

-

185

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Подскажите новичку, никак не могу разобраться ....  Высылаю код, а ниже задам вопросы.

local VCL=require "qvcl"

--================================== Параметры =========================================

ACCOUNT                 = "";          -- Торговый счет
CLIENT_CODE             = "";          -- Код клиента
SEC_CODE                = "";          -- Код бумаги
CLASS_CODE              = "";          -- Код класса

--======================================================================================

OnFormClose=function() message("Робот отключен пользователем") VCL=nil end

function untab(fun,tab)
    if type(tab)=="table" then
        for _,i in ipairs(tab) do    fun.Items:Add(i)    end
    end
end

--================================== Интерфейс системы =================================

mainForm = VCL.Form({Name = "mainForm", Height = 464, Width = 1030, Caption = "Робот",
Position = "", OnClose = OnFormClose})

Panel = VCL.Panel(mainForm, {Left = 5,    AutoSize=false,    Height = 10,    Top = 0, Width = 1018, Align = "alLeft", BevelOuter = "bvNone", ClientHeight = 400, ClientWidth = 1018,    TabOrder = 1,})
PageControl = VCL.PageControl(Panel,{Top = 10, Left = 10,    Height = 400,    Width = 1010,})

Page1 =    VCL.TabSheet(PageControl,{Caption = "Страница 1", ClientHeight = 400, ClientWidth = 1018,})
Page1_1 = VCL.TabSheet(PageControl,{Caption = "Подстраница 1", ClientHeight = 350, ClientWidth = 980,}) Page1_1.TabVisible=false
Page1_2 = VCL.TabSheet(PageControl,{Caption = "Подстраница 2", ClientHeight = 350, ClientWidth = 980,}) Page1_2.TabVisible=false
Page1_3 = VCL.TabSheet(PageControl,{Caption = "Подстраница 3", ClientHeight = 350, ClientWidth = 980,}) Page1_3.TabVisible=false

-- Элементы на странице 1

Bevel = VCL.Bevel(Page1, {Name = "Bevel_options", top=20, left=20, Width=460,    Height = 105, Style="bsLowered", Shape="bsFrame", ShowHint=true, Hint="Элемент Bevel"})
Label = VCL.Label(Page1, {Name = "Label_account", top=30, left=30, Caption="Торговый счет", ShowHint=true, Hint=" Элемент Label"})
ComboBox = VCL.ComboBox(Page1, {Name = "ComboBox_account", top=30, left=150, Width=100, Text="Выбрать...", OnChange = Handler, ShowHint=true, Hint=" Элемент ComboBox "})
    Table={"SPBFUT0000H","L01-00000F00"}   -- Выбор счета
    untab(ComboBox,Table)
Label = VCL.Label(Page1, {Name = "Label_client_code", top=30, left=280, Caption="Код клиента", ShowHint=true, Hint=" Элемент Label"})
ComboBox = VCL.ComboBox(Page1, {Name = "ComboBox_client_code", top=30, left=360, Width=100, Text="Выбрать...", OnChange = Handler, ShowHint=true, Hint=" Элемент ComboBox "})
    Table={"000xxx","000xxx"}   -- Выбор кода клиента
    untab(ComboBox,Table)
Label = VCL.Label(Page1, {Name = "Label_sec_code", top=60, left=30, Caption="Код бумаги", ShowHint=true, Hint=" Элемент Label"})
EditButton = VCL.EditButton(Page1, {Name = "EditButton_sec_code", top=60, left=150, Width=80, ShowHint=true, OnButtonClick = Handler, Hint="Элемент EditButton"})   -- Выбор кода бумаги
Label = VCL.Label(Page1, {Name = "Label_class_code", top=60, left=280, Caption="Код класса", ShowHint=true, Hint=" Элемент Label"})
ComboBox = VCL.ComboBox(Page1, {Name = "ComboBox_class_code", top=60, left=360, Width=100, Text="Выбрать...", OnChange = Handler, ShowHint=true, Hint=" Элемент ComboBox "})
    Table={"SPBFUT","SPBOPT","TQBR"}   -- Выбор кода класса
    untab(ComboBox,Table)
Label = VCL.Label(Page1, {Name = "Label_guarantee", top=90, left=30, Caption="ГО покупателя", ShowHint=true, Hint=" Элемент Label"})
Edit = VCL.Edit(Page1, {Name = "", top=90, left=150, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit"})   -- ГО покупателя
Label = VCL.Label(Page1, {Name = "Label_tick", top=90, left=280, Caption="Шаг цены", ShowHint=true, Hint=" Элемент Label"})
Edit = VCL.Edit(Page1, {Name = "", top=90, left=360, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit"})   -- Шаг цены

CheckGroup = VCL.CheckGroup(Page1, {Name = "CheckGroup", top=150, left=20, Width=910, Height=100, Columns=3, Caption="Подстраница основная", OnClick=Handler, ShowHint=true, Hint="Элемент CheckGroup"})
    Table={"Подстраница 1","Подстраница 2","Подстраница 3"}
    untab(CheckGroup,Table)


mainForm:Show()   -- Конец скрипта интерфейса


--=================================== Основной блок скрипта =================================

-- Флаг поддержания работы системы
is_run = true;

-- Функция первичной инициализации системы (Вызывается терминалом QUIK в самом начале)
function OnInit()
  mainForm:Show()
  is_run = true
end

function main()
  while VCL do
    sleep (1)
  end
  sleep(100)
end

function OnStop()
    mainForm:Release() is_run = false
end

--============================================================================================

Вопросы:
1. Как прописать код, чтобы выбранные данные из EditButton и ComboBox присвоились ACCOUNT, CLIENT_CODE, SEC_CODE, CLASS_CODE?
2. Как в окно Edit вывести (присвоить) ГО покупателя и шаг цены из таблиц QUIK?
3. Как при выборе кнопки "Подстраница 1" в CheckGroup дать команду на открытие подстраницы, т.е присвоить подстранице Page1_1 вместо Page1_1.TabVisible=false значение Page1_1.TabVisible=true

Заранее благодарен!

186 (2015-10-02 16:45:56 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

У вас не описана функция Handler, которая будет вызываться при добавлении пользователем текста в Edit или выборе значения комбобокса примерно так:

function Handler (sender)
   local name = sender.Name--получили имя поля (Edit или еще что)
   if name == "ComboBox_class_code" then
      CLASS_CODE = ComboBox_class_code.Text
   elseif name == "ComboBox_client_code" then --и т.д.

   end
end

Также имена переменных комбобоксов/label и т.д. не должны быть одинаковы (и поле Name должно быть заполнено, иначе не к чему обращаться)
пример:

ComboBox_client_code = VCL.ComboBox(Page1, {Name = "ComboBox_client_code", top=30, left=360, Width=100, Text="Выбрать...", OnChange = Handler, ShowHint=true, Hint=" Элемент ComboBox "})
--
ComboBox_class_code = VCL.ComboBox(Page1, {Name = "ComboBox_class_code", top=60, left=360, Width=100, Text="Выбрать...", OnChange = Handler, ShowHint=true, Hint=" Элемент ComboBox "})

187

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Спасибо kalikazandr!!! с EditButton и ComboBox все получилось! теперь осталось с CheckGroup открыть подстраницу! и еще дайте пожалуйста правильный код для CheckGroup и RadioGroup.

188

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

diksan пишет:

Спасибо kalikazandr!!! с EditButton и ComboBox все получилось! теперь осталось с CheckGroup открыть подстраницу! и еще дайте пожалуйста правильный код для CheckGroup и RadioGroup.

Не за что, к сожалению не в курсе, RadioGroup точно рабочий код в предложенном примере от GREEN_X5 в начале этой ветки. По индексу полученному в Handler от RadioGroup можно обратиться к своей таблице, которая отвечает за включение одного/нескольких управляющих блоков.

CheckGroup - в примере код не рабочий, разбираться - лень, точнее некогда. Попытайте кого-нибудь.

189

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Подскажите еще такой вопрос! Есть элемент Edit 

Edit_step = VCL.Edit(Page1, {Name = "", top=90, left=360, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit"})   -- Шаг цены инструмента

как ему присвоить значение например шаг цены 

SEC_PRICE_STEP = getParamEx(CLASS_CODE, SEC_CODE, "SEC_PRICE_STEP").param_value;   -- Шаг цены инструмента

чтобы значение отображалось в окне Edit или для этого нужно какой-то другой элемент взять?

190 (2015-10-04 18:22:02 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Edit_step = VCL.Edit(Page1, {Name = "Edit_step", top=90, left=360, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit", Text = getParamEx(CLASS_CODE, SEC_CODE, "SEC_PRICE_STEP").param_value})   -- Шаг цены инструмента

Так вроде, не проверял.
Если вам просто для визуализации - то StaticTextStep = VCL.StaticText() лучше подойдет

191

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Спасибо kalikazandr!!! Вы очень меня выручаете! У меня еще к вам вопрос: какой функцией (код) можно сохранять в файл настройки скрипта: параметры и переменные (ACCOUNT, CLIENT_CODE, SEC_CODE, CLASS_CODE и т.д), а потом иметь возможность загрузить их, например через кнопки ButtonSave и ButtonLoad

192

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

diksan пишет:

Спасибо kalikazandr!!! Вы очень меня выручаете! У меня еще к вам вопрос: какой функцией (код) можно сохранять в файл настройки скрипта: параметры и переменные (ACCOUNT, CLIENT_CODE, SEC_CODE, CLASS_CODE и т.д), а потом иметь возможность загрузить их, например через кнопки ButtonSave и ButtonLoad

Если в файле параметры будут сохранены в формате таблицы lua:

config =
{
    ACCOUNT = accaunt,
    CLIENT_CODE = client_code,--и т.д.
}

то чтение:

local file_name = --полный путь к файлу
local func, errorMsg = loadfile( file_name )
if func then
   func()
else
   message ( errorMsg )
end

На выходе получаем таблицу config.
Если уверены, что файл точно есть и никуда не денется, то просто: dofile ( file_name )
Для записи такой таблицы и чтения не сложно сделать функции и забиндить их на кнопки, если не получится, пишите.

193 (2015-10-05 03:15:06 отредактировано diksan)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Не совсем понял! Вот если посмотреть на мой первый код, там есть параметры:

local VCL=require "qvcl"

--================================== Параметры =========================================

ACCOUNT                 = "";          -- Торговый счет
CLIENT_CODE             = "";          -- Код клиента
SEC_CODE                = "";          -- Код бумаги
CLASS_CODE              = "";          -- Код класса

--======================================================================================

Я им уже с помощью EditButton и ComboBox присвоил значение, сделал настройки стопов и т.д. Все работает нормально, но когда закрываю скрипт, а потом открываю снова, все настройки надо вводить заново. Поэтому я и хотел сохранять настройки в отдельный файл по каждому инструменту, чтобы потом можно было их загрузить из файла, и не выбирать в ComboBox-ах заново! Как это правильно прописать? Для этого хочу использовать кнопки ButtonSave и ButtonLoad. Если выше написаный вами код правильный, то какой функцией их сохранять и потом загружать? нужен примерный код если можно. Заранее спасибо! или чтобы все писалось в log - файл, и при открытии скрипта все данные сохранялись в "окнах" (EditButton, ComboBox, Edit) скрипта...

194 (2015-10-05 10:18:23 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Перед созданием формы делаете проверку на наличие файла с настройками:

local file_name = getScriptPath().."\\config.cfg"
--
function directory_exists ( directory )
    return os.rename ( directory, directory )--пробуем переименовать файл, если файла нет, то вернет nil и текст ошибки
end
local st, err = directory_exists ( file_name )
if st then--нашли файл с настройками
   local func, err = loadfile ( file_name )
   if func then
      func ()
      ACCOUNT = config.ACCOUNT
      CLIENT_CODE = config.CLIENT_CODE
   else
      message ( err, 3 )--если файл config.cfg содержит какую-то не Lua шляпу
   end
else
   message ( err, 3 )--нет такого файла (не удалось переименовать)
end

Дальше перед созданием формы перед EditButton, ComboBox, Edit проверяете:

If ACCOUNT ~= "" then--если параметр существует - не нужен ComboBox или Edit
    StaticTextACC = VCL.StaticText( Name = "StaticTextACC",{.......,Text =  ACCOUNT})
else
    --делаем ComboBox или Edit для ввода параметра (как у вас сейчас)
end

Сохраняем настройки в файл при нажатии кнопки Save (mySave вызывается в Handler-е):

function mySave(table_name, file_name)
  os.remove ( file_name )--удаляем файл перед созданием нового
  local t = {ACCOUNT = ACCOUNT, CLIENT_CODE = CLIENT_CODE, SEC_CODE = SEC_CODE, CLASS_CODE = CLASS_CODE}
  local f, err = io.open (file_name, "w")
  if not f then
     return nil, err
  end
  local res = {}
  f:write ( table_name.." =\n{\n" )
  for k, v in pairs ( t ) do
    res[#res + 1] = "\t"..k.."="..v
  end
  f:write ( table.concat ( res, "," ) )
  f:write ("}"); f:flush (); f:close ()
  return true
end
--и вызов:
mySave ( "config", file_name )

Если необходимые для сохранения параметры сразу забивать в таблицу (например Setting) то ее можно сразу передать в mySave
Если хотите, что бы в одном файле хранились настройки по всем инструментам, то mySave надо допилить чутка

195

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr  Большое спасибо! буду теперь разбираться!

196

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

diksan пишет:

kalikazandr  Большое спасибо! буду теперь разбираться!

Не за что)

197 (2015-10-06 21:53:19 отредактировано diksan)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr такой вопрос! в окнах Edit при открытии скрипта появляются значения из Текущей таблицы параметров Quik, но они не обновляются. В чем причина?

198

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

diksan пишет:

kalikazandr такой вопрос! в окнах Edit при открытии скрипта появляются значения из Текущей таблицы параметров Quik, но они не обновляются. В чем причина?

Потому что вы туда один раз добавили эти параметры при создании формы, используйте Label:

Dialog = VCL.Label(myForm, { Name = "Dialog", caption="Вася",--при создании формы вводим текущее значение
        top=25, left=10, Height=65, Width = 250,
        Alignment = "taLeftJustify"})
--в колбеке OnParam() ловим изменения нужного параметра  и добавляем в Dialog
function OnParam( class, sec )
  if class =="TQBR" and sec == "SBER" then
    tbid = getParamEx(class,  sec, "bid")
    if Dialog.caption == "Вася" then
        Dialog.caption = tbid
    end
  end
end

199 (2015-10-07 14:27:17 отредактировано diksan)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr вы извините меня, но не получается чтобы значение спроса менялось в процессе работы скрипта. Можете на этом примере подсказать, чтобы я понял суть.

local VCL=require "qvcl"

--================================== Параметры =========================================

ACCOUNT                 = "";          -- Торговый счет
CLIENT_CODE             = "";          -- Код клиента
SEC_CODE                = "SiZ5";          -- Код бумаги
CLASS_CODE              = "SPBFUT";          -- Код класса

--======================================================================================

OnFormClose=function() message("Робот отключен пользователем") VCL=nil end

--================================== Интерфейс системы =================================

mainForm = VCL.Form({Name = "mainForm", Height = 464, Width = 1030, Caption = "Робот",
Position = "", OnClose = OnFormClose})

Label_biddeptht = VCL.Label(mainForm, {Name = "Label_biddeptht", top=10, left=10, Caption="Общий спрос", ShowHint=true, Hint=" Элемент Label"})
Edit_biddeptht = VCL.Edit(mainForm, {Name = "Edit_biddeptht", top=10, left=130, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit", Text = getParamEx(CLASS_CODE, SEC_CODE, "BIDDEPTHT").param_value})   -- Общий спрос


mainForm:Show()   -- Конец скрипта интерфейса


--=================================== Основной блок скрипта =================================

-- Флаг поддержания работы системы
is_run = true;

-- Функция первичной инициализации системы (Вызывается терминалом QUIK в самом начале)
function OnInit()
  mainForm:Show()
  is_run = true
end

function OnParam( class_code, sec_code )
if class_code == CLASS_CODE and sec_code == SEC_CODE then
   biddeptht = getParamEx (CLASS_CODE, SEC_CODE, "BIDDEPTHT").param_value;                  -- Суммарный спрос
if Edit_biddeptht.caption == "" then
        Edit_biddeptht.caption = biddeptht
    end
  end
end

function main()
  while VCL do
    sleep (1)
  end
  sleep(100)
end

function OnStop()
    mainForm:Release() is_run = false
end

--============================================================================================

200 (2015-10-07 16:14:24 отредактировано kalikazandr)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Суть в том, что у вас много ошибок в примере, а я, дятел, не посмотрел и начал его запускать, в итоге 2 дампа и перезапуск квика. Обратите внимание, как более правильно делать остановку скрипта с mainForm

--test_xzx.lua
local VCL=require "qvcl"
local stopped
function OnStop()
    if mainForm then mainForm:Release(); mainForm = nil; VCL = nil end
    message("Робот отключен пользователем")
    stopped = true
end
--================================== Параметры =========================================

ACCOUNT                 = "";          -- Торговый счет
CLIENT_CODE             = "";          -- Код клиента
SEC_CODE                = "SiZ5";          -- Код бумаги
CLASS_CODE              = "SPBFUT";          -- Код класса

--======================================================================================
--================================== Интерфейс системы =================================
local old_biddeptht = 0 + getParamEx(CLASS_CODE, SEC_CODE, "BIDDEPTHT").param_value
--
mainForm = VCL.Form({Name = "mainForm", Height = 464, Width = 1030, Caption = "Робот",
Position = "", OnClose = OnStop})--тут просто вызываем OnStop()

Label_biddeptht = VCL.Label(mainForm, {Name = "Label_biddeptht", top=10, left=10, Caption="Общий спрос:", ShowHint=true, Hint=" Элемент Label"})
Edit_biddeptht = VCL.Edit(mainForm, {Name = "Edit_biddeptht", top=10, left=130, Width=100, AutoSelect=true, ShowHint=true, Hint=" Элемент Edit", Text = old_biddeptht})   -- Общий спрос

mainForm:Show()
-- Конец скрипта интерфейса
--=================================== Основной блок скрипта =================================
function OnParam( class_code, sec_code )
   if class_code == CLASS_CODE and sec_code == SEC_CODE then
   local biddeptht = 0 + getParamEx (CLASS_CODE, SEC_CODE, "BIDDEPTHT").param_value-- Суммарный спрос
   if old_biddeptht ~= biddeptht then
      Edit_biddeptht.Text = biddeptht
      old_biddeptht = biddeptht
   end
  end
end
--
function main()
    while not stopped do
       sleep (1)
    end
    sleep(300)
end