Страница 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-ле. Надо его отобразить, прочитать координаты и скрыть снова.