crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QtScript: Привязка функций к объекту
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость_JohnZ Дата 9.6.2020, 23:51
  Решено !!!

QScriptContext *context = engine->currentContext();

QScriptValue valApp = engine->globalObject().property(Object);

context->setActivationObject(valApp);
context->setThisObject(valApp);

result = engine->evaluate(script, ScriptName);

Удачи !
JohnZ Дата 13.2.2020, 13:55
  Всем Здравия !

Помогите решить такую проблемку ...
Есть объект списка и/или формы и как полагается их скрипт(ы)
Объекты создаются в С-шном коде и затем подгружается и компилится его скрипт, т е на момент компиляции объект уже существует в engine.

Пример скрипта ...

Раскрывающийся текст


function frm2233ButtonPress(bn)
{
var p1,p2,p3,ret;
if (bn == "tbPost")
{
app.loadForma(214); // Справочник контрагентов
frm214.initForm(1);
ret = frm214.exec();
p1 = frm214.Value(1);
p2 = frm214.Value(2);
delete frm214;
if (ret == 0) return;

frm2233.findChild("sbPost").value = p1; // Установить контрагента
frm2233.findChild("lbPost").text = p2;
}
else
if (bn == "tbOp")
{
app.loadForma(875); // Справочник операций
frm875.initForm(1);
ret = frm875.exec();
p1 = frm875.Value(1);
p2 = frm875.Value(2);
delete frm875;
if (ret == 0) return;

frm2233.findChild("sbOp").value = p1; // Операция
frm2233.findChild("lbOp").text = p2;
}
}



Есс-но после компиляции функции становятся глобальными, и при достаточном их количестве в дебагере образуется что-то
типа "помойки", где найти то что нужно весьма проблематично. Вот если функцию объявить в скрипте вот так ...

frm2233.ButtonPress = function(bn)

то она окажется где ей и положено быть, внутри объекта.
Вопрос заключается в следующем, - возможно ли при сохранении стиля скриптов 1-го варианта, получить результат 2-го варианта ?
Возможно ли это вообще, и если да, то что в С++ нужно (до)сделать при компиляции скриптов ?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 13:56