Страница 1 из 1
Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 16:41
BlazeBio
Код: Выделить всё
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. В чём может быть причина такого поведения окон ?
Re: Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 16:55
Den
Процедура RunWindow
Назначение
Открывает окно, описанное в разделе window.
Описание
procedure RunWindow (windowNumber : integer);
Параметры
windowNumber : integer - номер окна.
Re: Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 17:11
BlazeBio
Den писал(а):Процедура RunWindow
Назначение
Открывает окно, описанное в разделе window.
Den, если загнать кнопки в окно, то при инициализации интерфейса iServePlan видно только пустое окно без кнопок ?!
Re: Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 18:51
LaaLaa
вместо
надо
тип параметра число
Re: Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 19:00
BlazeBio
LaaLaa писал(а):вместо
надо
тип параметра число
Если опустить ковычки, то компилятор выдаёт ошибку:"Нет такого поля, метода..."
Re: Всегда запускается одно и тоже окно
Добавлено: 23 июл 2010, 20:02
BlazeBio
Окно window mc открывается даже по двойному щелчку мыши в любом месте скрина...
Re: Всегда запускается одно и тоже окно
Добавлено: 24 июл 2010, 09:29
edward_K
обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Re: Всегда запускается одно и тоже окно
Добавлено: 27 июл 2010, 15:17
Screw
Если очень уж нужно использовать CloseWindow до описания окна, заведите целочисленную переменную, значение которой можно инициализировать где-нить в cmInit интерфейса, и используйте её в вызове CloseWindow.
Код: Выделить всё
longint SomeWindowNumber;
...
CloseWindow(SomeWindowNumber);
...
handleevent
cmInit: {
...
SomeWindowNumber := mc;
...
}
...
end;
Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 11:44
BlazeBio
edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Пытался RunAnyView('interface iServePlan.mc',false), RunAnyView('iServePlan.mc',false) и RunAnyView('mc',false) - пишется сообщение, что не найден интерфейс с выражением в ковычках в RunAnyView.В чём может быть дело ? Может эта процедура не работает с окнами ? И как включить все предупреждения в vip.cfg ?
Получилось открыть нужное окно RunWindow, и то только тогда, когда использовал идентификаторы в cmInit.

Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 11:53
edward_K
RunAnyView('window mc',false) попробуйте, но вообще для окон не разу не использовал. runWindow c индефикатором окна всегда хватало. Просто окна перенесите в начало фейса и все. Обычно перееменные(которые не нужны во вью для фильтров), вью, формы, функции, окна, главное окно, главный обработчик. для функции есть возможность объявить ее в начале(forward), а описать позже.
Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 11:55
LaaLaa
edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
А еще в разделе [vip] в настройке компилятора можно включить параметр StrictVip=on:
StrictVip
Тип Да/Нет
Назначение Усиливает "строгость" языка. Выдает предупреждения:
если отсутствует "точка с запятой" после оператора, если за ним следует еще один оператор;
если после секции var отсутствует запятая.
По умолчанию выключен.
Синоним
/sv+
/sv-
Пример использования
StrictVip=on
В настройках Viper - это пункт "Усилить строгость языка"
Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 12:25
edward_K
в cfg
[Compilers]
ErrorLevel=2
очень желательно
Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 12:48
BlazeBio
Проверил: ErrorLevel=2 уже стояла, а StrictVip=on добавил.
RunAnyView('window mc',false) не работает. Ошибка нет ресурса.
Re: Всегда запускается одно и тоже окно
Добавлено: 28 июл 2010, 12:52
LaaLaa
BlazeBio писал(а):Проверил: ErrorLevel=2 уже стояла, а StrictVip=on добавил.
RunAnyView('window mc',false) не работает. Ошибка нет ресурса.

совет был не по этой теме, имел в виду в общем диагностику правильности кода.
а RunAnyView - на WIndow в принципе не действует.