Как создать свою форму (окно) и разместить на ней элементы формы (чекбокс, список, кнопка, поле для ввода и тд)

Страницы: 1
RSS
Как создать свою форму (окно) и разместить на ней элементы формы (чекбокс, список, кнопка, поле для ввода и тд), Создание новых элементов интерфейса
 
Добрый день.
Возникла задача создать внутри QUIK собственных окон и форм с последующим размещением на них стандартных элементов форм (кнопки, текстовый label, список, поле для ввода и тд)
Затем заполнять динамически эти элементы формы своими данными и обрабатывать события щелчков на кнопки.
Возможно ли это и куда копать ?
 
Здравствуйте,
Возможно но только через сторонние библиотеки вроде wx, vc или iup
 
Спасибо. Воспользовался вашим советом и решил попробовать iup
1. Зашел на страницу https://sourceforge.net/projects/iup/files/3.18/Tools%20Executables/Lua51/
2. Скачал архив iup-3.18-Lua51_Win32_bin.zip
3. Вытащил из него три файла
  • iup.dll
  • iuplua51.dll
  • lua5.1.dll
4. Поместил их в папку QUIK
5. Создал тестовый lua-файл
Скрытый текст
6. Запустил этот файл в QUIK - работает. Появилось окно
7. Но при попытке закрыть полученное окно (крестиком в правом верхнем углу) приложение QUIK крашится
8. Отладчик написал
Код
Необработанное исключение по адресу 0x1A635EF0 в info.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x1A635EF0.
С чем это может быть связано ?
Цитата
 
Нашел альтернативный способ с помощью библиотеки qvcl
и кажется это то, что надо
 
Цитата
mdbm написал:
4. Поместил их в папку QUIK

В терминале уже есть своя библиотека lua5.1.dll ее менять категорически нельзя!

Переместите файлы в отдельную папку, а файл lua5.1.dll который был в терминале верните обратно.

Далее измените код следующим образом:
Скрытый текст



Делаем акцент что IUP не является нашим продуктом, поэтому вопросы касающиеся самого IUP лучше адресовать на форум посвященный IUP
 
Спасибо. Вернул родной lua5.1.dll на родину)
 
При использовании iup, если хотите в потоке main делать что-то ещё, а не только показывать окна и формы, стоит писать примерно так:
Код
    while not interrupted do
        iup.LoopStep() -- обеспечивает работу GUI
        doSomeTrading() -- вычисление сигналов, постановка заявок
    end
Вызов функции iup.MainLoop() лишает этой возможности.

При таком подходе, к сожалению, при выводе диалоговых окон и popup-меню работа программы приостанавливается: пока окно или меню на экране, doSomeTranding() не вызывается.

Выходит, что как-то можно пользоваться iup, но не всеми его возможностями. Так будет до тех пор, пока в qlua не появится возможность будет запустить отдельный вычислительный поток и там вызывать iup.LoopStep().
 
_sk_,
Не так сложно написать отдельную .dll, которая будет создавать отдельный Lua-поток и запускать его в новом системном потоке.
НО! Этот созданный поток нужно будет аккуратно завершать перед выходом из main, т. к. Quik о нём ничего знать не будет.
Вот поэтому вопрос: действительно ли нужен такой функционал?
 
Цитата
Вот поэтому вопрос: действительно ли нужен такой функционал?

Мне не нужен, я обхожусь только стандартными средствами терминала QUIK и встроенного QLua. Отвечал автору темы, чтобы поделиться имеющимся опытом.
 
Здравствуйте. Подскажите пожалуйста, что делать с данной ошибкой ?
С сайта https://sourceforge.net/projects/iup/files/3.18/Tools%20Executables/Lua51/ скачал архив iup-3.18-Lua51_Win32_bin.zip. Из этого архива, в папку с квиком скопировал файлы iup.dll и iuplua51.dll.
Создал скрипт с кодом:

Скрытый текст

При запуске скрипта в терминале возникает ошибка: ACCESS VIOLATION at address 00007FFDB6692850
Что делать ?
 
Прошу прощенья, архив скачивал не 32 битный, а 64. При скачивании 32 битного, появлялась ошибка D:\DEVELOPMENT\Exchange\Роботы\iup\iuptest.lua:1: %1 не является приложением Win32.
 
А вы какой версией терминала пользуетесь? У вас точно Lua5. 1 в терминале?
 
Владислав, попробуйте эту библиотеку
https://quik2dde.ru/viewtopic.php?id=111
 
Цитата
swerg написал:
А вы какой версией терминала пользуетесь? У вас точно Lua5. 1 в терминале?
Lua 5.1 в терминале нет, только 5.4.1 и 5.3.5. Получается, что использование iuplua в новых версиях терминала невозможно ?  
 
Исходники доступны, пересобрать с библиотека ми нужной версии
 
1. Форум называется "Программирование на языке Lua".
2. Средства для организации диалога здесь убогие, если не сказать "никакие".
3. Задачи организации торговли достаточно примитивны, а потому требования к диалогу тоже практически "никакие", и потому могут быть вполне удовлетворительно эмулированы даже на тех кастрированных возможностях, которые здесь имеются (даже поля ввода, довольно громоздкий код которых здесь когда-то приводился и которым лично я никогда не пользовался и пользоваться не собираюсь).
4. Диалог на чистом Lua может быть построен с использованием таблиц QUIK и обработчиков событий, устанавливаемых для них по SetTableNotificationCallback (разумеется, тоже кастрированный, но вполне приемлемый для практических задач). Например, чекбокс я эмулирую изменением цвета фона ячейки таблицы, список - с помощью выпадающего меню, кнопки - тоже ячейки таблиц, горячие клавиши (точнее, их доступный огрызок) в коде самого обработчика и т.д.
5. Пользоваться сторонними библиотеками категорически не рекомендую по ряду причин, главная из которых - уменьшение надёжности работы скрипта, что многократно подтверждается прямо в этой ветке.
Страницы: 1
Читают тему
Наверх