Вопросы по QTABLE

Страницы: 1
RSS
Вопросы по QTABLE
 
Простенький минимально достаточный для создания окна скрипт:

Код
is_run = true

function OnInit()

   t_id = AllocTable()
   CreateWindow(t_id)
   SetWindowCaption(t_id, "thats my table")
  
end

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

function OnStop()
DestroyTable(t_id)
is_run = false
return 1000
end
 
После его работы - создаётся большущее окно без названия и только потом - окно в один столбец но, очень длинное по вертикали. При этом, если передёрнуть скрипт несколько раз - положение окна будет всё время меняться в сторону приращения координат левого верхнего угла по X и по Y.
Про функцию SetWindowPos - знаю. И о ней мне говорить не надо.
Вопрос:
  1. получается, что на самом деле, при создании окна - собирается какой-то мусор от предыдущих экземпляров - хотя, при остановке скрипта - его LUA VM должна быть полностью разрушена, равно как и переменные ею занимаемые/устанавливаемые.
  2. Почему при создании окна таблицы вылазиет ещё одно большое окно? Внешне это выглядит, как неприятное единовременное мерцание. подозреваю, что это одно и тоже окно но, заданное с большими дефолтными размерами и только потом, они почему-то опять меняются непонятным образом.
  3. Значит ли это, что внутри функции CreateWindow(t_id) - снова меняются размеры окна?
 
4. Значит ли это, что реально, дескриптор окна таблицы никуда не разрушается, а окно просто "прячется" - т.е. получает сообщение WM_SHOWWINDOW с wParam = false?
 
Добрый день.
Смущает что положение нового окна смещается при каждом вызове CreateWindow?
 
Цитата
Michael Bulychev пишет:
Добрый день.
Смущает что положение нового окна смещается при каждом вызове CreateWindow?
Михаил, смущает односложность фраз.
 
Были заданы вопросы, Вы, тем не менее опять занимаетесь троллингом, заставляя их снова перечислять.
 
если не готовы дать развёрнутые ответы по каждому вопросу (Но, именно развёрнутые) - то, может и не стоит тогда?...
 
По пунктам:
1. Вы не правы
2. Такой эффект есть, подумаем как его побороть.
3. Да, можно сказать и так.
4. Вы не правы.
 
Цитата
Michael Bulychev пишет:
По пунктам:
1. Вы не правы
2. Такой эффект есть, подумаем как его побороть.
3. Да, можно сказать и так.
4. Вы не правы.
сразу бы так...

насчёт п.2.: а почему бы не сделать по дефолту создание окна нулевого размера, как это сделано в Delphi?
 
и последнее, стоит ли заниматься сабклассингом QTable-окна или есть реальная возможность таки дождаться полноценного GUI-support в QLUA?
 
Michael Bulychev,
Складывается впечатление, что Вы отвечаете только на "удобные" вопросы.
 
Добрый день.
Не совсем понимаю о чем Вы.
Если об этом:
Цитата
sam063rus пишет:
и последнее, стоит ли заниматься сабклассингом QTable-окна или есть реальная возможность таки дождаться полноценного GUI-support в QLUA?
То как я могу вам что-то запретить, хотя я не знаю что такое QTable в Вашем понимании. Планы по реализации поддержки GUI у нас есть, но сроки мы назвать пока не можем.
 
накидал по быстрому скриптик на QLUA C API. (понятное дело, что с ошибками, НО!...)

имеется:

Код
 function smthSub(L: Plua_State): Integer; cdecl;
 var
 t_id:integer;
begin
     lua_getglobal(L, 'AllocTable');
     lua_call(L,0,1);
     t_id:= trunc(lua_tonumber(L,-1));
     lua_getglobal(L,'CreateWindow');
     lua_pushnumber(L,t_id);
     lua_call(L,1,0);
     lua_getglobal(L,'SetWindowCaption');
     lua_pushnumber(L,t_id);
     lua_pushstring(L,'thats my table');
     lua_call(L,2,0);

     
     Result:=0;
end;
ну и, почти-аналог на QLUA: https://forum.quik.ru/messages/forum10/message5967/topic625/#message5967

Вопрос:
  • Почему при нажатии на кнопку "Остановить" скрипт - окно - не исчезает, а живёт себе полноценной жизнью?????
  • Значит ли это, что при нажатии на кнопку "Остановить" - LUA VM скрипта не разрушается\ полностью?
Версия QUIK: 6.17.1.17
 
