Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 data window Grid.  [new]
durban2
Member

Откуда:
Сообщений: 137
Надо отредактировать одну строку
В data window Grid.
Остальные строки должны быть недоступными.
Into event 'doubleclicked' on datawindow into dialog window

PS: object DataWindow имеет 7 столбцов,
В свойстве ‘protect’
Каждого столбца стоит выражение
IF (IsRowNew(), 0, 1)
Для добавления новой строки в конец data window or
Перед текущей строкой – выражение
IF (IsRowNew(), 0, 1)
правильно работает.

Был совет на форуме ( сейчас топик отсутствует):
автор
создаете в дв компьют например c_edit_row со значением

Как я понял из вышесказанного надо создать вычисляемое поле.
В object DataWindow, в выпадающем окне элементов управления
Предлагается несколько типов вычисляемых полей:
Averaging, counting, page n from nnn и т.д.
Выбрал ‘computed field’ – оно не содержит поля
В свойствах которого имеется ‘Protect’
Ну поменяю имя вычисляемого поля ‘compute_1‘ на ‘c_edit_row’
Чтобы Вашу подсказку пытаться реализовать, т.к. сам – НИ ГУ-ГУ,
раз на форум вышел с этой проблемой.

Посколько поле Protect я не могу создать,
То дальнейшее теряет смысл:
автор
в выражении protect ставим что-то такое:
IF (GetRow()=c_edit_row, 1, 0)

на doubleclick вешаем:
this.Modify('c_edit_row.expression=~''+string(clicked_row)+'~'')

Где НЕ ТАК я делаю ?

К сообщению приложен файл. Размер - 0Kb
15 янв 08, 12:00    [5153567]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
spas2001
Member

Откуда: Тамбов--->Москва-->Тамбов-->Москва-->Тамбов
Сообщений: 2010
Пришел некто к программеру и спрашивает:
- Где у меня ошибка?
- Где-где, в ДНК!

На самом деле все просто
Свойство протект пишется в требуемое поле, просто ориентируется оно на компьют
ЗЫ: Ник Владимир2 можно было оставить.
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
15 янв 08, 13:01    [5154087]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
durban2
Надо отредактировать одну строку

какую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?
15 янв 08, 16:46    [5156009]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
durban2
Member

Откуда:
Сообщений: 137
автор
какую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?

event DoubleClicked на любой строке dATAwINDOW
В каждом столбце в свойстве объекта DataWindow
поставил выражение
IF (IsRowNew(), 0, 1)
15 янв 08, 18:16    [5156689]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
durban2
автор
какую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?

event DoubleClicked на любой строке dATAwINDOW
В каждом столбце в свойстве объекта DataWindow
поставил выражение
IF (IsRowNew(), 0, 1)

Ну значит нужено как то этот факт doubleclicked зафиксировать.
Поскольку хранить что-то в каждой строке можно только в буфере DW,
то надо завести поле, которое будет в запросе константой ( SELECT ...., 0 as allow_edit ... ) и выставлять его по doubleclicked в 1.
соответственно его и использовать в expression для Protect.
15 янв 08, 18:44    [5156832]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
с новым годом
Guest
еще раз с компьютом (подходит только если строка для редактирования всегда одна):

1. создаем "compute field" c_edit_row со значением 0 (ноль)
2. во всех столбцах расширяем св-во protect и пишем там:
IF (IsRowNew() or c_edit_row=GetRow(), 0, 1)
3. в событии doubleclicked пишем
this.Modify("c_edit_row.expression=~'"+string(clickedrow)+"~'")

если строк для редактирования несколько - используем решение от "ЗоринАндрей"
16 янв 08, 10:35    [5158442]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
durban2
Member

Откуда:
Сообщений: 137
автор
с новым годом

автор
еще раз с компьютом (подходит только если строка для редактирования всегда одна):
1. создаем "compute field" c_edit_row со значением 0 (ноль)
2. во всех столбцах расширяем св-во protect и пишем там:

IF (IsRowNew() or c_edit_row=GetRow(), 0, 1)
3. в событии doubleclicked пишем
this.Modify("c_edit_row.expression=~'"+string(clickedrow)+"~'")


СПАСИБО БОЛЬШОЕ,
РАБОТАЕТ,
НО
ЗАБЛОКИРОВАНА КЛАВИАТУРА - КЛАВИШИ
TAB и ENTER

не работают, когда хочу перейти в другой столбец для
ввода информации
17 янв 08, 11:27    [5164338]     Ответить | Цитировать Сообщить модератору
 Re: data window Grid.  [new]
Mykola
Member

Откуда:
Сообщений: 615
use Master - Detail .
2 мар 08, 01:12    [5359035]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить