Всегда запускается одно и тоже окно

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Всегда запускается одно и тоже окно

Сообщение 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. В чём может быть причина такого поведения окон ?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение Den »

Процедура RunWindow

Назначение

Открывает окно, описанное в разделе window.

Описание

procedure RunWindow (windowNumber : integer);
Параметры

windowNumber : integer - номер окна.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение BlazeBio »

Den писал(а):Процедура RunWindow

Назначение

Открывает окно, описанное в разделе window.
Den, если загнать кнопки в окно, то при инициализации интерфейса iServePlan видно только пустое окно без кнопок ?!
LaaLaa

Re: Всегда запускается одно и тоже окно

Сообщение LaaLaa »

вместо

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

CloseWindow('mc');
надо

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

CloseWindow(mc);
тип параметра число
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение BlazeBio »

LaaLaa писал(а):вместо

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

CloseWindow('mc');
надо

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

CloseWindow(mc);
тип параметра число
Если опустить ковычки, то компилятор выдаёт ошибку:"Нет такого поля, метода..."
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение BlazeBio »

Окно window mc открывается даже по двойному щелчку мыши в любом месте скрина...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всегда запускается одно и тоже окно

Сообщение edward_K »

обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение Screw »

Если очень уж нужно использовать CloseWindow до описания окна, заведите целочисленную переменную, значение которой можно инициализировать где-нить в cmInit интерфейса, и используйте её в вызове CloseWindow.

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

  longint SomeWindowNumber;

  ...
  CloseWindow(SomeWindowNumber);
  ...

  handleevent
    cmInit: {
      ...
      SomeWindowNumber := mc;
      ...
    }
    ...
  end;
Виталий
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение BlazeBio »

edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.
Пытался RunAnyView('interface iServePlan.mc',false), RunAnyView('iServePlan.mc',false) и RunAnyView('mc',false) - пишется сообщение, что не найден интерфейс с выражением в ковычках в RunAnyView.В чём может быть дело ? Может эта процедура не работает с окнами ? И как включить все предупреждения в vip.cfg ?
Получилось открыть нужное окно RunWindow, и то только тогда, когда использовал идентификаторы в cmInit. :grin:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всегда запускается одно и тоже окно

Сообщение edward_K »

RunAnyView('window mc',false) попробуйте, но вообще для окон не разу не использовал. runWindow c индефикатором окна всегда хватало. Просто окна перенесите в начало фейса и все. Обычно перееменные(которые не нужны во вью для фильтров), вью, формы, функции, окна, главное окно, главный обработчик. для функции есть возможность объявить ее в начале(forward), а описать позже.
LaaLaa

Re: Всегда запускается одно и тоже окно

Сообщение LaaLaa »

edward_K писал(а):обычно вызываемые окна пишут вначале а не в конце - потому и ругается. Если хотите в качестве строки вызывать, то есть RunAnyView. А так во всех функциях по работе с окнами форматами и так далее нужно писать индетификатор окна. Вообще внимательно следите за логом компиляции(и включите все возможные предупреждения в vip.cfg) - наверняка будете удивлены сколько там у вас мусора. Опыт показывает , что сведение предупреждений к нулю устраняет кучу огрехов в работе фейса.

А еще в разделе [vip] в настройке компилятора можно включить параметр StrictVip=on:
StrictVip
Тип Да/Нет

Назначение Усиливает "строгость" языка. Выдает предупреждения:
если отсутствует "точка с запятой" после оператора, если за ним следует еще один оператор;
если после секции var отсутствует запятая.

По умолчанию выключен.

Синоним
/sv+
/sv-

Пример использования
StrictVip=on
В настройках Viper - это пункт "Усилить строгость языка"
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всегда запускается одно и тоже окно

Сообщение edward_K »

в cfg
[Compilers]
ErrorLevel=2
очень желательно
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Всегда запускается одно и тоже окно

Сообщение BlazeBio »

Проверил: ErrorLevel=2 уже стояла, а StrictVip=on добавил.
RunAnyView('window mc',false) не работает. Ошибка нет ресурса.
LaaLaa

Re: Всегда запускается одно и тоже окно

Сообщение LaaLaa »

BlazeBio писал(а):Проверил: ErrorLevel=2 уже стояла, а StrictVip=on добавил.
RunAnyView('window mc',false) не работает. Ошибка нет ресурса.
:) совет был не по этой теме, имел в виду в общем диагностику правильности кода.

а RunAnyView - на WIndow в принципе не действует.
Ответить