51

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

А где можно почитать про такие функции как getQuoteLevel2()?

52

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

В составе QUIK есть файл Qlua.chm
Это справка по QLua, в ней описаны все доступные в QLua функции.

53 (2013-07-09 07:07:10 отредактировано Arhn)

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

Arhn пишет:

Проблему с редактированием ячеек в таблице решил кое как. Осталось решить как сделать в таблице Drag and Drop по ячейкам? Может кто подскажет?

Наконец-то я реализовал Drag and Drop. Долго доходило big_smile

54 (2013-07-10 22:24:37 отредактировано Arhn)

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

Еще вопрос big_smile. Как мне получить строку или ячейку по данной в ячейке? Т.е. есть в ячейке какие-нибудь данные, я их нахожу и хочу узнать в какой строке (или ячейке) они находятся

55

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

Форум что-то затухать начал, неужели все со всем разобрались? Или луа не так интересна?
Подниму вопрос, заданный ранее:
"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

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

Здравствуйте! Поясните пожалуйста, если не затруднит,
label =  VCL.Label(mainForm,"Label1")
label._ = { Top=135, Left=10 }
куда присваивается табличка  { Top=135, Left=10 }, что значит ._
Спасибо!

57

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

Константин М.,

в данном случае запись

label._ = { Top=135, Left=10 }

эквивалентна

label.Top=135
label.Left=10

а вот что это в смысле смысла по Lua'шному - я как-то даже не знаю, надо найти будет.

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

Спасибо.

59

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

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

60 (2013-09-27 03:17:14 отредактировано fedorovanton1980)

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

Здравствуйте! Подскажите пожалуйста как нарисовать линию и прямоугольник  если кто знает. И как обращаться к полям таблицы:

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 есть руководство на русском?

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

еще хотел бы посмотреть пример с кнопкой любой простенький

62

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

Почему не запускается больше 2х скриптов, использующих "vcl"?

63

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

fedorovanton1980 пишет:

еще хотел бы посмотреть пример с кнопкой любой простенький

Пример можете посмотреть вот в этой теме
[url]http://quik2dde.ru/viewtopic.php?id=39[/url]

И еще прям в этой же теме, которую вы сейчас смотрите, на второй странице есть простой пример с кнопкой, полем ввода и т.д. Прям вот совсем простой пример
[url]http://quik2dde.ru/viewtopic.php?pid=346#p346[/url]

Там и поля ввода, и кнопочки. Что-то конкретное будет не понятно - спрашивайте.

64

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

fedorovanton1980 пишет:

Подскажите пожалуйста как нарисовать линию и прямоугольник  если кто знает.

Добавил пример вывода графических элементов
[url]http://quik2dde.ru/viewtopic.php?id=73[/url]

fedorovanton1980 пишет:

Вообще по VClua есть руководство на русском?

Нет. Что-то не понятно - спрашивайте, не стесняйтесь.

65

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

Подскажите, пожалуйста, есть ли стандартные решения по созданию окна (mainform) внутри окна quik, т.е. чтобы оно было дочерним по отношению к классу MDIClient? Другими словами - возможно ли сделать "стакан", который будет находиться внутри квика?

66 (2013-10-09 19:48:35 отредактировано swerg)

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

В принципе, сделать окно дочерним в Windows - возможно.
Но я не уверен, что в случае с QUIK да еще MDI-child окном удастся сделать это гладко.
В любом случае с ходу короткого решения у меня нет.
Думаю самой непреодолимой проблемой будут реализованные в QUIK вкладки для окон, что явно реализовано каким-то нестандартным механизмом для MDI-child. Т.е. встроенное окно будет видно всегда, не зависимо от выбранной вкладки.

Единственный более-менее реальный вариант видится в создании в QUIK любого окна (абсолютно любого) и встраивание в него созданной в VCLua формы. Здесь проблем с MDI возникнуть не должно.

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

67

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

Благодарю за оказанное внимание. На счёт механизма вкладок квика, то это да, верно подмечено -  VCLua форма будет на всех вкладках.
Попытаюсь слегка углубиться в суть вопроса предыдущего моего поста. Хотелось бы не просто стакан, а стакан с элементами задания различных параметров роботу. Недостаток Lua стакана - это то, что он таблица, и не просто таблица, а таблица для просмотра (readonly). Можно конечно обрабатывать нажатия клавиш и менять содержимое ячеек, но это как то не по-человечески. Во-вторых, эта досадная первая колонка с номерами строк таблицы. В-третьих, невозможность менять шрифт и т.д.
Вот вы пишите про вариант создания в QUIK окна и встраивание в него созданной в VCLua формы. Так вот, было бы супер, если бы VCL позволил использовать некоторые winapi функции, а именно:
FindWindowEx, GetParent, SetParent, GetClassName, SendMessage. Появление свойства Hwnd у объектов тоже неплохая идея как мне кажется.
Таким образом, если вруг появляется необходимость в встраивании VCL формы непосредственно в quik, то у lua разработчика будет возможность это сделать используя вышеуказанные функции, не прибегая к дополнительному софту, субклассированию, хукам и т.д.

68

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

И вам спасибо за интерес, проявленный к этому форуму и моим постам.

Siluyano пишет:

Хотелось бы не просто стакан, а стакан с элементами задания различных параметров роботу. Недостаток Lua стакана - это то, что он таблица, и не просто таблица, а таблица для просмотра (readonly). Можно конечно обрабатывать нажатия клавиш и менять содержимое ячеек, но это как то не по-человечески. Во-вторых, эта досадная первая колонка с номерами строк таблицы. В-третьих, невозможность менять шрифт и т.д.

