:: Visual Foxpro, Foxpro for DOS
Shape и MouseMove
dfr
Автор

Сообщений: 254
Откуда: Барнаул
Дата регистрации: 29.07.2005
Надо регистрировать событие при пролете мышки над Shape с зажатой левой кнопкой.
Отрабатывается код из MouseMove с обработкой nButton.
И нужно так же что бы срабатывало при аналогичном нажатии, т.е. тот же вызов кода из MouseDown.

Но при клике мышки на одном Shape и дальнейшем полете над другими с удержанием кнопки событие MouseMove с nButton=1 уже не срабатывает.

Как сделать что бы в обоих случаях работало норм?
Ratings: 0 negative/0 positive
Re: Shape и MouseMove
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
См. DragOver.

Ну и остальные Drag.
Ratings: 0 negative/0 positive
Re: Shape и MouseMove
spammail_88

Сообщений: 108
Дата регистрации: 13.11.2010
MouseEnter,MouseMove,MouseLeave.

Везде есть LPARAMETERS nButton, nShift, nXCoord, nYCoord,
где nButton - Contains a number that specifies which button was pressed to trigger the event: 1 (left), 2 (right), or 4 (middle).
Ratings: 0 negative/0 positive
Re: Shape и MouseMove
spammail_88

Сообщений: 108
Дата регистрации: 13.11.2010
Если я Вас правильно понял, ещё предлагаю такой вариант: (файл во вложении)

Init формы:
thisform.bindmethods(thisform)

bindmethods (единое правило для всех MouseMove):
LPARAMETERS mainObj
LOCAL obj
FOR EACH obj IN mainObj.Objects
IF PEMSTATUS(obj,"MouseMove",5)
BINDEVENT(obj,"MouseMove",thisform,"MouseMove")
ENDIF
IF ","+ALLTRIM(UPPER(obj.baseclass))+"," $ ",PAGEFRAME,CONTAINER,PAGE,GRID,COLUMN,OPTIONGROUP,"
thisform.bindmethods(obj)
LOOP
ENDIF
NEXT

MouseMove формы (собственно обработка):
LPARAMETERS nButton, nShift, nXCoord, nYCoord
LOCAL i,aShapes
DIMENSION aShapes[2,2]
aShapes[1,1]=thisform.ShapeRed
aShapes[1,2]=thisform.LabelRed
aShapes[2,1]=thisform.ShapeBlue
aShapes[2,2]=thisform.LabelBlue
FOR i=1 TO ALEN(aShapes,1)
IF BETWEEN(MROW(0,3),OBJTOCLIENT(aShapes[i,1],1),OBJTOCLIENT(aShapes[i,1],1)+aShapes[i,1].Width) AND;
BETWEEN(MCOL(0,3),OBJTOCLIENT(aShapes[i,1],2),OBJTOCLIENT(aShapes[i,1],2)+aShapes[i,1].Height)
aShapes[i,2].Caption="nButton="+STR(nButton,1,0)
ELSE
aShapes[i,2].Caption="nButton"
ENDIF
NEXT

Здесь только MouseMove. MouseDown можно доработать по аналогии.



Исправлено 1 раз(а). Последнее : spammail_88, 28.12.19 15:20
Ratings: 0 negative/1 positive
Re: Shape и MouseMove
dfr
Автор

Сообщений: 254
Откуда: Барнаул
Дата регистрации: 29.07.2005
spammail_88
MouseDown добавил, все работает норм. Спасибо!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 37 (Гостей: 37)

© 2000-2024 Fox Club 
Яндекс.Метрика