|
|
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Добрый день. Возникла задача, и пока что не нашел решения. Есть окно и в нем dw_master и dw_detail. Оба dw типа Grid. Нужно, в dw_master при определенном условии не давать возможность редактировать некоторые строки. Ну для примера, строки у которых plan_date < today(). Как так сделать? Свойство protect не предлогать - т.к. есть dw_detail, и показывать информацию обязательно. но вот исправлять нельзя. DisplayOnly - тоже не подходит, т.к. имеются поля не типа Edit. спасибо, Павел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 16:27 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
авторСвойство protect не предлогать - т.к. есть dw_detail...почему не предлагать, какая связь? dataobject для DW_detail должен включать в себя интересующие нас с точки зрения запрещения редактирования поля мастера. Ну, или устанавливать protect/taborder динамически на rowfocuschanged. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:11 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
1. Если я прописываю условие в свойстве protect, то данная строка вообще не выбирается и соответсвенно детали в dw_detail я посмотреть не могу. Такой вариант не подходит. 2. Про таб ордер. Тут толи я чето ошибаюсь толи это не возможно. На собитие dw_master - roufocuschanged я составил условие: If currentrow > 0 Then is_active = This.GetItemString(currentrow, 'поле4') If is_active = 'N' Then This.Object.<поле1>.TabOrder = 0 cb_change.Enabled = False dw_detail.Object.DataWindow.ReadOnly = True Else cb_change.Enabled = True dw_detail.Object.DataWindow.ReadOnly = FALSE End If End If Как только выполняется данное условие выскакивает ошибка "error accesing external object property taborder" Где я не правильно пишу изменение TabOrder? P/s/ давно хотел спросить, как тут вставлять в сообщение часть из предыдущего сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:27 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
PashaПро таб ордер. Тут толи я чето ошибаюсь толи это не возможно. Ошибаешься. Возможно. If currentrow > 0 Then is_active = This.GetItemString(currentrow, 'поле4') If is_active = 'N' Then This.Object.<поле1>.TabOrder = 0 cb_change.Enabled = False dw_detail.Object.DataWindow.ReadOnly = True Else cb_change.Enabled = True dw_detail.Object.DataWindow.ReadOnly = FALSE End If End If Как только выполняется данное условие выскакивает ошибка "error accesing external object property taborder" Где я не правильно пишу изменение TabOrder? Везде :). Вот так будет работать: This.SetTabOrder(i, 0) P/s/ давно хотел спросить, как тут вставлять в сообщение часть из предыдущего сообщения. Слева под письмом - ссылочка "Цитировать"... делает именно то, что на ней написано... очень полезная в хозяйстве вещь :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:45 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
мда TabOrder не решил проблему как тока доходит до первогй ситуации когда выставляю 0, все дальше уже не переключится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:52 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Может itemChanged -> return 2 попробовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:10 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Pashaмда TabOrder не решил проблему как тока доходит до первогй ситуации когда выставляю 0, все дальше уже не переключится Что не переключается? Вообще говоря, у меня просто море ситуаций, когда есть связка из 2-3-4 DW по Master-Detail, и всё работает и при TabOrder = 0, и при Protected = 1. Так что оба эти варианта применимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:19 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Я так понимаю проблема в том, что если включать Protected у поля, то других разрешенных к редактированию полей нет и собственно говоря фокус на строку передать некуда ? Какие можно рассмотреть варианты: 1. Сделать в источнике данных для главного DW псевдополе, у которого всегда включен DisplayOnly 2. Обрабатывать ситуацию запрета на редактирование поля в событии dw.ItemChanged и в нужных случаях там просто запрещать изменение поля 3. Пересмотреть интерфейс формы Я бы рекомендовал пункт 3, так как лично все эти один-ко-многим всегда более сложно программируются и тяжело воспринимаются пользователями. Лично мне всегда ближе парадигма, когда в одной форме пользователь смотрит в наглядном и удобном виде данные, а для изменения выбранных вызывается в виде модальной формы визард, в котором на страничках можно достаточно легко и красиво с точки зрения интерфейса и кода, расположить сколько угодно DW многих к одному , с детальными инструкциями к каждой страничке для пользователя, плюс без заморочек в случае использования INCREMENT полей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:43 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
авторпочему не предлагать, какая связь?Вопрос снимается. offtop Какие интерфейсы народ наворачивает, потом с ними гм... мучается :-) end offtop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:54 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
PashaЕсли я прописываю условие в свойстве protect, то данная строка вообще не выбирается и соответсвенно детали в dw_detail я посмотреть не могу. Такой вариант не подходит Сие есть ерунда. Надо правильно обрабатывать Clicked event... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 19:07 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
2 Филипп: Не все пользователи любят мышь. Некоторых приложение совершенно неуправляемое с клавиатуры раздражает преизрядно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 08:57 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Ну начнем по порядку: 1)Leonid_B Может itemChanged -> return 2 попробовать? У меня сейчас реализовано, так. Уже возникало пару раз вопросов от пользователей. Вот типа я менял, а ничего не изменилось. Хотя данная ситуация в инструкции описана полностью. Хотелось бы вообще не дать им изменять. 2)ASCRUS3. Пересмотреть интерфейс формы Я бы рекомендовал пункт 3, так как лично все эти один-ко-многим всегда более сложно программируются и тяжело воспринимаются пользователями. Лично мне всегда ближе парадигма, когда в одной форме пользователь смотрит в наглядном и удобном виде данные, а для изменения выбранных вызывается в виде модальной формы визард, в котором на страничках можно достаточно легко и красиво с точки зрения интерфейса и кода, расположить сколько угодно DW многих к одному , с детальными инструкциями к каждой страничке для пользователя, плюс без заморочек в случае использования INCREMENT полей Данный модуль, это продолжение уже внедренного прог. продукта. Который проходил все стадии разработки. Так вот -первая версия, это один грид и вызов детального модального окна для просмотра и редактирования. В некоторых местах это не применимо оказалось, т.к. пользователю нужно видеть одновременно детализацию по конкретному и некоторые "заголовки" в мастере одновременно. 3)ФилиппСие есть ерунда. Надо правильно обрабатывать Clicked event... А не затруднит указать где у меня ерунда. Protect нужно устанавливать в runtime во время выбора данной строки, которая удовлетворяет определенному условию??? Я изначально в dw в поле protect прописывал данное условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 09:31 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
Я бы сделал просто подсветку строк, которые закрыты для редактирования. Оставил бы в ItemChanged() сообщение и return 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 10:47 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
gzЯ бы сделал просто подсветку строк, которые закрыты для редактирования. Оставил бы в ItemChanged() сообщение и return 2. Так сейчас и сделано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 13:48 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
автор1. Если я прописываю условие в свойстве protect, то данная строка вообще не выбирается Согласен с Филиппом. Надо в событии Clicked добавить пару строк: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 18:05 |
|
||
|
Блокировка на изменение строки в гриде
|
|||
|---|---|---|---|
|
#18+
rcryo автор1. Если я прописываю условие в свойстве protect, то данная строка вообще не выбирается Согласен с Филиппом. Надо в событии Clicked добавить пару строк: Код: plaintext 1. 2. 3. 4. a esli user iuzaet klavu ?...., pomoemu event Clicked nedostatocino budet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 18:46 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32741092&tid=1338811]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 490ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...