графический интерфейс

Страницы: 1
RSS
графический интерфейс, библиотека для создания формы ввода
 
День добрый. Подскажите какая сейчас актуальная и без багов библиотека для реализации графического интерфейса(формы) для ввода данных пользователем в рамках Quik Lua?
Так же интересует библиотека для считывания кодов нажатых клавиш.
 
Цитата
Сергей Радченко пишет:
День добрый. Подскажите какая сейчас актуальная и без багов библиотека для реализации графического интерфейса(формы) для ввода данных пользователем в рамках Quik Lua?
нет таких.
Цитата
Сергей Радченко пишет:
Так же интересует библиотека для считывания кодов нажатых клавиш.
это можно сделать и самому, используя пару функций из WINAPI и знание LUA C API.
примеры создания своей библиотеки можно найти на quik2dde.ru
 
Цитата
Сергей Радченко пишет:
какая сейчас актуальная и без багов библиотека для реализации графического интерфейса(формы) для ввода данных пользователем в рамках Quik Lua?
В рамках Qlua все что есть, описано в документации.

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

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Тоже заморачивался этой проблемой, но на одном сайте по моей просьбе сделали скрипт и после этого я пока обхожусь подобными штучками. Вот http://quikluacsharp.ru/quik-qlua/primer-skripta-qlua-lua-vypolnyayushhego-torgovye-operatsii-v-terminale-quik/  вдруг кому поможет (для начинающих).
 
Цитата
Юрий написал:
Тоже заморачивался этой проблемой, но на одном сайте по моей просьбе сделали скрипт и после этого я пока обхожусь подобными штучками. Вот  http://quikluacsharp.ru/quik-qlua/primer-skripta-qlua-lua-vypolnyayushhego-torgovye-operatsii-v-terminale-quik/   вдруг кому поможет (для начинающих).
Такой интерфейс позволяет реагировать на события вроде клика мышкой, а вот ввести цифровые данные с клавиатуры - проблема
 
Ввод данных с клавиатуры и обработку мышиных кликов можно реализовать с помощью таблиц (раздел "Функции для работы с таблицами Рабочего места QUIK"). Вот готовый пример (для ввода в конкретное поле, нужно кликнуть по нему - выделиться зеленым - затем вводить либо с клавиатуры (цифры над буквами, а не те, что справа [примечение: в этом примере ноль вводится клавишей "минус"]), либо щелкать по соотв. полям таблицы):
Код
run    = true
hTable = nil


--------------------------------------------------------------------OnInit
function OnInit(path)  
  
   hTable = AllocTable() 
 
   AddColumn(hTable,1 ,"", true, QTABLE_STRING_TYPE, 10)
   AddColumn(hTable,2 ,"SO limit price", true, QTABLE_STRING_TYPE, 10)
   
   AddColumn(hTable,3, "SO real price",true,QTABLE_STRING_TYPE,10)
   AddColumn(hTable,4, "TP price",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,5, "SL limit price",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,6, "SL price",true, QTABLE_STRING_TYPE,10)
   
   AddColumn(hTable,7, "TP offset",true, QTABLE_STRING_TYPE,10)
   AddColumn(hTable,8, "TP SPREAD",true, QTABLE_STRING_TYPE,10)
   
   CreateWindow(hTable)
   SetWindowCaption(hTable, "xxx")
   
   row = InsertRow(hTable, -1)
   SetCell(hTable, 1, 1, "Buy")
   
   InsertRow(hTable, -1)   
   
   InsertRow(hTable, -1)   
   SetCell(hTable, 3, 1, "Sell")
   
   InsertRow(hTable, -1)
   InsertRow(hTable, -1)
     SetCell(hTable, 5, 1, "1")
     SetCell(hTable, 5, 2, "2")
     SetCell(hTable, 5, 3, "3")
   InsertRow(hTable, -1)
     SetCell(hTable, 6, 1, "4")
     SetCell(hTable, 6, 2, "5")
     SetCell(hTable, 6, 3, "6")
   InsertRow(hTable, -1)
     SetCell(hTable, 7, 1, "7")
     SetCell(hTable, 7, 2, "8")
     SetCell(hTable, 7, 3, "9")
     SetCell(hTable, 7, 4, "0")
     SetCell(hTable, 7, 5, "<")
      
  SetTableNotificationCallback(hTable, tableCallback)
   
end 
-----------------------------------------------------------------------------

lastSelectedCol = 3
lastSelectedRow = 1

numpad = { {1,2,3}, {4,5,6}, {7,8,9,0,-1}}

------------------------------------------------
function tableCallback(t_id, msg, par1, par2)

if msg == QTABLE_VKEY then
    
      if par2>=49 and par2<=57 or par2==189 then--numpad[par2]~=nil then
       
            if par2==189 then 
                par2 = 48 
            end
         
            local num = GetCell(hTable,lastSelectedRow,lastSelectedCol)
         
            if num.image == "" then 
                    
                num=0                 
            else                            
                num = tonumber(num.image)
            end
                  
            SetCell(hTable, lastSelectedRow, lastSelectedCol, tostring(num*10+((par2-48)%10)))
            
      elseif par2==8 then
         
            local num = GetCell(hTable,lastSelectedRow, lastSelectedCol)
         
            if num.image == "" then 
                  
                num=0 
            else            
                num = tonumber(num.image)
            end
        
                SetCell(hTable, lastSelectedRow, lastSelectedCol, tostring(num/10 - (num%10)/10))
            end
elseif msg == QTABLE_LBUTTONDOWN  then
  
      if (par1==1 or par1==3) then
    
          SetColor(hTable,lastSelectedRow, lastSelectedCol, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR)     
          lastSelectedCol = par2
          lastSelectedRow = par1
  
          SetColor(hTable,par1, par2, RGB(100,250,100),QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR,QTABLE_DEFAULT_COLOR)
  
      elseif (par1>=5) and numpad[par1-4][par2]~=nil then
               
          local oldVal = GetCell(hTable,lastSelectedRow,lastSelectedCol).image
          local num = GetCell(hTable,par1,par2).image
                    
          if num == "<" then      
                    
                SetCell(hTable,lastSelectedRow,
                lastSelectedCol,string.sub(oldVal,1,string.len(oldVal)-1) or "")                   
          else
                SetCell(hTable,lastSelectedRow,lastSelectedCol,oldVal..num)   
          end
      end
   
end

end

---------------------------------------------------------------------------main  
function main()  
  
  while run do
    sleep(2000)
  end  
 
 end
 
 -------------------------------------------------------------------------------OnStop
 
 function OnStop(s)
   run = false 
   DestroyTable(hTable)
 end 
Страницы: 1
Читают тему
Наверх