Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / data window Grid. / 8 сообщений из 8, страница 1 из 1
15.01.2008, 12:00
    #35062077
durban2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
Надо отредактировать одну строку
В 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)+'~'')
Где НЕ ТАК я делаю ?
...
Рейтинг: 0 / 0
15.01.2008, 13:01
    #35062370
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
Пришел некто к программеру и спрашивает:
- Где у меня ошибка?
- Где-где, в ДНК!

На самом деле все просто
Свойство протект пишется в требуемое поле, просто ориентируется оно на компьют
ЗЫ: Ник Владимир2 можно было оставить.
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
15.01.2008, 16:46
    #35063332
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
durban2Надо отредактировать одну строку
какую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?
...
Рейтинг: 0 / 0
15.01.2008, 18:16
    #35063695
durban2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
авторкакую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?
event DoubleClicked на любой строке dATAwINDOW
В каждом столбце в свойстве объекта DataWindow
поставил выражение
IF (IsRowNew(), 0, 1)
...
Рейтинг: 0 / 0
15.01.2008, 18:44
    #35063766
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
durban2 авторкакую?
как Вы отличаете строку которую надо редактировать от "остальных" которые должны быть недоступными?
event DoubleClicked на любой строке dATAwINDOW
В каждом столбце в свойстве объекта DataWindow
поставил выражение
IF (IsRowNew(), 0, 1)
Ну значит нужено как то этот факт doubleclicked зафиксировать.
Поскольку хранить что-то в каждой строке можно только в буфере DW,
то надо завести поле, которое будет в запросе константой ( SELECT ...., 0 as allow_edit ... ) и выставлять его по doubleclicked в 1.
соответственно его и использовать в expression для Protect.
...
Рейтинг: 0 / 0
16.01.2008, 10:35
    #35064580
data window Grid.
еще раз с компьютом (подходит только если строка для редактирования всегда одна):

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

если строк для редактирования несколько - используем решение от "ЗоринАндрей"
...
Рейтинг: 0 / 0
17.01.2008, 11:27
    #35067629
durban2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
авторс новым годом
автореще раз с компьютом (подходит только если строка для редактирования всегда одна):
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
не работают, когда хочу перейти в другой столбец для
ввода информации
...
Рейтинг: 0 / 0
02.03.2008, 01:12
    #35165395
Mykola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
data window Grid.
use Master - Detail .
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / data window Grid. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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