const
cmMC=7200;
cmStatus=7201;
cmFormat=7202;
cmLine=7203;
Sci1478EscIns =6994;
end;
interface iServePlan'Заполнение производственных планов';
Show At (,,93,25);
panel pServe;
show at(,,,);
screen sServe
buttons
cmMC;
cmStatus;
cmFormat;
cmLine;
<<
<.МЦ.>
<.Статусы.>
<.Форматы.>
<.Линии.>
>>
end;
handleevent
cmMC:
{
RunWindow('mc');
}
cmStatus:
{
RunWindow('status');
}
cmFormat:
{
RunWindow('format');
}
cmLine:
{
RunWindow('line');
}
end;
end;
window mc
show at (,,93,25);
panel pMc
show at (,,,);
browse bMc(,,Sci1478EscIns)
table k1,cartesian;
recMarker {k2.nrec};
fields
k1.name 'Эталон':[10];
ppkatstan.name 'МЦ(Э,Л)':[10];
k2.name 'МЦ обычная':[20];
groupmc.name'Группа Мц':[15];
end;
handleevent
cmInit:
{
}
cmInsert:
{
}
cmDelete:
{
}
cmClose:
{
stop;
CloseWindow('mc');
}
end;
end;
end;
window status
show at (,,93,25);
panel pstatus
show at (,,,);
browse bstatus(,,Sci1478EscIns)
table ppstatus,cartesian;
recMarker {ppstatus.atl_nrec};
fields
ppstatus.name 'Статус документа':[10];
end;
handleevent
cmInit:
{
}
cmInsert:
{
}
cmDelete:
{
}
cmClose:
{
stop;
CloseWindow('status');
}
end;
end;
end;
window format
end;
window line
end;
end.
Два последних окна, пока не используются. При нажатии на любую из кнопок вызывается почему-то окно mc. В чём может быть причина такого поведения окон ?
обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Если очень уж нужно использовать CloseWindow до описания окна, заведите целочисленную переменную, значение которой можно инициализировать где-нить в cmInit интерфейса, и используйте её в вызове CloseWindow.
edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Пытался RunAnyView('interface iServePlan.mc',false), RunAnyView('iServePlan.mc',false) и RunAnyView('mc',false) - пишется сообщение, что не найден интерфейс с выражением в ковычках в RunAnyView.В чём может быть дело ? Может эта процедура не работает с окнами ? И как включить все предупреждения в vip.cfg ?
Получилось открыть нужное окно RunWindow, и то только тогда, когда использовал идентификаторы в cmInit.
RunAnyView('window mc',false) попробуйте, но вообще для окон не разу не использовал. runWindow c индефикатором окна всегда хватало. Просто окна перенесите в начало фейса и все. Обычно перееменные(которые не нужны во вью для фильтров), вью, формы, функции, окна, главное окно, главный обработчик. для функции есть возможность объявить ее в начале(forward), а описать позже.
edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
А еще в разделе [vip] в настройке компилятора можно включить параметр StrictVip=on:
StrictVip
Тип Да/Нет
Назначение Усиливает "строгость" языка. Выдает предупреждения:
если отсутствует "точка с запятой" после оператора, если за ним следует еще один оператор;
если после секции var отсутствует запятая.
По умолчанию выключен.
Синоним
/sv+
/sv-
Пример использования
StrictVip=on
В настройках Viper - это пункт "Усилить строгость языка"