Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не получается с GridHitTest / 6 сообщений из 6, страница 1 из 1
04.11.2008, 22:20
    #35633876
Zitz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
На форме лежит грид. Пытаюсь привязать контекстное меню на RightClick грида, дублирую для text столбцов. Меню выпадает совершеннно не там, где по идее должно :). Ниже текст метода:

LOCAL lnRow, lnCol, lnElem
STORE 0 TO lnRow, lnCol, lnElem

This.GridHitTest(MROW(ThisForm.Name,3),MCOL(ThisForm.Name,3),@m.lnElem,@m.lnRow,@m.lnCol)

DEFINE POPUP shortcut SHORTCUT RELATIVE FROM m.lnRow, m.lnCol
DEFINE BAR 1 OF shortcut PROMPT "Добавить"
DEFINE BAR 2 OF shortcut PROMPT "Редактировать"
DEFINE BAR 3 OF shortcut PROMPT "\Переместить"
DEFINE BAR 4 OF shortcut PROMPT "Удалить"

ON SELECTION BAR 1 OF shortcut DO this.maddRec()
ON SELECTION BAR 2 OF shortcut DO this.meditRec()
ON SELECTION BAR 3 OF shortcut DO this.mmoveRec()
ON SELECTION BAR 4 OF shortcut DO this.mdelRec()

Подскажите пожалуйста, что делаю не так?
...
Рейтинг: 0 / 0
05.11.2008, 09:04
    #35634153
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
А так чем не устраивает:
Код: plaintext
DEFINE POPUP shortcut SHORTCUT RELATIVE FROM MROW(),MCOL()
С уважением, Алексей
...
Рейтинг: 0 / 0
05.11.2008, 17:20
    #35635660
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
* grid.RightClick()

&& получить тек.координаты мыши относительно формы
local aMouseInfo[ 1 ], lInGrid
amouseobj(aMouseInfo, 1 )
lInGrid = this.GridHitTest(aMouseInfo[ 3 ],aMouseInfo[ 4 ], @iWhere) and iWhere= 3 

if lInGrid        && клик над данными в гриде
    && ... Popup
endif
...
Рейтинг: 0 / 0
05.11.2008, 17:21
    #35635669
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
iWhere ещё объявить забыл
Код: plaintext
local aMouseInfo[ 1 ], iWhere, lInGrid
...
Рейтинг: 0 / 0
05.11.2008, 20:05
    #35636062
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
Дело в том, что в команде DEFINE POPUP необходимо указать координаты, относительно основного окна _SCREEN. Абсолютные координаты.

Причем координаты строки и столбца указываются, в так называемых, "фокселах". Один фоксел - это средний размер одной буквы соответствующего шрифта. Это то, что возвращают функции MROW() и MCOL() без второго параметра.

4 и 5 параметры метода GridHitTest() возвращают относительные порядковые номера столбцов и строк. Относительно края Grid. Например, если в Grid видны 2 столбца и ты ткнул мышкой по первому, то и получишь значение 1 (первый столбец). Ткнул по второму - получишь значение 2 (2 столбец).

Т.е. параметры метода GridHitTest() возвращают вовсе не координаты, а "указания". Т.е. сообщают о том, в какой объект ты попал. Но вовсе не то, по каким координатам этот объект находится.

Другими словами, тебе надо повтороно использовать функции MROW() и MCOL() в команде DEFINE POPUP. Возвращаемые параметры GridHitTest() - бесполезны. Они не о том.
...
Рейтинг: 0 / 0
06.11.2008, 12:33
    #35637229
Zitz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с GridHitTest
Спасибо большое всем. Век живи, век учись :)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не получается с GridHitTest / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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