|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Кто-нибудь знает, можно ли совершить какое-либо действие(операцию и т.д.) на нажатие прав. клав. мыши (RightClick) в Treeviwe Control'e. И возможно ди вообще такое в принципе ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 16:15 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Конечно можно, через обработку события MouseDown: LPARAMETERS button, shift, x, y IF button=2 ... ENDIF ЗЫ Для того, чтобы узнать попал в ноду или нет, используй метод HitTest(x,y), он вернет ссылку на объект node или .NULL. (в крайнем случае пустую строку в старых версиях). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 16:31 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Почему нет? Используй MouseDown Для определения на какой ноде используй там же HitTest ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 16:32 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Oops :((( Акелла промахнулся ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 16:34 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2Crip >Oops :((( Акелла промахнулся Это ты про меня? Бывает.. Ну не помню я когда где что возвращает. И что для любознательных пользователей лучше обрабатывать не MouseDown, а MouseUp. Кроме того, там небось еще всякие твипсы, короче надо было ответить просто и коротко - 'да' . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:02 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Все что я нашел (ПОКАЗАЛИ) из хелпа по TreeView - http://kodu.neti.ee/~juri4/vfpplus/ax_treeview_ru.htm Но там нет ни слова про HitTest. Мож где есть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:18 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2NNN Нет это я про себя - ты уже раньше запостил. А почему MouseDown плох? Мне кажется как раз он и нужен. Например для построения контекстного меню 2Jose А что тебе по HitTest надо? Кажется все что нужно NNN написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:27 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Я не совсем понимаю как этот метод работает и как его использовать, точнее, совсем не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:30 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2NNN а я-то думаю, куда однопартиец задевался? а он не задевался, он в работу ушёл :( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:35 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Не все сразу. Сайт там все еще в развитии и со временем дополнится описанием свойств и методов собственно TreeView. Вкратце по поводу HitTest() Это метод собственно объекта TreeView, который по указанным координатам, относительно верхнего левого угла собственно TreeView возвращает ссылку на узел, находящийся по указаным координатам. Проблема в том, что внутренний метод HiteTest() требует координат указанных в твипах (twip), а FoxPro предлагает координаты в пикселах. Т.е. необходим перевод координат. В примере, я создал специальные проперти формы nTwipX и nTwipY, содержащие переводные коэффициенты * Следующие API функции используются для расчета переводного коэффициента * из пикселей (их дает VFP60) в твипы (они нужны функции HitTest()) DECLARE INTEGER GetActiveWindow IN WIN32API DECLARE INTEGER GetDC IN WIN32API INTEGER iHDC DECLARE INTEGER GetDeviceCaps IN WIN32API INTEGER iHDC, INTEGER iIndex LOCAL liHDC liHDC = GetDC(GetActiveWindow()) ThisForm.nTwipX = 1440/GetDeviceCaps(liHDC,88) ThisForm.nTwipY = 1440/GetDeviceCaps(liHDC,90) Теперь в методе MouseDown собственно TreeView пишешь такой код *** ActiveX Control Event *** LPARAMETERS button, shift, x, y LOCAL loNode loNode=This.HitTest(x*ThisForm.nTwipX, y*ThisForm.nTwipY) if IsNull(m.loNode)=.T. MessageBox('Под мышкой нет узла') else MessageBox(m.loNode.text) endif Можешь еще посмотреть примерчик http://nsvisual.com/fox2/sol/index.php?act=view&id=188 Это собственно Drag-Drop в TreeView, но один из способов - это как раз вызов подменю по правой кнопке мыши ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:37 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2ВладимирМ Я не такой крутой спец по тривью. А что вот так не всегда будет работать? Пересчет координат взят и Solution - Controls- ListBox- Drag'n'Drop. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:42 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Специально я не проверял. У меня действительно переводной коэффициент всегда равен 15, но я слышал о ситуациях, когда он равен 12 (возможно другой алгоритм расчета). Я просто не очень понимаю, что эти API-функции делают (точнее какие значения возвращают) Т.е. если лень, то можно взять коэффициент равным 15, но тут нет никакой гарантии, что на другой машине он также будет равен 15. Второй момент - это возвращаемый тип данных. Ведь HitTest() по логике должен в любом случае вернуть переменную типа "Object", просто если нет объекта, то ее значение будет равно NULL. Поэтому я не думаю, что отлавливать именно ТИП возвращаемого значения - это хорошая идея. Нужно проверять именно ЗНАЧЕНИЕ. По поводу Solution.pjx - у меня VFP6 и этого примера нет. А вообще-то, к любым примерам надо подходить с осторожностью, по принципу "доверяй, но проверяй". Как минимум, примеры от Microsoft сильно избыточны. Насчет глючности - не скажу, я не очень-то пользуюсь примерами в чистом виде. Как правило беру только идею и переписываю под себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 18:03 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Понятно С VARTYPE() я действительно погорячился. Когда передается ссылка на объект , а не сам объект лучше проверять на NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 18:15 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2Crip > Нет это я про себя - ты уже раньше запостил. Интересно, как ты мог об этом знать, когда писал ответ > А почему MouseDown плох? Мне кажется как раз он и нужен. Например для построения контекстного меню. Тебе длинную историю по этому поводу или короткую? Ладно, как-нибудь в следующий раз.. А пока нажми правую кнопку мыши в любом месте этого сообщения. Нажал? Теперь дочитай это предложение до конца и отпусти ее. Намек понял? :) С VARTYPE() я действительно погорячился. Когда передается ссылка на объект , а не сам объект лучше проверять на NULL Не все так просто - PRB: TreeView Control HitTest Method Returns Empty String , хотя это не твой случай. > А что вот так не всегда будет работать? Как минимум в 90% случаев. В принципе твипс - это 1/1400 логического дюйма, а вот количество пикселей в логическом дюйме может быть различно для различных компьютеров, но может быть вычислено через GetDeviceCaps. У меня на работе как раз такой случай, точные цифры не помню, но очень 'обрадовался', когда в первый раз встретил вариант TwipsPerPixelX=TwipsPerPixelY. Solution в этом примере подглючивает капитально. 2ВладимирМ > Сайт там все еще в развитии и со временем дополнится описанием свойств и методов собственно TreeView. Это тебе Юрий сам сказал? Помнится, он начинал еще в прошлом веке.. Одно замечание: контекст устойства необходимо удалять после того, как он не используется, он все-таки немало памяти ест. 2hDrummer А Вам, товарисч Эйтч, я отвечу отдельно и в другом форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2003, 00:13 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
Вообщем, спасибо всем. Постараюсь дальше разобраться сам (:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2003, 12:16 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2 NNN >Одно замечание: контекст устойства необходимо удалять после того, как он не используется, он все-таки немало памяти ест. Как это выполнить практически для VFP6 ? Там есть только CLEAR DLLS, что в принципе недопустимо использовать - мало ли какие библиотеки у меня еще загружены. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2003, 18:48 |
|
Treeview Right Click
|
|||
---|---|---|---|
#18+
2ВладимирМ > Как это выполнить практически для VFP6 ? Для твоего примера (после вычисления твипсов): Код: plaintext 1.
> Там есть только CLEAR DLLS Было время, приходилось отслеживать, а в 7 появилось CLEAR DLLS [LibraryName], что упростило задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2003, 21:42 |
|
|
start [/forum/topic.php?fid=41&msg=32197704&tid=1598142]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 150ms |
0 / 0 |