Параметры в Browse

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

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

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

Параметры в Browse

Сообщение BlazeBio »

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

Re: Параметры в Browse

Сообщение BlazeBio »

Перефразирую вопрос. Как организовать взаимосвязь двух фейсов по параматрам одного browse с параметрами другого browse по типу как в актах на приём услуг, или актах на комплектование , или в приходных накладных и т.д.
Вот один фейс:

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

interface Plan 'Производственные планы';
 show   at   (,,76,25);
 var name: string;
 	 data:date;
 	 status:string;
 	 podr:string;
 	 t_plan:string;
 	 	 	 browse bPPlan(,,sci178EnEsc);
 	 	 	 	 fields

 	 	 	 	 	 data   'Дата' : [15] , protect, noAutoSize;
 	 	 	 	 	 name   'Номер плана' : [25], protect, noAutoSize;
 	 	 	 	 	 status 'Статус' : [7], protect,noAutoSize;
 	 	 	 	 	 podr   'Подразделение' : [25] , protect, noAutoSize;
 	 	 	 	 	 t_plan 'Тип плана' : [4], protect, noAutoSize;
 	 	 	 end;
 	 handleevent
	 	 cmDefault:
	 	 {
	 	 	 RunInterface('PlanCorrect',data,name,status,podr,t_plan);
		 }
		 cmDelete://F8
		 {var a:integer;
		 	a:=1;
		 }
		 cmInsert://F7
		 {			 var a:integer;
							a:=2;
		 }
		 cmDefault://Enter
		 {
		 }
		 cmClose://Esc
		 {
		 }
 	 end;
 end.
Вот второй фейс:

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

interface PlanCorrect 'Редактирование планов';
show at (,,83,25);
var
	data :date;
	namePPlan :string;
	podr :string;
	status :string;
	t_plan :string;
	line: string;
	group_i:string;
	name : string;
	percIs:double;
	TechLoss:double;
	UnitMeasure:string;
	Vsego:double;
	Fdec:double;
	Sdec:double;
	Tdec:double;

parameters data,namePPlan,status,podr,t_plan;
		panel p_sCorPPlan;
		show at (,,,8);
			screen sCorPPlan;
			bevel be1 {4,0,79,7,bsRaised, bsFrame};
				fields
					data :pickButton;
					namePPlan:noprotect;
					podr :pickButton;
					status :pickButton;
					t_plan :pickButton;
					line: pickbutton;
					group_i:pickbutton;
			buttons
				cmAddMc;
<<

          Дата            Номер плана              Структурное подразделение
        .@@@@@@@@@       .@@@@@@@@@@@@           .@@@@@@@@@@@@@@@@@@@@@@@@@@

               Статус               .@@@@@@@@@@@      Тип плана.@@@@@@@@@@@@
               Линия      .@@@@@@@@@@@@@@@@@@@@@      Группа  .@@@@@@@@@@@@@

                                                      <.Добавить матценность.>

>>
			end;
		end;
		panel p_bCorPPlan;
		show at (,9,,)
			browse bCorPPlan(,,sci178EnEsc);
				fields
					name 'Наименование' : [20], pickButton;
					percIs'Процент','1 сорта,%': [6],noprotect;
					TechLoss 'Техпотери, %':[8],noprotect;
					UnitMeasure 'Единица','измерения':[7],pickButton;
					Vsego 'Всего':[12],Skip;
					Fdec 'Первая','декада':[10],noprotect;
					Sdec 'Вторая','декада':[10],noprotect;
					Tdec 'Третья','декада':[10],noprotect;
			end;
		end;
handleEvent
	cmAddMc:
	        {
				RunInterface('AddMC');
		    }
		cmPick:
		{
		  var res : word;

		  case CurField of
			#name:
			  res := RunInterface('PickMC',name);
			#UnitMeasure:
			  res := RunInterface('MeashureUnits',UnitMeasure);
		  end;
		  	RescanPanel(sCorPPlan);
			RescanPanel(bCorPPlan);
		}
		cmCancel: begin
		  CloseInterface(cmDefault); 
		  stop; 
		  end;
		cmCheckField:
 		{
			vsego:=Fdec+Sdec+Tdec;
			RescanPanel(bCorPPlan);
		}
end;
end.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Параметры в Browse

Сообщение edward_K »

То есть вы хотите что бы 2 фейса были на экране и изменения в одном приводили к изм. в другом?
самый лучший выход объединить их в один через Embedded ну и какие то события связать.
Проще использовать в качестве буфера глобальные переменные(или таблицу) а когда оттуда забирать проверять по Notify/
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Параметры в Browse

Сообщение edward_K »

в сопроводительных документах кстати все проще - по F4 вызывается немодальное окно и все
getifccurrentfieldname видать вы не знаете раз вам кажется что там 2 фейса.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Параметры в Browse

Сообщение BlazeBio »

edward_K писал(а):в сопроводительных документах кстати все проще - по F4 вызывается немодальное окно и все
То есть получается почти во всех фейсах Галактики используется один Interface, остальные это просто window, входящие в Interface.
А если объединять фейсы? То должно получится нечто такое?:

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

embedded scOne interface plan;
end;
embedded scOne interface plan.plancorrect;
end;
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Параметры в Browse

Сообщение Screw »

Кое-где (см., например, интерфейс редактирования режимов работы в "Зарплате" или "Кадрах") практикуется переключение режима в главном окне - из просмотра в редактирование и обратно (по Esc).
Между собой вставленные в десктоп интерфейсы (но не встроенные в контейнер) могут общаться с помощью рассылки широковещательных сообщений (см. прикладные функции Notify и GetNotificationInfoPtr).
Виталий
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Параметры в Browse

Сообщение BlazeBio »

Screw писал(а):Между собой вставленные в десктоп интерфейсы (но не встроенные в контейнер) могут общаться с помощью рассылки широковещательных сообщений (см. прикладные функции Notify и GetNotificationInfoPtr).
Где можно узнать об этих функциях?
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Параметры в Browse

Сообщение Screw »

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

Re: Параметры в Browse

Сообщение BlazeBio »

Screw, получается, что Notify нужна для того,чтобы во всех событиях фейса, указанных в Notify, выполнялась, допустим например, прорисовка полей в панелях интерфейсов. Не совсем ясно тогда зачем используется Abort или Stop при описании Notify, и как мне узнать, куда ставить Abort и Stop?
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Параметры в Browse

Сообщение Screw »

Нет. Notify заставляет приложение послать всем вставленным в десктоп интерфейсам нужную нам команду. Например, cmClose :) А вот что в тех интерфейсах делается по этой команде - дело интерфейсов. Может они и не обрабатывают такой команды вообще. Команду можно использовать как запрос. Тот интерфейс, который в обработчике посланной команды выполнит Stop, прервет рассылку, и его хэндл вернется в качестве результата выполнения Notify.

Применительно к обсуждаемой ситуации: интерфейс-редактор делает Notify(cmMyDataAreChanged, 0), интерфейc-вьювер обрабатывает:

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

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

Re: Параметры в Browse

Сообщение BlazeBio »

:cool: Спасибо за разъяснения, Screw!
Ответить