Re: Визуальный интерфейс VCLua в QUIK
А где можно почитать про такие функции как getQuoteLevel2()?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
QUIK -> DDE → Lua: визуальные библиотеки → Визуальный интерфейс VCLua в QUIK
А где можно почитать про такие функции как getQuoteLevel2()?
В составе QUIK есть файл Qlua.chm
Это справка по QLua, в ней описаны все доступные в QLua функции.
Проблему с редактированием ячеек в таблице решил кое как. Осталось решить как сделать в таблице Drag and Drop по ячейкам? Может кто подскажет?
Наконец-то я реализовал Drag and Drop. Долго доходило
Еще вопрос . Как мне получить строку или ячейку по данной в ячейке? Т.е. есть в ячейке какие-нибудь данные, я их нахожу и хочу узнать в какой строке (или ячейке) они находятся
Форум что-то затухать начал, неужели все со всем разобрались? Или луа не так интересна?
Подниму вопрос, заданный ранее:
"Unknown error. Possible external module error" - Как с этим бороться? От чего это происходит?
Форма обрабатывается так, если без ненужных подробностей
mainForm = VCL.Form("mainForm") -- создается форма, на ней всякие элементы управления
mainForm.onclosequery = "onCloseQueryEventHandler"
function onCloseQueryEventHandler(Sender)
OnStop()
end
function OnStop()
CloseAllPositions()
mainForm:Free()
init = false
is_run = false
end
Здравствуйте! Поясните пожалуйста, если не затруднит,
label = VCL.Label(mainForm,"Label1")
label._ = { Top=135, Left=10 }
куда присваивается табличка { Top=135, Left=10 }, что значит ._
Спасибо!
Константин М.,
в данном случае запись
label._ = { Top=135, Left=10 }
эквивалентна
label.Top=135
label.Left=10
а вот что это в смысле смысла по Lua'шному - я как-то даже не знаю, надо найти будет.
Спасибо.
jestpounder, по вашему вопросу
У вас взрывается терминал при закрытии созданной формы "крестиком" закрытия окна, верно?
Я где-то писал рекомендации, но, к сожалению, порастерялось всё за множественностью постов.
1) Не используйте Free для закрытия формы. Фактически его более-менее безопасно можно использовать только внутри обработчика OnStop(). Вы же фактически вызываете его при закрытии крестиком формы vcl из обработчика события onclosequery.
Вместо Free всегда используйте специально добавленный в мою сборку vcl.dll метод Release. Его можно безопасно вызывать откуда угодно для закрытия и уничтожения формы.
2) Вы используете обработчик для события onclosequery. Дело в том, что это специфический обработчик, вообще-то он служит не для уведомления о том, что "форма закрывается", а для запроса "форму хотят закрыть; закрываем?" и вообще-то имеет 2 параметра.
Но т.к. вы по "крестику" безусловно закрываете форму и просто хотите в этом случае остановить скрипт, то правильнее будет воспользоваться обработчиком .OnClose
Итого, минимальный скрипт выглядит так, как показано ниже, причем этот скрипт не приводит к падению терминала ни при остановке через диалог скриптов, ни при закрытии формы "крестиком":
require "vcl"
mainForm = VCL.Form("mainForm") -- создается форма, на ней всякие элементы управления
mainForm.OnClose = "onCloseEventHandler"
is_run = true
mainForm:Show()
function onCloseEventHandler(Sender, CloseAction)
OnStop()
end
function OnStop()
mainForm:Release()
is_run = false
end
function main()
while is_run do
sleep(50)
end
end
Здравствуйте! Подскажите пожалуйста как нарисовать линию и прямоугольник если кто знает. И как обращаться к полям таблицы:
grid = VCL.StringGrid(mainForm,"grid")
grid._ = { align = "alClient", RowCount = 5, AutoEdit = False, FixedCols = 0, FixedRows = 2, Flat = True }
grid:SetColParams({
{Width=100, Alignment="taRightJustify", Color=0xFF0000, Title={Color=0x998800, Caption="Col1", Alignment="taCenter"}},
{Width=100, Alignment="taRightJustify", Color=0x00FF00, Title={Color=0x009988, Caption="Col2", Alignment="taCenter"}},
{Width=100, Alignment="taRightJustify", Color=0x0000FF, Title={Color=0x990088, Caption="Col3", Alignment="taCenter"}},
})
мне необходимо туда вписывать значения. То есть, к примеру, делать активным ячейку таблицы двойным кликом на мышке левой кнопкой, вводить данные, кликать в любом другом месте любой кнопкой мышки и значение чтобы сохранялось в поле где вводил и переменная которая соответствовала этой ячейке чтобы тоже присваивала новое значение то что я ввел. Вообще по VClua есть руководство на русском?
еще хотел бы посмотреть пример с кнопкой любой простенький
Почему не запускается больше 2х скриптов, использующих "vcl"?
еще хотел бы посмотреть пример с кнопкой любой простенький
Пример можете посмотреть вот в этой теме
http://quik2dde.ru/viewtopic.php?id=39
И еще прям в этой же теме, которую вы сейчас смотрите, на второй странице есть простой пример с кнопкой, полем ввода и т.д. Прям вот совсем простой пример
http://quik2dde.ru/viewtopic.php?pid=346#p346
Там и поля ввода, и кнопочки. Что-то конкретное будет не понятно - спрашивайте.
Подскажите пожалуйста как нарисовать линию и прямоугольник если кто знает.
Добавил пример вывода графических элементов
http://quik2dde.ru/viewtopic.php?id=73
Вообще по VClua есть руководство на русском?
Нет. Что-то не понятно - спрашивайте, не стесняйтесь.
Подскажите, пожалуйста, есть ли стандартные решения по созданию окна (mainform) внутри окна quik, т.е. чтобы оно было дочерним по отношению к классу MDIClient? Другими словами - возможно ли сделать "стакан", который будет находиться внутри квика?
В принципе, сделать окно дочерним в Windows - возможно.
Но я не уверен, что в случае с QUIK да еще MDI-child окном удастся сделать это гладко.
В любом случае с ходу короткого решения у меня нет.
Думаю самой непреодолимой проблемой будут реализованные в QUIK вкладки для окон, что явно реализовано каким-то нестандартным механизмом для MDI-child. Т.е. встроенное окно будет видно всегда, не зависимо от выбранной вкладки.
Единственный более-менее реальный вариант видится в создании в QUIK любого окна (абсолютно любого) и встраивание в него созданной в VCLua формы. Здесь проблем с MDI возникнуть не должно.
А может проще сделать стакан на основе создаваемых из Lua таблиц? это видится существенно боле простым и надежным решением, тем более, что таблицы отлично подходят под структуру стакана.
Благодарю за оказанное внимание. На счёт механизма вкладок квика, то это да, верно подмечено - VCLua форма будет на всех вкладках.
Попытаюсь слегка углубиться в суть вопроса предыдущего моего поста. Хотелось бы не просто стакан, а стакан с элементами задания различных параметров роботу. Недостаток Lua стакана - это то, что он таблица, и не просто таблица, а таблица для просмотра (readonly). Можно конечно обрабатывать нажатия клавиш и менять содержимое ячеек, но это как то не по-человечески. Во-вторых, эта досадная первая колонка с номерами строк таблицы. В-третьих, невозможность менять шрифт и т.д.
Вот вы пишите про вариант создания в QUIK окна и встраивание в него созданной в VCLua формы. Так вот, было бы супер, если бы VCL позволил использовать некоторые winapi функции, а именно:
FindWindowEx, GetParent, SetParent, GetClassName, SendMessage. Появление свойства Hwnd у объектов тоже неплохая идея как мне кажется.
Таким образом, если вруг появляется необходимость в встраивании VCL формы непосредственно в quik, то у lua разработчика будет возможность это сделать используя вышеуказанные функции, не прибегая к дополнительному софту, субклассированию, хукам и т.д.
И вам спасибо за интерес, проявленный к этому форуму и моим постам.
Хотелось бы не просто стакан, а стакан с элементами задания различных параметров роботу. Недостаток Lua стакана - это то, что он таблица, и не просто таблица, а таблица для просмотра (readonly). Можно конечно обрабатывать нажатия клавиш и менять содержимое ячеек, но это как то не по-человечески. Во-вторых, эта досадная первая колонка с номерами строк таблицы. В-третьих, невозможность менять шрифт и т.д.
Т.е. речь про некое удобное (я бы даже сказал - готовое) окно редактирования, например, переменных, верно? или значений в таблице Lua.
Думал про это давно, всё руки не доходят. Есть интерес - пишите, буду стараться.
Появление свойства Hwnd у объектов тоже неплохая идея как мне кажется.
Hwnd либо есть, либо его очень легко достать наружу, если кому-то надо. Но надо ли? я не уверен, признаться, см. ниже подробнее.
Так вот, было бы супер, если бы VCL позволил использовать некоторые winapi функции, а именно: FindWindowEx, GetParent, SetParent, GetClassName, SendMessage.
На мой взгляд (на мой взгляд) было бы лучше сформулировать конкретную решаемую задачу и ее уже реализовать целиком готовую и удобную к простому использованию. По-моему, в рамках QUIK и Lua это правильнее путь, нежели предоставлять базовый интерфейс, на котором каждый будет городить свой велосипедо-огород.
Напишите, какие задачи этими функциями вы бы хотели решить? каким окнам и какие сообщения посылать?
Таким образом, если вруг появляется необходимость в встраивании VCL формы непосредственно в quik, то у lua разработчика будет возможность это сделать используя вышеуказанные функции, не прибегая к дополнительному софту, субклассированию, хукам и т.д.
Добрый вечер! Если вы не против, то я поясню ещё раз зачем хотелось этих функции. - Чтобы не теребить вас, например, возжеланиями создания VCL окошка непосредственно в терминале квика, ибо мы выяснили, что эту затею врят ли возможно реализовать красиво, работоспособно, "ноуглючно", универсально. Поэтому и хотелось, чтобы lua разработчик, на более низком уровне, смог всё-таки забацать "такое".
Напишите, какие задачи этими функциями вы бы хотели решить? каким окнам и какие сообщения посылать?
Ещё один примерчик. Имеется в квике такого характера "недоразумение" - в графиках цены и объёма вертикальные скролбары при загрузке терминала отскролены в неудобное положение, а именно показана верхняя часть графика объёма. Может я сумасшедший, но меня это жутко подбешивает. Поэтому после запуска квика я запускаю спец программу, которая отскроливает все графики объёма вниз. Но это уже так - накипевшие мысли вслух. А хотя - ещё вот, я также проделываю каждый божий день с окнами графиков следующее
SetWindowLong(hOknoGrafik, GWL_EXSTYLE, 448)
Чтобы поменять полосу заголовка окна на более узкую (WS_EX_TOOLWINDOW)
Но а вообще хотелось бы сделать, что-то для периода закрытия торгов. На тот случай, когда кто-то хочет слить ниже рынка, или купить выше рынка. Чтобы в "продвинутом" стакане это было всё видно, и чтобы при этом роботу было удобно раздавать указания по выставлению заявок (цена, лоты).
Siluyano, хорошо, я понял вас.
Заходите после выходных, будет.
Хотя на мой взгляд правильнее было бы сделать более высокоуровневые обертки, решающие какие-то конкртентые, функционально законченные задачи применительно к Quik. Поэтому был бы признателен за высказывания относительно полезной готовой функциональности такого плана. Я пока могу придумать лишь автологин.
С другой стороны базовые, раз уж нужны - пусть тоже будут.
Поэтому после запуска квика я запускаю спец программу, которая отскроливает все графики объёма вниз. Но это уже так - накипевшие мысли вслух.
На мой взгляд это хороший кандидат на добавление функционала в Quik, написать разработчикам "запоминать положение скролл-баров во всех окнах", толково и разумно. Но я понимаю относительно скорости реализации, да )
Чтобы поменять полосу заголовка окна на более узкую (WS_EX_TOOLWINDOW)
Это есть в Quik, начиная с версии 6.6. Ну правда только сразу для всех окон и они после этого не двигаются, зато готовое. Может то, что вам нужно?
Про скрол бары написал на quik.ru/forum. И ещё пару тройку идей им там кинул. Возможно вы уже в курсе, видел вас там. Про склеивание окон знаю, но это полная лажа вроде.
Так вот, про "после выходных" если вы о winapi функциях, то может действительно это не в VCL правильнее иметь, а в отдельной dll-ке? Такая вот мысль.
Автологин - это когда квик сам авторизуется при запуске при наличии подключения к интернету? Никогда честно говоря не задумывался о таком. Наверно это актуально где к домашнему компьютеру доступ только у одного лица. У меня другая ситуация)
Siluyano,
по поводу вызова WinAPI функций. Проще всего взять готовую библиотеку, например w32. Сделал отдельную ветку "Вызов WinAPI функций из QUIK".
Ни кто не пробовал нарисовать график по данным из Quik? Ну или работать с графиком в Quik? Например нарисовать свою линию (вертикальную, горизонтальную) с возможностью её двигать.
Нарисовать - в смысле прям в самом графике QUIK?
Просто нарисовать в окне графика на самом деле не сложно. Но надо ж еще привязываться к координатам квикового графика, чтобы рисование было осмысленным.
Вот где засада.
Нарисовать - в смысле прям в самом графике QUIK?
Просто нарисовать в окне графика на самом деле не сложно. Но надо ж еще привязываться к координатам квикового графика, чтобы рисование было осмысленным.
Вот где засада.
А просто вытащить график в созданную в vclua форму и в этом графике рисовать линии?
QUIK -> DDE → Lua: визуальные библиотеки → Визуальный интерфейс VCLua в QUIK
Форум работает на PunBB, при поддержке Informer Technologies, Inc