Страница 1 из 1

Динамический интерфейс

Добавлено: 09 окт 2007, 11:12
evchic
Всем Привет!

Подскажите как сделать? Суть такова, есть Интерфейс(1) на нем динамически загружается в зависимости от параметров Инт(2) или Инт(3) или Инт(4)! Вопрос как передать из Инт(1) в Инт(2) какой либо параметр?

Код: Выделить всё

Parameters Tnrec;
Так не работает т.к. это вызов фейса через

Код: Выделить всё

panel format_2;
Show at (71,51,,);
Embedded scINFOS1 '1' interface;
end;
end;
...
cmW:
{
TNrec:=TempR.nrec;BindEmbeddedInterface(scINFOS1, 'iVisul_1')
};         
DSK использовать не хочется...
Может в Галактике есть какие нибудь Глобальные переменные которые можно былоб использовать

И еще раскажите как работать с функциями

Код: Выделить всё

GetCompParameter 
SetCompParameter
Где взять для них
aGroupName : string - название существующей группы параметров. Параметры создаются средствами языка Паскаль.
aParameterName : string - название параметра.

Добавлено: 09 окт 2007, 12:07
san
из инт1 в инт2 через Parameters Tnrec в инт2; без проблем.параметр передается в строке вызова инт2
вернуть параметр из инт2 в инт1 тоже , для этого надо в инт2 указать alwaysreturn в строке заголовка инт2 или выходить c кодом 0.
если все интерефейсы самописные и есть возможность их вместе собирать, можно в проекте объявить врем таблицу и через нее передавать данные.

GetCompParameter
SetCompParameter
это для работы с параметрами конфигурационного файла (galnet.cfg)
aGroupName - секция
aParameterName - параметр
aFlags - брать первый или следующий (для повторяющихся параметров с одинаковым именем)

Добавлено: 09 окт 2007, 23:48
edward_K
фейсы инт2,инт3 должны быть объектными.
ObjInterface objint2 ;
функции из инт2
End;
VipInterface инт2 implements objint2 ;

в инт1 объявляете
pинт2=objint2
грузите pинт2 через loadvipref ( сие важно)

далее когда надо подцепляете
BindEmbeddedInterface(scINFOS1, pинт2)
ну а параметры передаете как
pинт2.функция(....) ;
есть еще BindEvent - но это скорей наоборот - из инт2 выполнить чего то в инт1 - опять же в objinterface объявляется event ... . при выполнении какой либо функции в инт2 можно вызвать сию процедуру и выполниться процедура из инт1. Вообще посмотрите каталог МЦ, закладка аналитика например или фейсы в производстве - там сплошные BindEmbeddedInterface - по getifccurrentfieldname четко видно - и все нормально обновляется при сдвиге в главном окне.

Добавлено: 10 окт 2007, 11:03
evchic
edward_K

Это я понял и уже разобрался прикол вот в чем!
Если изменять позицию в дереве Инт1 то Инт2 или Инт3 изменяется в зависимости от дерева...
Но если я стану в инт2 а затем вернусь к дереву в инт1 выскакивает ошибка

Изображение
Изображение
Изображение
Изображение
Изображение

Добавлено: 10 окт 2007, 11:26
edward_K
1. Сапорт не самое удачное место для тестирования. Ядро все такие другое, чем в галке - не все пашет.
2. Logstrtofile вам поможет. А также наверное в cmAlways можно перехватить чего нибудь.
3. Возможно вы действительно забываете освобождать объекты.

Добавлено: 10 окт 2007, 15:13
evchic
edward_K
как правильно реализовать

pинт2.функция(....) ;

Добавлено: 10 окт 2007, 16:00
edward_K
8)
для начала почитайте в vipprogr.chm , что такое объектный фейс.
В самом инт2 просто пишите сию функцию как обычно. Описание функций для внешнего использования обычно делают в vih файлах.
Откройте любой vih -увидите как идет описание.
В vipprogr.chm есть готовые примеры.
А дальше либо доходите сами, либо заказывайте на стороне (с условием передачи всех необходимых файлов для компиляции) - много чего нужно понимать при встраивание фейсов. Смысла приводить здесь несколько страниц из доки не вижу. :cool:

Добавлено: 11 окт 2007, 10:56
san
evchic
а у меня такая ошибка стала выскакивать после изменения интер-са конфигуратором.удалил crf заработало.