Всё об интерфейсе L_MCU :: KatMc

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_MCU :: KatMc

Сообщение edward_K »

Все, да не все.
В примере нет { в " if NullVipRef(refAttr) {"
И добавьте new в объявление.
Чтобы _try всегда срабатывал надо добавить else.
Там есть еще
Screen scLongName;
Show at (, 25, , );
Table KatMC;
- возможно вы с этим экраном пересеклись.
Ну и все это в Panel pan2; // pass
Ваш экран должен быть внутри нее.
вот это еще тоже уберите
if cfsGetObjInfo('sclongname', cur_obj, l0, cont_inf, aObjType) = cfOk
and cfsDestroyObject(l0) = cfOk {} //Освобождаем место для встроенного
else {
message('destroying of the sclongname is bad');
exit;
- уничтожать sclongname не нужно - нужно через setformat установить ваш вид.
Остальное с виду нормально. Попробуйте свой фейс написать.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Всё об интерфейсе L_MCU :: KatMc

Сообщение zna »

Отлично, всё получилось! Очень благодарен за обсуждение.

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

alter interface KatMc;
var l0: longint;
    cur_obj, cont_inf, aObjType: string;
    refAttr: Attribute;// noauto;
panel pan2;
Embedded brExAttr interface;
  show at (,25,,);
end;
end;

HandleEvent  //События главного окна
cmInit: {
  if inherited::handleEvent(cmInit) <> heOk exit;
  if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) <> cfOk) then
     {Message(''#3'Ошибка установки контейнера', Error); Exit;}

 if NullVipRef(refAttr) {
        LoadVipInterface(refAttr);
        setformat(brExAttr);
        BindEmbeddedInterface(brExAttr, refAttr, 'VALUEINPUTWINDOW');//Как здесь указать MEMATTRVAL?
        RefAttr.reDraw(word(1411), katmc.nRec)
      } else message('Интерфейс refAttr уже инициализирован..');
}
cmPositionChanged: if not NullVipRef(refAttr) refAttr.reDraw(word(1411), katmc.nRec);
cmDone: FreeVipInterface (refAttr);
end;
end.   
Изображение
Остался последний шажок- вывести поле редактирования мемо-атрибута MEMATTRVAL
Ctrl+F4 ==> 'L_MCU::KATMC.BREXATTR.C_EXTCLASS::ATTRIBUTE.VALUEINPUTWINDOW.STRINGINPUTSCREEN.ATTRVAL.VSTRING'
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_MCU :: KatMc

Сообщение edward_K »

Проще всего выводить sgetattr в вычисляемом поле, а обработку делать в cmpick или с cmexpresfield( точно не помню) - и не надо возится со встраиванием
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Всё об интерфейсе L_MCU :: KatMc

Сообщение zna »

edward_K писал(а):Проще всего выводить sgetattr в вычисляемом поле, а обработку делать в cmpick или с cmexpresfield( точно не помню) - и не надо возится со встраиванием
Идея всей затеи в том, чтобы минимизировать действия пользователя. Встал на МЦ- и мемо- поле атрибута тут как тут..
Может, так сделать: получить контейнер с встроенным интерфейсом, в нём взять хэндл нужного видимого элемента, и сделать setformat?
Последний раз редактировалось zna 14 янв 2020, 16:15, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_MCU :: KatMc

Сообщение edward_K »

Ну если в этом объекте нет, то придётся писать что то своё. Либ напрямую attrval вывести, либ обьект
Ответить