Страница 2 из 5
Re: Alter interface
Добавлено: 15 мар 2012, 19:05
m0p3e
savov писал(а):Я думаю, ошибаюсь с наименованием контейнера, как его определить? Поясните плиз
Ctrl+F4 - GetIfcCurrentFieldName
или конфигуратором.
savov писал(а):Попробовал приведенный код
На "cfp..." орет, что нет такой функции
cfp описаны в cfg_all.inc. Нужно подключить.
Re: Alter interface
Добавлено: 15 мар 2012, 19:10
savov
Ctrl+F4 - GetIfcCurrentFieldName
или конфигуратором.
Да, именно так и получал указанные в моем коде имена.
а visible нужен?
В самой исходном фейсе верхняя часть - скрин. Переопределение вставит кнопку именно туда ( если координаты попадают)?
Re: Alter interface
Добавлено: 15 мар 2012, 19:14
m0p3e
Для начала нужно понять все ли функции отрабатывают.
Код: Выделить всё
cmOnVipLoad:
{
inherited::handleEvent(cmOnVipLoad);
Message('cfsSetCurrentContainer - ' + cfsSetCurrentContainer('PRNVARIATMCUSL.SCRPRNVARIATMCUSL.WNASTR'));
//и так далее
cfsCreateObject('button', 'SCRBUTTONS', 'ButDistributionValue', FALSE, butMyCom);
cfsSetProp('ButDistributionValue','Visible',TRUE);
cfsSetProp('ButDistributionValue','Size_X',91);
cfsSetProp('ButDistributionValue','Size_Y',25);
cfsSetProp('ButDistributionValue','Origin_X', 100);
cfsSetProp('ButDistributionValue','Origin_Y', 23);
}
Re: Alter interface
Добавлено: 15 мар 2012, 19:33
savov
Скомпилил и запустил. Фейс вышел, но ни одной мессаги не появилось.
Re: Alter interface
Добавлено: 15 мар 2012, 19:48
m0p3e
savov писал(а):Скомпилил и запустил. Фейс вышел, но ни одной мессаги не появилось.
Значит коД вааще не отрабатывает.
Посмотрел исходники интерфейса. Нет там cmOnVipLoad. Требуемое событие cmInit;
Код: Выделить всё
cmInit :
{
inherited::HandleEvent(cmInit);
....................................
}
Кроме того не вижу скрина "ScrButtons" там.
Re: Alter interface
Добавлено: 15 мар 2012, 19:57
savov
Сообщения пошли после смены на cmVipLoad на cmInit, на установку контейнера и создание объекта выдала -5, на установку свойств -3, но кнопки нет
Re: Alter interface
Добавлено: 15 мар 2012, 20:01
m0p3e
Код: Выделить всё
cfErrContainerObjectNotExist : Integer = -5;
Навскидку:
Код: Выделить всё
cfsSetCurrentContainer('PRNVARIATMCUSL');
cfsCreateObject('button', 'SCRPRNVARIATMCUSL', 'ButDistributionValue', FALSE, butMyCom);
cfsSetProp(butMyCom,'Visible',TRUE);
cfsSetProp(butMyCom,'Size_X',91);
cfsSetProp(butMyCom,'Size_Y',25);
cfsSetProp(butMyCom,'Origin_X', 100);
cfsSetProp(butMyCom,'Origin_Y', 23);
Re: Alter interface
Добавлено: 15 мар 2012, 20:13
savov
ПОЯВИЛАСЬ!!!!
ОГРОМНОЕ СПАСИБО!!!!
Кстати, а где поподробнее прочитать про это? В одном случае cmOnVipLoad, в другом просто cmInit чем определяется? (исходников у нас нет)
Re: Alter interface
Добавлено: 16 мар 2012, 00:04
Den
savov писал(а):
В одном случае cmOnVipLoad, в другом просто cmInit чем определяется? (исходников у нас нет)
Если использование конкретной функциональности реализовано через объектную модель атлантиса,то загрузка реализуется ,как вариант, посредством cmOnVipLoad (Выдержка из хэлпа по cmOnVipLoad: "Событие возникает в момент создания экземпляра Vip-интерфейса...").
Т.е. если к Вашему PRNVARIATMCUSL обращаются как в объекту, (например, задействуя переменную типа ссылки...) то загрузка PRNVARIATMCUSL будет производится посредством cmOnVipLoad, если "по старинке" - то через Cminit.
Хотя без исходников конечно все равно тяжковато ( Часть информации можно посмотреть через консоль управления саппорта(при наличии соответ лицензии ,конечно) - там можно посмотреть у конкретного интерфейса какие события есть у обработчиков главного окна интер-са, дополнительных и т.п...хотя посмотреть содержимое этих событий там вроде нельзя ((
Re: Alter interface
Добавлено: 16 мар 2012, 08:02
n0where
cfsSetCurrentContainer - указываешь интерфейс
cfsCreateObject - указываешь панельку, скрин и тп
http://www.tyumbit.ru/gal_forum/viewtop ... 870#p57965
Re: Alter interface
Добавлено: 16 мар 2012, 11:00
m0p3e
savov писал(а):Кстати, а где поподробнее прочитать про это? В одном случае cmOnVipLoad, в другом просто cmInit чем определяется? (исходников у нас нет)
Если отойти от теории, то...
Есть интерфейс PickCatalog2. Если мы его запустим как RunInterface(PickCatalog2,..), то отработает событие cmInit.
Если же обратимся к нему как к объектному:
Код: Выделить всё
var iPickCat : PickCatalog2;
iPickCat.StaffPodr(....);
то отработает событие cmOnVipLoad.
Re: Alter interface
Добавлено: 19 мар 2012, 16:57
savov
Доброго времени суток !
Благодаря помощи, оказанной мне в данной теме благополучно переопределил два интерфейса ( их всего нужных мне три, которые позволяют выбирать вариант наименования МЦ: в накладных, в ДО, в СФ).
Но в третьем ( L_SF::PRNSHFVARIATMCUSL) кнопка вставилась, но нажатие на нее не срабатывает, кнопка никак не реагирует.
Сравниваю в конфигураторе, во всех трех фейсах свойства кнопки аналогичны.
При переопределении указанного фейса ошибок не возникло.
Кнопка попала в скрин, в котором находятся и стандартный заголовок и текстовые блоки.
В чем может быть возможная причина того, что кнопка на нажатие не реагирует???
Re: Alter interface
Добавлено: 19 мар 2012, 19:07
savov
Я кажется понял, почему не отрабатывает.
В этом фейсе просто нет обработчика для скрина, куда вставлена кнопка.
Т.е. надо бы добавить обработку нажатия на мою кнопку для существующего уже в окне скрина.
А вот как это сделать, я не знаю.
Перечитал разные посты, но ничего не подходит, а исходных текстов ( и нужного хелпа) нет.
Re: Alter interface
Добавлено: 19 мар 2012, 21:18
Den
Обработчики бывают оконные и табличные...т.е. Вам просто нужно посмотреть в какое окно встроен screen данный(например с помощью конфигуратора) и внутри этого HandleEvent-а описать реакцию на эту педаль в Вашем alter
Re: Alter interface
Добавлено: 20 мар 2012, 12:05
savov
Вам просто нужно посмотреть в какое окно встроен screen данный(например с помощью конфигуратора) и внутри этого HandleEvent-а описать реакцию на эту педаль в Вашем alter
Я не знаю как синтаксически указать в программе, что данный обработчик должен относится к указанному окну.
Как это записать?