Т.е. речь про некое удобное (я бы даже сказал - готовое) окно редактирования, например, переменных, верно? или значений в таблице Lua.
Думал про это давно, всё руки не доходят. Есть интерес - пишите, буду стараться.

Siluyano пишет:

Появление свойства Hwnd у объектов тоже неплохая идея как мне кажется.

Hwnd либо есть, либо его очень легко достать наружу, если кому-то надо. Но надо ли? я не уверен, признаться, см. ниже подробнее.

Siluyano пишет:

Так вот, было бы супер, если бы VCL позволил использовать некоторые winapi функции, а именно: FindWindowEx, GetParent, SetParent, GetClassName, SendMessage.

На мой взгляд (на мой взгляд) было бы лучше сформулировать конкретную решаемую задачу и ее уже реализовать целиком готовую и удобную к простому использованию. По-моему, в рамках QUIK и Lua это правильнее путь, нежели предоставлять базовый интерфейс, на котором каждый будет городить свой велосипедо-огород.

Напишите, какие задачи этими функциями вы бы хотели решить? каким окнам и какие сообщения посылать?

69

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

Siluyano пишет:

Таким образом, если вруг появляется необходимость в встраивании VCL формы непосредственно в quik, то у lua разработчика будет возможность это сделать используя вышеуказанные функции, не прибегая к дополнительному софту, субклассированию, хукам и т.д.

Добрый вечер! Если вы не против, то я поясню ещё раз зачем хотелось этих функции. - Чтобы не теребить вас, например, возжеланиями создания VCL окошка непосредственно в терминале квика, ибо мы выяснили, что эту затею врят ли возможно реализовать красиво, работоспособно, "ноуглючно", универсально. Поэтому и хотелось, чтобы lua разработчик, на более низком уровне, смог всё-таки забацать "такое".

swerg пишет:

Напишите, какие задачи этими функциями вы бы хотели решить? каким окнам и какие сообщения посылать?

Ещё один примерчик. Имеется в квике такого характера "недоразумение" - в графиках цены и объёма вертикальные скролбары при загрузке терминала отскролены в неудобное положение, а именно показана верхняя часть графика объёма. Может я сумасшедший, но меня это жутко подбешивает. Поэтому после запуска квика я запускаю спец программу, которая отскроливает все графики объёма вниз. Но это уже так - накипевшие мысли вслух. А хотя - ещё вот, я также проделываю каждый божий день с окнами графиков следующее
SetWindowLong(hOknoGrafik, GWL_EXSTYLE, 448)
Чтобы поменять полосу заголовка окна на более узкую (WS_EX_TOOLWINDOW)
Но а вообще хотелось бы сделать, что-то для периода закрытия торгов. На тот случай, когда кто-то хочет слить ниже рынка, или купить выше рынка. Чтобы в "продвинутом" стакане это было всё видно, и чтобы при этом роботу было удобно раздавать указания по выставлению заявок (цена, лоты).

70

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

Siluyano, хорошо, я понял вас.
Заходите после выходных, будет.

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

Поэтому после запуска квика я запускаю спец программу, которая отскроливает все графики объёма вниз. Но это уже так - накипевшие мысли вслух.

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

Чтобы поменять полосу заголовка окна на более узкую (WS_EX_TOOLWINDOW)

[url=http://iquik.ru/2013/04/18/quik-6-6/]Это есть в Quik[/url], начиная с версии 6.6. Ну правда только сразу для всех окон и они после этого не двигаются, зато готовое. Может то, что вам нужно?

71

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

Про скрол бары написал на quik.ru/forum. И ещё пару тройку идей им там кинул. Возможно вы уже в курсе, видел вас там. Про склеивание окон знаю, но это полная лажа вроде.
Так вот, про "после выходных" если вы о winapi функциях, то может действительно это не в VCL правильнее иметь, а в отдельной dll-ке? Такая вот мысль.
Автологин - это когда квик сам авторизуется при запуске при наличии подключения к интернету? Никогда честно говоря не задумывался о таком. Наверно это актуально где к домашнему компьютеру доступ только у одного лица. У меня другая ситуация)

72

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

Siluyano,
по поводу вызова WinAPI функций. Проще всего взять готовую библиотеку, например w32. Сделал отдельную ветку [url=https://quik2dde.ru/viewtopic.php?id=78]"Вызов WinAPI функций из QUIK"[/url].

73 (2013-11-30 15:41:31 отредактировано Arhn)

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

Ни кто не пробовал нарисовать график по данным из Quik? Ну или работать с графиком в Quik? Например нарисовать свою линию (вертикальную, горизонтальную) с возможностью её двигать.

74

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

Нарисовать - в смысле прям в самом графике QUIK?
Просто нарисовать в окне графика на самом деле не сложно. Но надо ж еще привязываться к координатам квикового графика, чтобы рисование было осмысленным.
Вот где засада.

75 (2013-11-30 21:57:04 отредактировано Arhn)

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

swerg пишет:

Нарисовать - в смысле прям в самом графике QUIK?
Просто нарисовать в окне графика на самом деле не сложно. Но надо ж еще привязываться к координатам квикового графика, чтобы рисование было осмысленным.
Вот где засада.

А просто вытащить график в созданную в vclua форму и в этом графике рисовать линии?