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

Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцеховая

Добавлено: 24 май 2018, 12:56
Masygreen
Спасайте, никак не получается добавит кнопку в интерфейс (УПЛ - Накладная на приход ГП\ Межцеховая накладная)
Там везде embeddedPanel и как то всё мимо..
надо в SCEDITWINDOW-EDITSOPR-SCRHEADER добавить кнопку (как вариант еще расширить меню по правой кнопке, пробовал через пользовательские функции, но там засада при запрете редактирования пользовательские функции отключаются)...

Изображение

Напрашивается какой-то неверных код .. который естественно не работает... что делать?

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

#Component "M_UP"

const
  cmStartFuncCO = 30100;
end;

alter interface IMNFINTRF;
var
  iBtnFuncCO: longint;

window EDITSOPR;
HandleEvent
  cmStartFuncCO:
  {
    message('1');
  };
end;
end;

HandleEvent
  cmOnVipLoad:
  {
    if inherited:: handleEvent(cmOnVipLoad) != heOk then
    {
      abort;
      exit;
    }
    if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk) //cfsGetCurrentContainerSelf
    {
      cfsCreateObject(cfcButton, 'SCRHEADER', 'StartFuncCO', FALSE, iBtnFuncCO);
      cfsSetProp(iBtnFuncCO, cfpOrigin_X, 612);
      cfsSetProp(iBtnFuncCO, cfpOrigin_Y, 240);
      cfsSetProp(iBtnFuncCO, cfpSize_X, 155);
      cfsSetProp(iBtnFuncCO, cfpSize_Y, 25);
      cfsSetProp(iBtnFuncCO, cfpCommand, cmStartFuncCO);
      cfsSetProp(iBtnFuncCO, cfpVisible, TRUE);
      cfsSetProp(iBtnFuncCO, cfpTitle, 'Функция');
    }
  }
end;
end.  

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 13:06
Den
а что возвращает cfsCreateObject(cfcButton, 'SCRHEADER', 'StartFuncCO', FALSE, iBtnFuncCO) ?

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 13:22
Masygreen
Den писал(а):а что возвращает cfsCreateObject(cfcButton, 'SCRHEADER', 'StartFuncCO', FALSE, iBtnFuncCO) ?
, возвращает "-5"
Как оказалось в cmOnVipLoad, я вообще не попадаю. Заменил на cmInit. Во все mesage попадаю.

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

  cmInit:
  {
    message('3-0')
    if inherited:: handleEvent(cmInit) != heOk then
    {
      abort;
      exit;
    }
    message('3-1')
    if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk) //cfsGetCurrentContainerSelf
    {
      message(cfsCreateObject(cfcButton, 'SCRHEADER', 'StartFuncCO', FALSE, iBtnFuncCO));
      cfsSetProp(iBtnFuncCO, cfpOrigin_X, 612);
      cfsSetProp(iBtnFuncCO, cfpOrigin_Y, 240);
      cfsSetProp(iBtnFuncCO, cfpSize_X, 155);
      cfsSetProp(iBtnFuncCO, cfpSize_Y, 25);
      cfsSetProp(iBtnFuncCO, cfpCommand, cmStartFuncCO);
      cfsSetProp(iBtnFuncCO, cfpVisible, TRUE);
      cfsSetProp(iBtnFuncCO, cfpTitle, 'Функция');
      message('3-2')
    }
  } 

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 14:00
Den
-5 это помоему контейнер не существует.
Вроде указан верно идентификатор скрина.Хм

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 14:16
Den
Дак в приход ГП встраивается в эту область в шапку M_UP::NAKL502.EDITSOPR.SCRHEADER вроде как.
В нем и нужно добавлять кнопарь

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 15:25
Masygreen
Den писал(а):Дак в приход ГП встраивается в эту область в шапку M_UP::NAKL502.EDITSOPR.SCRHEADER вроде как.
В нем и нужно добавлять кнопарь
Глубокие поклоны, заработало...

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

#Component "M_UP"

const
  cmStartFuncCO = 30100;
end;

alter interface NAKL502;
var
  iBtnFuncCO: longint;

window EDITSOPR;
HandleEvent
  cmStartFuncCO:
  {
    message('1');
  };
end;
end;

HandleEvent
  cmOnVipLoad:
  {
    if inherited:: handleEvent(cmOnVipLoad) != heOk then
    {
      abort;
      exit;
    }
    if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk) //cfsGetCurrentContainerSelf
    {
      cfsCreateObject(cfcButton, 'SCRHEADER', 'StartFuncCO', FALSE, iBtnFuncCO);
      cfsSetProp(iBtnFuncCO, cfpOrigin_X, 612);
      cfsSetProp(iBtnFuncCO, cfpOrigin_Y, 240);
      cfsSetProp(iBtnFuncCO, cfpSize_X, 155);
      cfsSetProp(iBtnFuncCO, cfpSize_Y, 25);
      cfsSetProp(iBtnFuncCO, cfpCommand, cmStartFuncCO);
      cfsSetProp(iBtnFuncCO, cfpVisible, TRUE);
      cfsSetProp(iBtnFuncCO, cfpTitle, 'Славься Den');
    }
  }
