126

Re: Визуальный интерфейс VCLua в QUIK

Не подскажете как правильно обрабатывать переключатель?

Я не понял: вы мой пример посмотрели? внимательно?
Если он не решает ваши задачи - напишите толком что подразумевается под "обрабатывать переключатель".

где найти такое как у Вас развернутое описание свойств?

В справке по Delphi или Lazarus

127 (2014-08-28 10:37:34 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

Сорри, ступил, невнимательно посмотрел, спасибо!
Подскажите ещё пожалуйста. Form VCLua вроде нормально себя чувствует с GRID внутри и элементами управления (кнопки и т.д.). Видимость нормальная, если сперва создаю VCL GRID, затем VCL кнопки.

mainForm = VCL.Form("mainForm")
mainForm._= {caption = "Forn", borderStyle = "bsSingle", position="podesktopleft", width=300, height=300, OnClose = "OnFormClose" }  

grid = VCL.StringGrid(mainForm)
grid._ = { width=swidth-170, height=sheight-200, RowCount = 20, AutoEdit = False, FixedCols = 0, FixedRows = 1, Flat = True, OnMouseDown="OnGridMouseDown" }

ActivedButton = VCL.ToggleBox(mainForm,"Переключатель")
ActivedButton._={top=10,left=200, Width=120, Caption="Включить", OnChange="Toggle" }

Вы случайно не пробовали в форму с кнопками VCLua встроить таблицу (GRID) QLua? Там вроде синтаксис мне понятнее. Стоит копать в этом направлении?
Или - возможен в QLua запуск формы VCLua и таблицы (GRID) QLua в разных окнах? Если да - сможем корректно убивать оба окна методом OnClose формы VCLua?

128

Re: Визуальный интерфейс VCLua в QUIK

Не очень понятно чем вызван ваш вопрос.
Любое количество элементов управления, в том числе гриды, отлично располагаются на форме и взаимодействуют.

Здесь пример с двумя гридами:
[url]http://quik2dde.ru/viewtopic.php?id=34[/url]

Еще кто-то выкладывал здесь прям хорошего робота с интерфейсом, но не могу сыскать что-то

129 (2014-08-28 13:09:01 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

Ну вот в моем примере форма VCL со своим GRID, т.к. создается средствами VCLua

grid = VCL.StringGrid(mainForm)

QLua может создавать свою GRID. Вопрос - её можно встроить и удерживать в форме (окне) VCLua? Ведь тогда наполнять GRID я буду средствами QLua, без обращения к объекту mainForm VCLua.

130 (2014-08-28 15:34:06 отредактировано swerg)

Re: Визуальный интерфейс VCLua в QUIK

А, вы про визуальные таблицы в QLua - нет, их встроить в сторонние формы нельзя, QUIK сам управляет окнами с этими таблицами.
Не, теоретически это можно подменять parent'а окна в Windows, но до добра это не доводит, глюков и без этого хватает.
Я, признаться, не очень понимаю зачем может такое понадобиться: по-моему что тот грид, что этот - функционально эквивалентны, если в целом.

Или - возможен в QLua запуск формы VCLua и таблицы (GRID) QLua в разных окнах?

Конечно возможен, опять же не понятно в чем именно проблема?

Если да - сможем корректно убивать оба окна методом OnClose формы VCLua?

Как обычно. Закрывается форма VCLua - при этом закрывайте и таблицу QLua. Опять же не понятно от чего возник вопрос, в чем затруднения?

Вы зачем-то задаёте какие-то не понятные совершенно абстрактные вопросы, поэтому вас крайне сложно понять. Хотелось бы больше конкретики хотя бы в задавании собственно вопроса.

131

Re: Визуальный интерфейс VCLua в QUIK

Хоть убей не пойму как в RadioGroup добавить более одного элемента.

MyRadioGroup.Items="Первый"   -- Работает. Добавляет один RadioButton с соответствующей подписью.

А как еще радиобатонов  добавить?

132 (2014-09-01 15:39:20 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

swerg пишет:

Вы зачем-то задаёте какие-то не понятные совершенно абстрактные вопросы, поэтому вас крайне сложно понять. Хотелось бы больше конкретики хотя бы в задавании собственно вопроса.

Наверное пока у меня хромает терминология, но всё наладится. )
Вот вроде понятный вопрос:
В ходе работы меняю цвет формы

mainMenu.Color = RGB(200,240,200)

Как вернуть цвет в default, системный серый? Запросил код системного цвета формы до изменения, вернулось"536870912", можно его конечно так задавать, но если тема Windows сменится...

133

Re: Визуальный интерфейс VCLua в QUIK

gellerda пишет:

А как еще радиобатонов  добавить?

А вот похоже в самом деле там нет метода добавления нескольких элементов. Хотя на демо-скриншотах оно есть, но к нем нет кода...
Надо по-другому как-нибудь будет придумать, позже.

134

Re: Визуальный интерфейс VCLua в QUIK

GREEN_X5 пишет:

В ходе работы меняю цвет формы

mainMenu.Color = RGB(200,240,200)

Как вернуть цвет в default, системный серый? Запросил код системного цвета формы до изменения, вернулось"536870912", можно его конечно так задавать, но если тема Windows сменится...

По идее, это константа clBtnFace
Эти цветовые константы в VCLua добавлены, но лично я ни разу не сумел ими воспользоваться, до причин так и не докопался.
В Delphi эта константа определена как -2147483633 (именно отрицательное число).
Проверил, если это значение присваивать свойству Color - то цвет становится "дефолтный серый".

135 (2014-09-04 14:34:17 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

Помогите пожалуйста, если это возможно, прижать вторую кнопку в левую часть формы. Очень уж описание скудное, не вижу никакого leftAlign... (
[url]http://vclua.luaforge.net/vclua-0.3.2.html#MainMenu[/url]

mainMenu:LoadFromTable({
    {caption="Выход", onclick="OnClose"},
    {caption="Настройки", onclick="SHOWsettingForm"}
    })

И можно ли кнопке Button передать цвет (кнопки, не шрифта надписи)? Этого параметра тоже не вижу в описании.

136 (2014-09-04 21:56:40 отредактировано swerg)

Re: Визуальный интерфейс VCLua в QUIK

Про меню:

{caption="Настройки", RightJustify=true, onclick="SHOWsettingForm"}

GREEN_X5 пишет:

И можно ли кнопке Button передать цвет (кнопки, не шрифта надписи)? Этого параметра тоже не вижу в описании.

Как бы есть свойство Color, но у меня нифига не работает, даже непосредственно в Lazarus, не понимаю.

137 (2014-09-08 10:49:27 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

Задаю столбцы визуальной таблицы

grid:SetColParams({
    {Name="code",Title={Caption="code"}},
    {Name="strike",Title={Caption="strike"}},
    {Name="optionbase",Title={Caption="optionbase"}}
}}

В том же порядке задаю массив

temp = {["code"]=code,["strike"]=strike,["optionbase"]=optionbase}

Вывожу в визуальную таблицу

grid:LoadRowFromTable(1, temp)

Всё выводится, но не в свои столбцы, не в том порядке, как я задал массив.
Как правильно задавать таблицу или выводить? Имена элементов массива можно как-то ассоциировать с именами столбцов визуальной таблицы?
Спасибо.

138

Re: Визуальный интерфейс VCLua в QUIK

Вот скрипт готовый к запуску. Выводит массив в граф. таблицу и пишет его в файл. Порядок вывода туда и туда - одинаковый, но не тот, в котором я сформировал массив. По каким принципам Lua его так ресортирует? Как вывести элементы массива в свои столбцы? Очень хочется выводить одним разом, таблицу - в графическую таблицу, а не распихивать по одной ячейке!
HELP!

require "vcl"

mainForm = VCL.Form("mainForm")    mainForm._= {caption = "Метаморфозы",borderStyle = "bsSingle",width=350, height=100}

grid = VCL.StringGrid(mainForm)    grid._ = { width=340, height=80, RowCount = 5, RowCount = 2, FixedCols = 0, FixedRows = 1}

grid:SetColParams({
    {Name="codeo",Title={Caption="codeo"}},
    {Name="mat",Title={Caption="mat"}},
    {Name="strike",Title={Caption="strike"}},
    {Name="optionbase",Title={Caption="optionbase"}},
    {Name="posa",Title={Caption="posa"}}
})
mainForm:Show()

is_run = false

function OnInit(path)
    temp = {["codeo"]=1,["mat"]=2,["strike"]=4,["optionbase"]=5,["posa"]=6}
    grid:LoadRowFromTable(1, temp)
    file = io.open("C:\\1atest.txt", "a")
    for s,t in pairs(temp) do
        if s~=nil then
            file:write(tostring(s).."="..tostring(t).."\n")
            file:flush()
        end
    end
    file:close()
end

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

139

Re: Визуальный интерфейс VCLua в QUIK

Lua различает 2 типа таблиц: массивы, индексированные номером, и хэш-таблицы.
Обычный массив задаётся синтаксисом вида

local t = {1, 2, 3, "Вася"}

т.е. когда мы к элементам таблицы можем обращаться по номеру т.е. по индексу.
Lua старается по возможности всегда так хранить таблицы (как индексированные массивы), пока это возможно.

Если же в таблицу добавляются элементы вида "ключ-значение", причем ключ - не число, то таблица хранится уже с использование хэша для обеспечения максимально быстрого доступа к элементам по индексу.
Например, если таблицу задаем как

local t = {}
t.name = "Вася"
t.surname = "Петров"

В этом случае элементы сортируются по внутренним правилам хэша и последовательный обход элементов осуществляется с учетом этой сортировки. Причем сортировка - на основе значение хэш-функции, а это значит, что никакой связи со значением ключа - нет.

Что касается приведенного примера - то вполне вероятно, что внутри grid использует какой-то другой вариант для обхода элементов таблицы, что приводит к наблюдаемым различиям с порядком заполнения.

140 (2014-09-10 02:00:05 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

Спасибо за развернутый ответ! Я так и предполагал, но мне нужно вызывать значения элементов массива потом много раз, и это удобно по имени. Как я понял grid в ресортировке не виновата, т.к. элементы массива выводятся в grid и в файл в одинаковом порядке. Сортировка происходит ещё на этапе упаковки массива. Правила эти, как я понимаю, нам не известны...

По моему второму вопросу - нет ли в VClua параметра-идентификатора для столбцов grid для дальнейшего адресного вывода элементов массива в "одноименные" столбцы методом grid:LoadRowFromTable(Row,Tab), ну как это реализовано в Купайле?

И ещё вопрос - можно ли "послать" строчке grid "затухающий" цвет, т.е. посылаем красный, он медленно возвращается в defaultColor?

141 (2014-09-11 10:15:15 отредактировано doctord919)

Re: Визуальный интерфейс VCLua в QUIK

"Домашняя страничка проекта [url]http://vclua.99k.org/[/url]
Последняя выложенная версия значится VCLua v0.3.5."
Там уже 0.4.1 а при загрузке с соурсфоржа 0.5.0
Пытался их поставить пишет vcl не найден
Пытался 0.3.5 ставить окно показывает но элементов в окне нет при закрытии вылет
Тогда поставил вашу 0.3.5 все запустилось ...
Вопрос:
1) 0.5.0 мож сделаете ?
2) почему у вас обьем dll раза в 4 больше родной dll(это я про 0.3.5)

P.S. Запускал пример из 18 поста

142

Re: Визуальный интерфейс VCLua в QUIK

Удалось мне скомпилить исходники vclua-0.5 под lua5.1... более того работает под квиком ... но блин маленький нюанс вылез ...
пример с 18 ответа(цветной стакан) не заработал ... Проблема оказалась в StringGrid и функе SetColParams в оффиц. исх по vclua ее нету.
Уважаемый Admin присобачте SetColParams к vclua-0.5 (или на худой конец дайте пожалуйста diff вашей и 0.3.5 версии вроде ее Вы меняли)

143

Re: Визуальный интерфейс VCLua в QUIK

Постараюсь как-нибудь сделать новую версию.
Одно не понять: зачем она? что в ней для вас нового/полезного?
Эта любовь к новым версиям "лишь бы новое".... Не понять мне её )

144

Re: Визуальный интерфейс VCLua в QUIK

swerg пишет:

Постараюсь как-нибудь сделать новую версию.
Одно не понять: зачем она? что в ней для вас нового/полезного?
Эта любовь к новым версиям "лишь бы новое".... Не понять мне её )

Ну мож че новенькое добавилось smile или какие-нить ошибку убраны

145

Re: Визуальный интерфейс VCLua в QUIK

Это да, проще кого-нибудь напрячь что-нибудь делать, чем почитать список изменений самому, чтобы понять: добавилось что-то нужное мне или нет.
Вы сталкивались с ошибками в библиотеке? с какими?

146

Re: Визуальный интерфейс VCLua в QUIK

Я например ошибок пока не увидел, но в вашей сборке SetCellColor и GetScreenSize не работают, русский язык в некоторых случаях отправляется через ADD в VCL.Memo виде знаков вопроса. Перепаковка конечно назрела, готов этим позаниматься, нужно только понять с чего начать, где исходники и как компилировать.

147

Re: Визуальный интерфейс VCLua в QUIK

GREEN_X5 пишет:

русский язык в некоторых случаях отправляется через ADD в VCL.Memo виде знаков вопроса.

Буду признателен за пример кода, где воспроизводится указанная проблема.

148

Re: Визуальный интерфейс VCLua в QUIK

У меня текущей версии частенько происходит зависание квика при закрытии, разработчики говорят, что это где-то внутри VCL, и они ничего не могут сделать. Так что я новую версию жду.

149

Re: Визуальный интерфейс VCLua в QUIK

swerg пишет:
GREEN_X5 пишет:

русский язык в некоторых случаях отправляется через ADD в VCL.Memo виде знаков вопроса.

Буду признателен за пример кода, где воспроизводится указанная проблема.

Да что там фрагмент, вот полный код для запуска. Из уважения к Вашим трудам - всё для удобства. smile

require "vcl"

mainForm = VCL.Form("mainForm")    mainForm._= {caption = "Метаморфозы",borderStyle = "bsSingle",width=200, height=100}

logMemo = VCL.Memo(mainForm) logMemo._={top=0,left=10,Width=150,Height=90, ReadOnly=true} logMemo:SetText(nil)
mainForm:Show()

is_run = false

logMemo:Add("Старт!")

function OnInit(path)
    Log("Старт!")
    Log("Start!")
end

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

function Log (input)
    logMemo:Add(tostring(input))
    logMemo:Add(input)
end

Ну и как я говорил, добавленный вами SetCellColor у меня тоже не работает, так что пока преимущества вашей перепаковки для меня например неосязаемы... sad
Версия vcl.dll из вашего мне письма, размер файла 3252КБ

150 (2014-09-14 23:13:41 отредактировано GREEN_X5)

Re: Визуальный интерфейс VCLua в QUIK

doctord919 пишет:

Удалось мне скомпилить исходники vclua-0.5 под lua5.1... более того работает под квиком ... но блин маленький нюанс вылез ...
пример с 18 ответа(цветной стакан) не заработал ... Проблема оказалась в StringGrid и функе SetColParams в оффиц. исх по vclua ее нету.
Уважаемый Admin присобачте SetColParams к vclua-0.5 (или на худой конец дайте пожалуйста diff вашей и 0.3.5 версии вроде ее Вы меняли)

Не поделитесь скомпилированной версией?
seaking@mail.ru