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

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

Добавлено: 13 янв 2020, 11:45
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 установить ваш вид.
Остальное с виду нормально. Попробуйте свой фейс написать.

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

Добавлено: 13 янв 2020, 14:12
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'

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

Добавлено: 14 янв 2020, 15:57
edward_K
Проще всего выводить sgetattr в вычисляемом поле, а обработку делать в cmpick или с cmexpresfield( точно не помню) - и не надо возится со встраиванием

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

Добавлено: 14 янв 2020, 16:10
zna
edward_K писал(а):Проще всего выводить sgetattr в вычисляемом поле, а обработку делать в cmpick или с cmexpresfield( точно не помню) - и не надо возится со встраиванием
Идея всей затеи в том, чтобы минимизировать действия пользователя. Встал на МЦ- и мемо- поле атрибута тут как тут..
Может, так сделать: получить контейнер с встроенным интерфейсом, в нём взять хэндл нужного видимого элемента, и сделать setformat?

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

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