![]() |
#1 |
Участник
|
Есть таблица. Создана для ее просмотра/модификации табличная форма.
Вопрос. Надо запретить редактирование таблицы с возможностью отмены запрета. Проблема. Если использовать Editable формы, то запрет ставится и на все контролы, расположенные на форме (кроме кнопок), что не есть гуд. Если использовать Editable отдельных полей в контейнерном элементе, то у пользователя остается возможность удаления, что не есть гуд. Если использовать Editable для контейнерного элемента, содержащего поля, то все гуд, кроме того, что я не могу получить доступ к этому свойству из кода. Подскажите, как решить задачу и обойти перечисленные проблемы. Заранее спасибо. |
|
![]() |
#2 |
Участник
|
А что мешает на таблице перекрыть метод onDelete()?? тогда можно в ней проверять и разрешать или запрещать удаление)
тогда можно перекрыть метод Editable на полях!!!
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#3 |
Участник
|
2 Himan
А заодно и метод onInsert(), т.к. юзер вставлять записи тоже может. Короче при этом способе юзер имеет полный доступ к таблице, не имея его к отдельным полям. Эхм... не нравится мне такой вариант, хотя в принципе он может стать решением. Хотелось бы услышать другие варианты, если есть. |
|
![]() |
#4 |
Участник
|
можно на форма перекрыть методы onInsert(), onDelete():
Код: IF( Code <> '' ) THEN EXIT(FALSE); Хотя это можно разрулить, типа вам это делать не льзя абратитесь к админу)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#5 |
Участник
|
У формы есть свойства InsertAllowed, ModifyAllowed и DeleteAllowed.
Они Вам не помогут? |
|
![]() |
#6 |
Участник
|
Цитата:
едиственное нехорошо если 2 таблицы)
__________________
Рабочий день сокращает жизнь на 8 часов ![]() |
|
![]() |
#7 |
Участник
|
Извиняюсь, что так долго, срочная задача отвлекла.
2 kekki Эти свойства помогли бы, но к сожалению к ним тоже нет доступа из C/AL кода. Ну что, остается только вариант Himan'а через тригеры? Больше, получается, никак не сделать? p.s. Кстати, свойство "ModifyAllowed" у меня почему-то вобще не сработало, т.е. с выставленным значением "no" все равно осталась возможность редактирования. Это вопщем странно, т.к. 2 других свойства сработали на ура и запретили вставку и удаление записей. Кто-нибудь знает, в чем дело? |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от smoyk
![]() p.s. Кстати, свойство "ModifyAllowed" у меня почему-то вобще не сработало, т.е. с выставленным значением "no" все равно осталась возможность редактирования. Это вопщем странно, т.к. 2 других свойства сработали на ура и запретили вставку и удаление записей. Кто-нибудь знает, в чем дело?
У Вас не так? |
|
![]() |
#9 |
Участник
|
Господа, сделайте так.
На форме сделайте две кнопки EditFalse и EditTrue. Наложите одну на другую. На OnPush кнопки EditTrue напишите: CurrForm.EDITABLE := TRUE; CurrForm.EditTrue.VISIBLE:=FALSE; CurrForm.EditFalse.VISIBLE:=TRUE; На OnPush кнопки EditFalse напишите: CurrForm.EDITABLE := FALSE; CurrForm.EditFalse.VISIBLE:=FALSE; CurrForm.EditTrue.VISIBLE:=TRUE; На OnOpenForm напишите: //При открытии формы, если там нет данных редактировать можно IF NOT FIND('-') THEN CurrForm.EDITABLE := TRUE ELSE //При открытии формы, если там есть данные запрещаем редактирование CurrForm.EDITABLE := FALSE; CurrForm.EditFalse.VISIBLE:=FALSE; И нет проблем. |
|
![]() |
#10 |
Участник
|
2 kekki
"Все страньше и страньше..." (с). Таже самая версия Navision, что и у Вас. Изменения проходят в таблицу. Не понимаю. Придется списать на есчо адын глюк navision (ну или на кривые руки программиста, кому как нравится ![]() Мне ведь нужно дать возможность пользователю снять запрет на редактирование таблицы. 2 kas1 Как я уже писал в этом случае доступа не будет ко всем визуальным контролам формы. Чтож, отказыватся от них? Щас начну глупо хихикать... или ругатся матом. Вопрос-то простой, неужели нет способа решить его без камасутры? Есть свойства, которые делают то, что надо, но к ним нет доступа из кода, а те свойства, к которым есть доступ из модуля делают еще и то, что не надо... Есть над чем подумать. |
|
![]() |
#11 |
Участник
|
Таким образом, как я написал пользователь может как давать доступ, так и запрещать его.
Если нужно запрет на определенные поля: ну напишите тогда CurrForm.НазваниеПоля.Editable:=FALSE Или может я не понял всей глубины проблемы??? |
|
![]() |
#12 |
Участник
|
2 kas1
Ну я же написал, что при CurrForm.EDITABLE := FALSE становятся недоступными другие контролы на форме. Это плохо. В принципе мона и без них обойтись, но этого хотелось бы избежать. А по поводу CurrForm.НазваниеПоля.Editable:=FALSE я написал в 1 посте. Блокируются поля, но не таблица, т.е. у юзера остается возможность вставки и удаления записей. Вот такая проблема. |
|
![]() |
#13 |
Участник
|
Вы же сами уже все нашли во втором посте - используйте его и не парьтесь
![]() Цитата:
Сообщение от smoyk
![]() 2 Himan
А заодно и метод onInsert(), т.к. юзер вставлять записи тоже может. Короче при этом способе юзер имеет полный доступ к таблице, не имея его к отдельным полям. Эхм... не нравится мне такой вариант, хотя в принципе он может стать решением. Хотелось бы услышать другие варианты, если есть. |
|
![]() |
#14 |
Участник
|
Ага нашел, только он мне не понравился
![]() |
|