Страница 1 из 1

Как разрешить/отменить возможность ред.-вставки в browse?

Добавлено: 31 мар 2008, 11:57
Ale
Доброго времени суток.
Вопрос в следующем:
есть браузер, который отображает select из физ. таблицы.
поля объявлены с sci1478esc, т.е. есть возможность редактирования-вставки-удаления записей.
Если объявлять поля как noprotect, то пользователь имеет возможность редактирования полей без нажатия F4.
Если как protect, то нажимай-ненажимай F4 - ничего не отредактируешь...
Мне бы хотелось, если это возможно, добиться от своего интерфейса галактической функциональности, т.е. в режиме просмотра браузер недоступен для ред. - вставки, возможность должна появляться только после F4-F7
Код обработчиков событий на всякий случай:

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

...
Create view L2 As select * From ValLimits where((nmc==ValLimits.ckatmc));
...
browse brw1;
fields
  ValLimits.ckatpokaz ' Показатель ' ('Показатель',hcallvsomegroup,sci1478esc):[25], noprotect; 
  ValLimits.valmin ' Мин. знач. ' ('Мин. знач.',hcallvsomegroup,sci1478esc):[25], noprotect;
  ValLimits.valmax ' Мах. знач. ' ('Мах. знач.',hcallvsomegroup,sci1478esc):[25], noprotect;
end;
handleevent
cmUpdateRecord:
{
 update current ValLimits set ValLimits.ckatmc:=nmc;
 ReScanPanel(#ValLimits);
};
cmSetDefault:
{
  ValLimits.valmin:=1;
  ValLimits.valmax:=100;   
  ReScanPanel(#ValLimits);
}
cmDeleteRecord:
{
 Delete current ValLimits;
}
cmInsertRecord:
{
 insert current ValLimits set ValLimits.ckatmc:=nmc;  
 ReScanPanel(#ValLimits);
}
end; // HandleEvent 

Добавлено: 31 мар 2008, 12:31
edward_K
brw1 ставите протект
добавляете
browse brw2
в cmEdit
ставите
setformat(brw2)
можно по переменной какой либо переключать режимы туда сюда.
хотя в галке в основном используется вызов для редактирования другого фейса. А так наверное нужно еще обработать cmClose - чтобы если находитесь в режиме редактирования переключить формат на просмотр и сделать abort. Ну если это фейс выбора, то и cmDefault тоже.

Добавлено: 31 мар 2008, 13:57
Ale
edward_K, благодарю за ответ
придется, видно, делать по-вашему...

Добавлено: 31 мар 2008, 15:12
edward_K
есть еще SetFieldOption,ClearfieldOption ну и функции конфигуратора (cfsSetProp) - тока это дольше.

Добавлено: 31 мар 2008, 15:30
Ale
попробовал сделать метод с двумя браузерами ( brw1 - protect, brw2 - noprotect)
со вставкой получилось:
при нажатии F7 происходит событие Insert,
на которое есть соотв. обработчик, в котором я переключаю браузер на brw2, далее происходит SetDefault, далее в обработчике InsertRecord переключаю обратно на brw1.
а с редактированием проблема: при нажатии F4 я хз какое событие происходит, аналогичного Insert события Update я в хелпе не обнаружил...
посему в каком месте при апдейте браузеры переключать чето не пойму

Добавлено: 31 мар 2008, 15:43
edward_K
я ж написал
cmEdit

Добавлено: 31 мар 2008, 15:51
Ale
согласно хэлпу существует ряд сист. событий

табличные события:
cmInsertRecord
cmUpDateRecord
cmDeleteRecord
в их обработчиках рекомендуется писать соответствующие sql-запросы

оконные события:
cmInsert
cmDelete
цитата "Событие возникает от статус-линии"
почему не существует аналогичного события для апдейта, при том что есть стандартная клавиша F4 - убей бог не постигаю...
мож оно есть, но не описано в хэлпе?

Добавлено: 31 мар 2008, 15:53
Ale
edward_K
не успел посмотреть ваш ответ
поэтому был крик души выше :)
буду пробовать
благодарю еще раз

Добавлено: 31 мар 2008, 16:11
Ale
edward_K
все работает как надо
спасибо!