Re: Как добавить кнопку в стандартный интерфейс
Добавлено: 20 сен 2012, 11:28
в поиске наберите 'PanelInputLine' - там много чего вывалит ....
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://asu.tyumbit.ru/
например, вот в этой ссылке :zna писал(а):Спасибо за подсказку, edwadr_k.
Всё же нет ясности по объекту PanelInputLine, коллеги, у кого есть доступ к исходникам, выложите пример. Документацию излазил, ссылок действительно, полтыщи, но это всё перечисление полей к res-файлам, и толку от них для понимания - ноль. На этом форуме такой объект ещё не обсуждался.
Код: Выделить всё
alter interface VSCHETB;
create view
var s1 : string;
nrecorg : comp;
from katorg katorg_al
;
window WVSCHET;
const
cmBut = 9987;
cmPanelInput = 11111;
end;
HandleEvent
cmInit:
{
inherited::handleEvent(cmInit);
if (cfsSetCurrentContainer('L_BASEDOC::vschetb') <> 0) {
Message(''#3'Ошибка установки контейнера L_BASEDOC::vschetb', Error);
Exit;}
var l1, l2: longint;
cfsCreateObject('Button', 'SCVSCHET', 'cmMnPlan', False, l1);
cfsSetProp(l1, cfpOrigin_X, 278);
cfsSetProp(l1, cfpOrigin_Y, 201);
cfsSetProp(l1, cfpSize_X, 77);
cfsSetProp(l1, cfpSize_Y, 19);
cfsSetProp(l1, cfpTitle, 'Кнопка');
cfsSetProp(l1, 'Command', cmBut);
! if cfsCreateObject('PanelInputLine', 'SCVSCHET', 'cmPanelInput', FALSE, l2) = cfErrCreateObjectError
if cfsCreateObject('PanelInputLine', 'SCVSCHET', 's1', FALSE, l2) = cfErrCreateObjectError
{
Message(''#3'Ошибка создания cPanelInput, cfErrCreateObjectError = '+cfErrCreateObjectError, Error);
}
cfsSetProp(l2,'Size_X',179);
cfsSetProp(l2,'Size_Y',12);
cfsSetProp(l2,'Origin_X', 359);
cfsSetProp(l2,'Origin_Y', 204);
if cfsSetProp(l2, 'StatusCtx', sci1378Esc) <> cfOk then message(''#3'Ошибка StatusCtx', Error);
if cfsSetProp(l2, 'pickButton', cmPick) <> cfOk then message(''#3'Ошибка pickButton', Error); ;
}
cmBut:
{
message('gotcha!');
}
cmPanelInput:
{
}
end;
end;
TableEvent Table BaseDoc;
cmPick:
{
case curfield of
#s1:{
if (RunInterface('L_katorg::GetKatOr', nrecorg, 0, false, 0, 0) = cmDefault)
if getfirst katorg_al where ((nrecorg == katorg_al.nrec))=tsok
s1:=katorg_al.name;
}
end;
(inherited :: HandleEvent (cmPick)=heOk)
}
end;
end.
Код: Выделить всё
nrecmn :=0;
if (RunInterface('M_MNPLAN::MNPLDISP', 1, 17, nrecmn) = cmDefault)
...
M_MNPLAN::GetMnplan использую.zna писал(а):Мне же надо получить наименование из списка Производственных заказов.
Код: Выделить всё
alter interface IRSPMNPLAN;
var lButSP1: longint;
overload Function InitVidWindow : Boolean; end;
Function InitVidWindow : Boolean;
{
if inherited::InitVidWindow = true and PWORKTYPE = 17 then
{
if cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk then
{
if cfsCreateObject ('Button','SCRMNPLAN','cmButSP1',true, lButSP1) = cfOk then
{
cfsCreateObject ('Button','SCRMNPLAN','cmButSP1',false,lButSP1)
cfsSetProp(lButSP1, cfpOrigin_X, word(476));
cfsSetProp(lButSP1, cfpOrigin_Y, word(83));
cfsSetProp(lButSP1, cfpSize_X, word(117));
cfsSetProp(lButSP1, cfpSize_Y, word(24));
cfsSetProp(lButSP1, cfpTitle, 'Обновить по ДО');
cfsSetProp(lButSP1,'StatusCtx', sci13Esc);
cfsSetProp(lButSP1,'Command', cmButSP1);
cfsSetProp(lButSP1, cfpVisible, true);
}
}
}
}
handleevent
cmButSP1:
{
if isvalid(tnmnplan) then
{
runinterface('Read_BaseDoc', mnplan.nrec); // Здесь обрабатывается спецификация ПЗ нормально
rescanpanel(tnspmnplan); // Не обновляется browse со спецификацией ПЗ
}
}
end;
end.
Код: Выделить всё
alter interface IRSPMNPLAN;
var lButSP1: longint;
create view as select * from spmnpl, valspmnp where((mnplan.nrec==spmnpl.cmnplan and spmnpl.nrec==valspmnp.cspmnpl));
overload Function InitVidWindow : Boolean; end;
...
cmButSP1:
{
if isvalid(tnmnplan) then
{
runinterface('Read_BaseDoc', mnplan.nrec);
message('UpdateTable = '+ UpdateTable); // Здесь TRUE
iScrSp.SetGetParam
(
LongInt(10000), // Был выполнен алгоритм из шапки документа,
word(1) , // сообщаем встроенному пользовательскому интерфейсу
comp(0) ,
Double(0) ,
LongInt(0) ,
word(0) ,
to_Date(0,0,0),
_datetime(0,0,0,0,0,0,0),
string('')
);
Rereadrecord(tnmnplan);
Rereadrecord(tnspmnplan);
Rereadrecord(tnspmnpl);
Rereadrecord(tnvalspmnp);
if getfirst spmnplan = 0
and getfirst spmnpl = 0
and getfirst valspmnp = 0 then message('GetFirstAll = > Ok!'); //Здесь Оk!
}
}
Код: Выделить всё
cmButSP1:
{
if isvalid(tnmnplan) then
{
runinterface('Read_BaseDoc', mnplan.nrec);
var wCurVid : word;
wCurVid := iSetPl.GetCurVid;
ioM.LockScr();
iSetPl.ResetAllWayValue();
IsetPl.setCurVid(wCurVid);
iSetPl.InitAll(MNPLAN.cWayAccou);
gldt.GetMainInter.SetKolCol(string( iSetPl.GetNumSetKolCol(gldt.GetCurVid())));
ioM.UnLockScr();
iOm.EventSetParVid(0);
iScrSp.SetGetParam
(
LongInt(10000), // Был выполнен алгоритм из шапки документа,
word(1) , // сообщаем встроенному пользовательскому интерфейсу
comp(0) ,
Double(0) ,
LongInt(0) ,
word(0) ,
to_Date(0,0,0),
_datetime(0,0,0,0,0,0,0),
string('')
);
if getfirst spmnplan = 0
and getfirst spmnpl = 0
and getfirst valspmnp = 0 then {}
}
}