|
|
|
ReadOnly Grid с перемещением по строкам и столбцам
|
|||
|---|---|---|---|
|
#18+
Вопрос к корифеям PowerBuilder. Есть такое представление datawindow как grid. Все бы хорошо но нет такого режима отображения данных для чтения как в 1С. Типа можно ходить по строкам и колонкам, а для редактирования нужно нажать заветную комбинацию (типа Enter). Т.е. конечно не все так просто и не совсем так в PB... Но, например, есть DW типа grid. Нам нужно сделать его только для просмотра и при этом дать возможность пользователю перемещаться по строкам и столбцам, чтобы он видел в любой момент в какой ячейке он находится, например, для последующего наложения фильтра и т.д.(Protect не подходит т.к. блокирует вообще доступ, taborder тоже не дает получить фокус). Решение типа return 2 в событии itemchanged не подходит, т.к. юзер изменяет данные на экране при нажатии на батоны на клавиатуре, а результат возвращается к исходному только после смены колонки или строки. Здесь вообще проблемы: "Я же все вводил, куда все пропало?". В событии editchanged нет возможности заблокировать стандартную обработку ввода. Колонки с со стилем Edit можно установить DisplayOnly, для EditMask можно установить ReadOnly. Проблемы начинаются когда в DW появляется DDDW. Нет возможности перехватить событие нажатия клавиш "стрелка вверх" и "стрелка вниз". Соответсвенно юзер хочет переместиться на предыдущую строку и получается изменяет dddw. Вообщем не долго мучаясь я решил реализовать все на фильтрах в child. Т.е. при попадании фокуса в dddw накладывается динамический фильтр (а при потери фокуса снимается) в котором только значение отображаемое на экране. При этом при нажатии стрелки вверх/вниз изменение значения не просходит, но все равно отследить их нажатие не возможно. Еще чуть не забыл... Есть решение: dw_1.Modify("DataWindow.ReadOnly=Yes"). Но опять же нет возможно перемещаться по колонкам. Может я просто не нашел решения. Может уже кто-то решал подобную проблему. Подскажите решение plz. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 16:43 |
|
||
|
ReadOnly Grid с перемещением по строкам и столбцам
|
|||
|---|---|---|---|
|
#18+
lbarondw_1.Modify("DataWindow.ReadOnly=Yes"). Но опять же нет возможно перемещаться по колонкам. Хорошее решение. Именно так у нас интерфейс и реализован. То есть user бегает по DW в режиме просмотра, а для редактирования нажимает Enter или DoubleClick мыши. Для отображения текущей позиции (ячейки) использовали варианты: - изменение цвета фона (а ля 1C) - прорисовка вокруг ячейки цветного прямоугольника (а ля Excel) Программирование подсветки (прямоугольника) производится на событии ItemFocusChanged. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 16:58 |
|
||
|
ReadOnly Grid с перемещением по строкам и столбцам
|
|||
|---|---|---|---|
|
#18+
А нельзя ли что-то типа примерчика... plz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:17 |
|
||
|
ReadOnly Grid с перемещением по строкам и столбцам
|
|||
|---|---|---|---|
|
#18+
column = GetColumnName() st = column+'.Background.Color' S_Color = Describe(st) i = Pos(S_Color,'~t') if (i = 0) then s = '"'+S_Color+'~tif(currentrow() = getrow(),'+String(color)+','+S_Color+')"' else s = Replace(S_Color,i,1,'~tif(currentrow() = getrow(),'+String(color)+',') s = Replace(s,len(s)-1,0,')') end if Modify(st+'='+s) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 18:41 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32959330&tid=1338481]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 483ms |

| 0 / 0 |