end;
end.

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 15:52
Masygreen
А еще подскажите почему иногда кнопка съезжает в сторону если подключаешь несколько ресурсов?
Чтоб этого избежать, хотел завязаться координаты вышестоящей кнопки, но тоже как-то мимо...

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

    if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk) //cfsGetCurrentContainerSelf
    {

      var
       _ii:integer;
      cfsGetProp('M_UP::NAKL502.EDITSOPR.SCRHEADER.b_SCRHEADER_Формирование_прихода', cfpOrigin_X,_ii);
      message(_ii);

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 17:26
m0p3e
Проблема точно в нескольких ресурсах?
Может FontSize разные? ;)

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 17:56
Masygreen
m0p3e писал(а):Проблема точно в нескольких ресурсах?
Может FontSize разные? ;)
Точно, на 1 пункт различались... визуально незаметно было ..
Чего делать ? Забивать константы под использванные фонтсайзы? или можно динамикой отработать ?

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 17:59
edward_K
Надежней ExtendFormats - сразу попадаете куда нужно без танцев с бубнами.
Есть правда тонкости с панелями и т.п,, что без исходников не всегда понятно куда надо.
Но ТП думаю не откажет в паре файликов. Ну или сюда пишите = кто нибудь поделится.
А что вывело ii? Вам нужно на шрифте 8/8 добавить кнопку, подсмотреть x и y эталоного объекта
а потом в пропорции добалять свой объект. Ну или подбирать коэффициенты.
Мне как то надоело и я добавил пару настроек, чтобы регулировать на ходу.

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 18:07
m0p3e
Я темку создавал по этой проблеме. viewtopic.php?f=8&t=13190

Но в данном случае лучше делать как Edward_K советует. ExtendFormats.

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 18:18
Masygreen
edward_K писал(а):Надежней ExtendFormats - сразу попадаете куда нужно без танцев с бубнами.
Есть правда тонкости с панелями и т.п,, что без исходников не всегда понятно куда надо.
Но ТП думаю не откажет в паре файликов. Ну или сюда пишите = кто нибудь поделится.
А что вывело ii? Вам нужно на шрифте 8/8 добавить кнопку, подсмотреть x и y эталоного объекта
а потом в пропорции добалять свой объект. Ну или подбирать коэффициенты.
Мне как то надоело и я добавил пару настроек, чтобы регулировать на ходу.
Доступ к исходникам есть, ExtendFormats в хелпе какое-то куцее описание .. если есть пример и не жалко поделитесь знаниями

ii - выело 0, походу не достучался я по этой строке, ну наверно это правильно т.к. объект же на лету создается или как оно там происходит ..

Идея была взять координаты нижней кнопки и просто сместить свою вниз на двойную ширину .. хм ...

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 18:22
Masygreen
Идея с коэффициентами понятна, только ради одной кнопки огород городить. Хотя где одна кнопка там и две .. и т.п.
Всё таки отскочить от уже существующего объекта было бы проще... (

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 24 май 2018, 20:03
m0p3e
Masygreen писал(а):Идея с коэффициентами понятна, только ради одной кнопки огород городить. Хотя где одна кнопка там и две .. и т.п.
Всё таки отскочить от уже существующего объекта было бы проще... (
Если кажется, что проще через коэффициенты, то в теме что я давал выше, как раз эта идея реализована. Читаются координаты текущей кнопки и расcчитываются коэффициенты. Только там это вынесено в отдельный объект и делается один раз при входе в систему. По аналогии можно применить и локально.

Но я за ExtendFormats. :)

Re: Докомпиляци "M_UP::IMNFINTRF" Накл. на приход ГП\Межцехо

Добавлено: 25 май 2018, 02:04
edward_K
Вот пример

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

ExtendFormats SCFILTERDO;
Window winFilterDO 'Установка фильтров' EscClose, Gray;
#IFDEF _MY_
  Show at(, , 76, 22);
#ELSe
  Show at(, , 76, 18);
#ENDIF
Panel paFilterDO;
  NoTableNavigation;
Screen scFilterDO ('', hcLok_Filtr_doc, sci13EnEsc);
  Show at(, , , 21);
#IFDEF _MY_
Fields
  wFltDop : NoProtect;
  FltKatNazna.Name ('Выберите назначение'        , , ): Protect, PickButton;
//********************************************************************************
#ENDIF
<<

















  Дополнительно фильтровать по  
  [.] Назначению` .@@@@@@@@@@@@@@@@@@@@@@@@@
>>  
end;
....
Самое сложное - сосчитать кол-во пустых строк.
Я обычно копирую формат экрана, пишу куда нужно, а лишнее очищаю строку/забиваю пробелами.
Полезно в комментарих записать куда вы метите - пригодится при измении формата.
Есть еще умельцы - вставляют поле куда нибудь, а потом сдвигают все поля с этой строки и ниже вниз. Есть одно но - если объект скрыт, то все его координаты в 0-ле. Надо его отобразить, прочитать координаты и скрыть снова.