|
|
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
Есть класс (форма с гридом на ней) для грида с переменным числом колонок. На ините грида есть инициализация колонок с привязкой события к хидеру : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. На форме с этим гридом есть событие SortByColumn : Код: plaintext 1. 2. 3. Фигня в том, что если колонка была активна (то есть курсор на ней стоял), то ActiveColumn правильно показывает. А если щелкать только по хидерам - то ActiveColumn начинает показывать на 1 колонку. А как правильно все-таки определить, на каком объекте грида пользователь щелкает мышей ? Aevents() возвращает весь грид :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 13:08 |
|
||
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
Нужно создать свой класс Header, и поменять стандртный на свой. Ну а в Click Header Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 13:28 |
|
||
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
Попробуй в твоем методе SortbyColumn через метод GridHitTest() определить значение Grid.RelativeColumn() и перевести фокус в эту колонку при помощи метода Grid.ActivateCell(Row, Column) К сожалению, идея "в лоб" связать, например, события Header.Click() и Column.SetFocus() через тот же BindEvent() не проходит. Пример использования GridHitTest() в связке с BindEvents() (правда, для VFP9) можешь посмотреть здесь Метод GridHitTest Хотя, в общем случае, прав MiklS . Без собственного класса колонки и Header - не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 23:05 |
|
||
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
strizh Фигня в том, что если колонка была активна (то есть курсор на ней стоял), то ActiveColumn правильно показывает. А если щелкать только по хидерам - то ActiveColumn начинает показывать на 1 колонку. А как правильно все-таки определить, на каком объекте грида пользователь щелкает мышей ? Aevents() возвращает весь грид :( Странно, AEVENTS(laEvnts, 0) у меня нормально возвращает Header ;-/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 09:19 |
|
||
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
Владимир, спасибо ! GridHitTest рулит !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 11:48 |
|
||
|
Как определить, на какой колонке грида был клик (событие вяжется по bindevent - VFP8) ?
|
|||
|---|---|---|---|
|
#18+
Обрати внимание на сообщение Kruchinin Pahan . Он предложил более простое и логичное решение. Функция AEVENTS() если вторым параметром указан 0 вернет массив, содержащий ссылку на объект, вызвавший срабатывание BindEvents(). Т.е. в твоем случае получается что в методе SortbyColumn где-то в самом начале пишешь Код: plaintext 1. 2. 3. 4. 5. 6. Далее просто работаешь с объектом. Например, прочитать источник данных Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 14:01 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=169&tid=1588143]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 327ms |

| 0 / 0 |