Цитата
Michael Bulychev пишет:
о как я могу вам что-то запретить, хотя я не знаю что такое QTable в Вашем понимании.
и опять троолинг - Вам ли не знать, что такое QTable?
Была идея, -> использовать окно квика, как базовый оконный класс, подменив средствами WINAPI его оконную процедуру, а ту, что штатная - оставить в качестве DefWndProc. Идея - была уже озвучена и не раз.
 
Цитата
sam063rus пишет:
Была идея, -> использовать окно квика,
имелось ввиду - окно QTable-таблицы
 
Приведите полный код, пожалуйста.
 
так пойдет?:

Код
 package.cpath=getScriptPath().."\\?.dll"
package.path=getScriptPath().."\\?.lua"

require "qte"

is_run = true

QTE.smthSub()


function main()

  while is_run do
    sleep(100)
  end

end

function OnStop()

is_run = false
return 1000
end
 
Цитата
sam063rus пишет:
Вам ли не знать, что такое QTable?
Это был пример на Lua который только в общих чертах описывает идею реализации таблицы как объекта. С точки зрения терминала это такая же таблица как и, например, таблица всех сделок.
 
другой код на Delphi - стандартный и не отражает сути
 
DestroyTable у Вас нигде не вызывается
 
Цитата
Michael Bulychev пишет:
Это был пример на Lua который только в общих чертах описывает идею реализации таблицы как объекта.
но если с как вы говорите с "общими чертами" - столько геморроя, а потом выясняется, что "тезисы" не работают то, спрашивается, "нахрена козе баян"???
Цитата
Michael Bulychev пишет:
С точки зрения терминала это такая же таблица как и, например, таблица всех сделок.
это понятно.
 
Подробнее объясните что именно вызывает у Вас сложности?
 
Цитата
Michael Bulychev пишет:
DestroyTable у Вас нигде не вызывается
и что???
QTable - это "изобретение", порождённое в скрипте и скриптом и его LUA VM - однако это не мешает при удалении онных жить так называемому изобретению собственной жизнью?
 
Согласитесь, логично было бы предположить, что при удалении LUA VM скрипта - все его "изобретения" - также бы удалялись??? Это мировая практика.
 
Это уже обсуждалось много раз - так сделано специально. После завершения работы скрипта окна не закрываются если этого не было сделано явно.
 
Цитата
Michael Bulychev пишет:
Это уже обсуждалось много раз - так сделано специально. После завершения работы скрипта окна не закрываются если этого не было сделано явно.
а вы с кем-нибудь советовались, чтоб это сделать? Или только с парочкой форумных "умников" предложениям/пожеланиям которых Вы, как компания весело "подмахиваете"?

..лять, программирование в так называемой QLUA - это уже даже не стандарт программирования и "тезисов" LUA и даже не программирование чисто под Windows, а - "вещь - в себе". При том, что информацию приходится выуживать не из официальной документации ("хелп"ов), а из "сопливого" непонятно форума.
 
К нашему сожалению, когда мы реализовали такое поведение Вы еще не были зарегистрированы на нашем форуме.
 
Цитата
Michael Bulychev пишет:
К нашему сожалению, когда мы реализовали такое поведение Вы еще не были зарегистрированы на нашем форуме.
не надо мне - я прекрасно помню когда и с чего это началось и предупреждал - но всем было нас..рать...

Вы гонитесь только за сиюминутной выгодой в лице начальства -> "мол сделал для галочки - значит чота сделал". При том, что сами понимаете, что программировать и реализовывать пожелания по интерфейсу - куда проще чем заниматься действительно серьёзными вещами.

Вы плохо представляете всю картину и как это отразится на квике в целом через 1,2,-5 лет Ваших таких "поделок"

---------------
адресовано не именно Вам, а тем кто за Вами стоит.
 
Повторю еще раз - такое поведение сделано было осознанно. Есть задачи для которых удобно что-то посчитать, вывести табличку и остановить скрипт. При этом вся информация остается в терминале.
 
ок
для меня это - некритично. мне в любом случае, нужно было лишь узнать hwnd окна таблицы и я это сделал. Далее, просто переопределю оконную процедуру.
 
Для тех, кто захочет узнать о том, как получить полный контроль над окнами квика - в пакете с Delphi - есть утилита: WinSight32 - она позволяет узнать и понять внутреннюю структуру окон в любом процессе. Дальше - дело за малым...
Страницы: 1
Читают тему
Наверх