Параметры в Browse
Модераторы: m0p3e, edward_K, Модераторы
Параметры в Browse
Каким способом можно передаваемые параметры из одного фейса вставить, удалить, обновить в определённой строке брауза второго фейса? (Предполагается, что изначально брауз пуст)
Re: Параметры в Browse
Перефразирую вопрос. Как организовать взаимосвязь двух фейсов по параматрам одного 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.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Параметры в Browse
То есть вы хотите что бы 2 фейса были на экране и изменения в одном приводили к изм. в другом?
самый лучший выход объединить их в один через Embedded ну и какие то события связать.
Проще использовать в качестве буфера глобальные переменные(или таблицу) а когда оттуда забирать проверять по Notify/
самый лучший выход объединить их в один через Embedded ну и какие то события связать.
Проще использовать в качестве буфера глобальные переменные(или таблицу) а когда оттуда забирать проверять по Notify/
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Параметры в Browse
в сопроводительных документах кстати все проще - по F4 вызывается немодальное окно и все
getifccurrentfieldname видать вы не знаете раз вам кажется что там 2 фейса.
getifccurrentfieldname видать вы не знаете раз вам кажется что там 2 фейса.
Re: Параметры в Browse
То есть получается почти во всех фейсах Галактики используется один Interface, остальные это просто window, входящие в Interface.edward_K писал(а):в сопроводительных документах кстати все проще - по F4 вызывается немодальное окно и все
А если объединять фейсы? То должно получится нечто такое?:
Код: Выделить всё
embedded scOne interface plan;
end;
embedded scOne interface plan.plancorrect;
end;
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
Re: Параметры в Browse
Кое-где (см., например, интерфейс редактирования режимов работы в "Зарплате" или "Кадрах") практикуется переключение режима в главном окне - из просмотра в редактирование и обратно (по Esc).
Между собой вставленные в десктоп интерфейсы (но не встроенные в контейнер) могут общаться с помощью рассылки широковещательных сообщений (см. прикладные функции Notify и GetNotificationInfoPtr).
Между собой вставленные в десктоп интерфейсы (но не встроенные в контейнер) могут общаться с помощью рассылки широковещательных сообщений (см. прикладные функции Notify и GetNotificationInfoPtr).
Виталий
Re: Параметры в Browse
Где можно узнать об этих функциях?Screw писал(а):Между собой вставленные в десктоп интерфейсы (но не встроенные в контейнер) могут общаться с помощью рассылки широковещательных сообщений (см. прикладные функции Notify и GetNotificationInfoPtr).
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
Re: Параметры в Browse
Обсуждалось тут: http://www.tyumbit.ru/gal_forum/viewtop ... lit=notify и тут: http://www.tyumbit.ru/gal_forum/viewtop ... lit=notify
Виталий
Re: Параметры в Browse
Screw, получается, что Notify нужна для того,чтобы во всех событиях фейса, указанных в Notify, выполнялась, допустим например, прорисовка полей в панелях интерфейсов. Не совсем ясно тогда зачем используется Abort или Stop при описании Notify, и как мне узнать, куда ставить Abort и Stop?
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
Re: Параметры в Browse
Нет. Notify заставляет приложение послать всем вставленным в десктоп интерфейсам нужную нам команду. Например, cmClose
А вот что в тех интерфейсах делается по этой команде - дело интерфейсов. Может они и не обрабатывают такой команды вообще. Команду можно использовать как запрос. Тот интерфейс, который в обработчике посланной команды выполнит Stop, прервет рассылку, и его хэндл вернется в качестве результата выполнения Notify.
Применительно к обсуждаемой ситуации: интерфейс-редактор делает Notify(cmMyDataAreChanged, 0), интерфейc-вьювер обрабатывает:

Применительно к обсуждаемой ситуации: интерфейс-редактор делает Notify(cmMyDataAreChanged, 0), интерфейc-вьювер обрабатывает:
Код: Выделить всё
handleevent
cmMyDataAreChanged: ReScanPanel; // или типа того
...
end;
Виталий
Re: Параметры в Browse
