powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BINDEVENT и MouseDown Формы+Контрола
6 сообщений из 6, страница 1 из 1
BINDEVENT и MouseDown Формы+Контрола
    #35188935
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лиса - 9
У меня на форме к MouseDown каждому контролу подписывается MouseDown его формы
BINDEVENT('все контролы','MouseDown',ThisForm,'MouseDown',0)

Возможно ли по признаку
1. Отписаться контролу от собственного MouseDown
2. В MouseDown формы запретить дальнейшее выполнение MouseDown-на контрола

С Ув. Игорь.
...
Рейтинг: 0 / 0
BINDEVENT и MouseDown Формы+Контрола
    #35193333
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У формы есть свойство KeyPreview. Если =.Т., то сначала произойдёт собтие KeyPress формы, а потом контрола.
2. В MouseDown формы запретить дальнейшее выполнение MouseDown-на контрола
Добавим свойство для формы (Form.Init)
This.AddProperty("blockKey")
** В KeyPress формы
This.BlockKey=.T.
** Ну и в KeyPress контрола
IF ThisForm.BlockKey
ThisForm.BlockKey=.F.
NODEFAULT
ENDIF
...
Рейтинг: 0 / 0
BINDEVENT и MouseDown Формы+Контрола
    #35194030
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorProgrammerЛиса - 9
У меня на форме к MouseDown каждому контролу подписывается MouseDown его формы
BINDEVENT('все контролы','MouseDown',ThisForm,'MouseDown',0)

Возможно ли по признаку
1. Отписаться контролу от собственного MouseDown
2. В MouseDown формы запретить дальнейшее выполнение MouseDown-на контрола

С Ув. Игорь.
1. Не понял. UNBINDEVENTS()?
2. BINDEVENT('все контролы', 'MouseDown', ThisForm, 'MouseDown', 2)
Логика обратная получается. Событие мыши для контрола всегда подавляется, а по флажку - RAISEEVENT
...
Рейтинг: 0 / 0
BINDEVENT и MouseDown Формы+Контрола
    #35194467
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklSУ формы есть свойство KeyPreview. Если =.Т., то сначала произойдёт собтие KeyPress формы, а потом контрола.
Какое отношение KeyPreview имеет к MouseDown...

Kruchinin Pahan1. Не понял. UNBINDEVENTS()?
Типа того... только от собственного MouseDown контрол не может отписатЪся...
Или я что-то не правильно делаю...
Инит формы:
*UNBINDEVENTS(This.Command1)
*UNBINDEVENTS(This.Command1,"MouseDown",This.Command1,"MouseDown")

Форма-класс, она должна блокировать дальнейшее выполнение события MouseDown-а у контрола после своего... (контрол может быть и не из моего класса)

В инете идет подпись например:
BINDEVENT(ThisForm.Command1,'MouseDown',ThisForm,'MouseDown',0)

ThisForm.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
LOCAL ARRAY loSource(1)
WITH This
=AEVENTS(m.loSource,0)
messagebox('MouseDown Form')
...
&&Если что-то, то остановить
ENDWITH

ThisForm.Command1.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
messagebox('MouseDown Command1') && Мессага не выводилась
...
Рейтинг: 0 / 0
BINDEVENT и MouseDown Формы+Контрола
    #35194831
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве идеи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
loForm = NewObject("tForm")
loForm.Show( 1 )

DEFINE CLASS tForm AS Form
AutoCenter		= .T.
cPublicThisForm	= ""
ADD OBJECT Txt AS tTxt
PROCEDURE BndMouseDown
	loObj = SYS( 1270 )
	IF VARTYPE(loObj)="O"
		loPar = loObj
		DO WHILE TYPE("loPar.Parent.Name")="C"
			loPar = loPar.Parent
		ENDDO
		IF loPar = ThisForm 			
			IF loObj = loPar
				IF MROW()< 0 
					**** Заголовок формы
				ELSE
					**** Форма
				ENDIF
			ELSE
				**** Объект формы
				= INKEY( 0 ,'hm')
			ENDIF			
		ENDIF
	ENDIF
ENDPROC
PROCEDURE Init
	lcPublicThisForm = SYS( 2015 )
	PUBLIC &lcPublicThisForm
	ThisForm.cPublicThisForm = lcPublicThisForm
	&lcPublicThisForm = ThisForm
	PUSH KEY CLEAR
	ON KEY LABEL MOUSE &lcPublicThisForm..BndMouseDown()
ENDPROC
PROCEDURE Destroy	
	lcPublicThisForm = ThisForm.cPublicThisForm
	RELEASE &lcPublicThisForm
	POP KEY
ENDPROC
ENDDEFINE

DEFINE CLASS tTxt AS TextBox
PROCEDURE MouseDown
	LPARAMETERS nButton, nShift, nXCoord, nYCoord
	=MESSAGEBOX(SYS( 1272 , This))
ENDPROC
ENDDEFINE
...
Рейтинг: 0 / 0
BINDEVENT и MouseDown Формы+Контрола
    #35195069
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin PahanON KEY LABEL MOUSE
Не подходит...
Я не знаю заранее будет ли ON KEY LABEL MOUSE использоваться кем-то другим...
Плюс надо вычеслять в какой форме произошел клик...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BINDEVENT и MouseDown Формы+Контрола
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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