powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Блокировка на изменение строки в гриде
16 сообщений из 16, страница 1 из 1
Блокировка на изменение строки в гриде
    #32738864
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Возникла задача, и пока что не нашел решения.
Есть окно и в нем dw_master и dw_detail. Оба dw типа Grid.

Нужно, в dw_master при определенном условии не давать возможность редактировать некоторые строки. Ну для примера, строки у которых plan_date < today().

Как так сделать?
Свойство protect не предлогать - т.к. есть dw_detail, и показывать информацию обязательно. но вот исправлять нельзя.
DisplayOnly - тоже не подходит, т.к. имеются поля не типа Edit.

спасибо, Павел.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32738995
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСвойство protect не предлогать - т.к. есть dw_detail...почему не предлагать, какая связь?

dataobject для DW_detail должен включать в себя интересующие нас с точки зрения запрещения редактирования поля мастера.

Ну, или устанавливать protect/taborder динамически на rowfocuschanged.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739051
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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/ давно хотел спросить, как тут вставлять в сообщение часть из предыдущего сообщения.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739111
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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/ давно хотел спросить, как тут вставлять в сообщение часть из предыдущего сообщения.
Слева под письмом - ссылочка "Цитировать"... делает именно то, что на ней написано... очень полезная в хозяйстве вещь :).
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739143
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда TabOrder не решил проблему
как тока доходит до первогй ситуации когда выставляю 0, все дальше уже не переключится
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739201
Leonid_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может itemChanged -> return 2 попробовать?
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739229
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pashaмда TabOrder не решил проблему
как тока доходит до первогй ситуации когда выставляю 0, все дальше уже не переключится
Что не переключается? Вообще говоря, у меня просто море ситуаций, когда есть связка из 2-3-4 DW по Master-Detail, и всё работает и при TabOrder = 0, и при Protected = 1. Так что оба эти варианта применимы.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739283
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю проблема в том, что если включать Protected у поля, то других разрешенных к редактированию полей нет и собственно говоря фокус на строку передать некуда ? Какие можно рассмотреть варианты:
1. Сделать в источнике данных для главного DW псевдополе, у которого всегда включен DisplayOnly
2. Обрабатывать ситуацию запрета на редактирование поля в событии dw.ItemChanged и в нужных случаях там просто запрещать изменение поля
3. Пересмотреть интерфейс формы

Я бы рекомендовал пункт 3, так как лично все эти один-ко-многим всегда более сложно программируются и тяжело воспринимаются пользователями. Лично мне всегда ближе парадигма, когда в одной форме пользователь смотрит в наглядном и удобном виде данные, а для изменения выбранных вызывается в виде модальной формы визард, в котором на страничках можно достаточно легко и красиво с точки зрения интерфейса и кода, расположить сколько угодно DW многих к одному , с детальными инструкциями к каждой страничке для пользователя, плюс без заморочек в случае использования INCREMENT полей :)
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739307
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпочему не предлагать, какая связь?Вопрос снимается.

offtop
Какие интерфейсы народ наворачивает, потом с ними гм... мучается :-)
end offtop
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739332
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PashaЕсли я прописываю условие в свойстве protect, то данная строка вообще не выбирается и соответсвенно детали в dw_detail я посмотреть не могу. Такой вариант не подходит
Сие есть ерунда. Надо правильно обрабатывать Clicked event...
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739641
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Филипп:
Не все пользователи любят мышь.
Некоторых приложение совершенно неуправляемое с клавиатуры раздражает преизрядно.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739693
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну начнем по порядку:

1)Leonid_B Может itemChanged -> return 2 попробовать?
У меня сейчас реализовано, так. Уже возникало пару раз вопросов от пользователей. Вот типа я менял, а ничего не изменилось. Хотя данная ситуация в инструкции описана полностью. Хотелось бы вообще не дать им изменять.

2)ASCRUS3. Пересмотреть интерфейс формы
Я бы рекомендовал пункт 3, так как лично все эти один-ко-многим всегда более сложно программируются и тяжело воспринимаются пользователями. Лично мне всегда ближе парадигма, когда в одной форме пользователь смотрит в наглядном и удобном виде данные, а для изменения выбранных вызывается в виде модальной формы визард, в котором на страничках можно достаточно легко и красиво с точки зрения интерфейса и кода, расположить сколько угодно DW многих к одному , с детальными инструкциями к каждой страничке для пользователя, плюс без заморочек в случае использования INCREMENT полей
Данный модуль, это продолжение уже внедренного прог. продукта. Который проходил все стадии разработки. Так вот -первая версия, это один грид и вызов детального модального окна для просмотра и редактирования. В некоторых местах это не применимо оказалось, т.к. пользователю нужно видеть одновременно детализацию по конкретному и некоторые "заголовки" в мастере одновременно.

3)ФилиппСие есть ерунда. Надо правильно обрабатывать Clicked event... А не затруднит указать где у меня ерунда. Protect нужно устанавливать в runtime во время выбора данной строки, которая удовлетворяет определенному условию??? Я изначально в dw в поле protect прописывал данное условие.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32739870
gz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gz
Гость
Я бы сделал просто подсветку строк, которые закрыты для редактирования.
Оставил бы в ItemChanged() сообщение и return 2.
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32740418
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gzЯ бы сделал просто подсветку строк, которые закрыты для редактирования.
Оставил бы в ItemChanged() сообщение и return 2.

Так сейчас и сделано
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32741092
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Если я прописываю условие в свойстве protect, то данная строка вообще не выбирается
Согласен с Филиппом. Надо в событии Clicked добавить пару строк:
Код: plaintext
1.
2.
3.
4.
// переход на указанную строку даже если поле Protect
IF row >  0  AND row <> GetRow() THEN
  SetRow(row)
END IF
Успехов!
...
Рейтинг: 0 / 0
Блокировка на изменение строки в гриде
    #32741164
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryo автор1. Если я прописываю условие в свойстве protect, то данная строка вообще не выбирается
Согласен с Филиппом. Надо в событии Clicked добавить пару строк:
Код: plaintext
1.
2.
3.
4.
// переход на указанную строку даже если поле Protect
IF row >  0  AND row <> GetRow() THEN
  SetRow(row)
END IF
Успехов!

a esli user iuzaet klavu ?...., pomoemu event Clicked nedostatocino budet.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Блокировка на изменение строки в гриде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]