Событие Mousedown не работает

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Событие Mousedown не работает

Сообщение VB-constructor » 09.08.2006 (Ср) 21:08

Поставил на форму picture1, положил в неё ActiveX Control. Который реагирет в программе на mousedown и mousemove. Первый раз он на mousedown реагирует, и всё, сколько ни щелкай. А mousemove пашет, бегает по монитору. Ничё не пойму.
Человек рождён для того, чтобы достичь жизни...

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 09.08.2006 (Ср) 21:25

Хакер хоть и телепат, но и тут он по ходу не в силах...
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.08.2006 (Ср) 22:50

Текст:
Поставил на форму picture1, положил в неё ActiveX Control. Который реагирет в программе на mousedown и mousemove. Первый раз он на mousedown реагирует, и всё, сколько ни щелкай. А mousemove пашет, бегает по монитору.


А это автор о своём тексте:
Ничё не пойму.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Re: Событие Mousedown не работает

Сообщение vvs_adm » 09.08.2006 (Ср) 23:03

VB-constructor писал(а):сколько ни щелкай.
А чем собственно щелкали? Уж не тем ли, чем щелкать строго не рекомендуется, особенно в большой семье?
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 09.08.2006 (Ср) 23:15

Вб-конструктор, можно тебя перефразировать:
На форму положил Picture1, а в неё (может быть "в него" ?) положил объект. У этого объекта вызываю некоторый метод, и появляется какая-то ошибка. Вопрос - почему так и как исправить?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

С чувством юмора у вас хорошо. Это отрадно.

Сообщение VB-constructor » 10.08.2006 (Чт) 13:33

Ну впрочем я подозревал, что понятно мало чё будет. Просто не знаю с чего начать, поэтому расказываю подробно:
ActiveX - (саму форму. На ней помещены графические объекты) сделал прозразрачной. Она полностью закрывает picture. Событии клика/mousedown'a должны, по задумке, устанавливать положение той графики, кот. установлена на контроле, согласно текущим координатам. Далее запускаю прогу, всё ок: щелкаю по picture, далее (работает), вожу по монитору мышкой - работает. Щелкаю - для след. раза - никакой реакции, он вообще не обращает внимания.
:D :D :D
Может быть я опять плохо объяснил?
Человек рождён для того, чтобы достичь жизни...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 10.08.2006 (Чт) 13:54

то ли форма закрывает picture, то ли ActiveX что-то закрывает, то ли одно из трех... Ждем попытку номер три, или может быть Телепат уже в рабочем состоянии?
Весь мир матрица, а мы в нем потоки байтов!

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.08.2006 (Чт) 14:03

Дело в том, что автор сам не очень-то осмысливает то, что хотел выразить словами... Так что телепатия не поможет. Код в студию.
Изображение

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Попыка номер три!

Сообщение VB-constructor » 10.08.2006 (Чт) 14:40

то ли форма закрывает picture, то ли ActiveX что-то закрывает, то ли одно из трех

Я тоже думал, что что-то что-то закрывает, но как объяснить следующее: picture1_mousemove работает, а picture1_mousedown - нет! Другими словами, почему для mousrdown перекрывает, а для mousemove - нет?

Код в студию.


Код: Выделить всё
public x1,x2,y1,y2 as single

Private Sub Picture1_Mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
x=x2:y=y2
    If Option1(3).Value = True Then ini(0) = 1
end sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If ini(0) = 1 Then
   
x1=x:y1=y
        With Form1.UserControl11
           
            .Visible = True
            .Width = Picture1.Width
            .Height = Picture1.Height
            .Left = 0
            .Top = 0
            .X1 = Form1.X2
            .Y1 = Form1.Y2
            .X2 = Form1.X1
            .Y2 = Form1.Y1
           
        End With
     
    End If

end sub


ну вроде все.

Повторяюсь, ActiveX - прозрачный (filestyle = 1), и растянут на всю форму:)

Дело в том, что автор сам не очень-то осмысливает то, что хотел выразить словами

Давай уже без намёков :arrow:
Человек рождён для того, чтобы достичь жизни...

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 10.08.2006 (Чт) 16:14

Судя по коду
UserControl лежит выше всех и когда он отображается - все перекрывает, попробуй в маузмув юзерконтрола запихни что-нить и убедишся.

При первом щелчке по пикчербоксу ини(0)=1 потом сразу при маузмув - перекрытие :оР
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.08.2006 (Чт) 18:59

Автор, так оно потому, что так устроен мир. MouseDown будет ловить UserControl хоть он и прозрачный.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 10.08.2006 (Чт) 22:00

Судя по коду
UserControl лежит выше всех и когда он отображается - все перекрывает, попробуй в маузмув юзерконтрола запихни что-нить и убедишся.

При первом щелчке по пикчербоксу ини(0)=1 потом сразу при маузмув - перекрытие :оР

MouseDown будет ловить UserControl хоть он и прозрачный.

Мда, я уже понял. Просто я думал, что оно не так потому что mousemove picture работает. Почему, никто не скажет?
Полтергейст!
Скажу больше: скопировал этот код в другой проект, там перестал работать. (и цвет серый, что в свойствах, свой, а то в предыдущем - белым прикидывался - ' а то я думал из-за прозрачности. ) Проверил св-ва visiиду = правда и там и там.

Вобщем забейте и не берите в голову. Я уж без этого контрола обошёлся.
Тема закрыта
Человек рождён для того, чтобы достичь жизни...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Попыка номер три!

Сообщение Viper » 11.08.2006 (Пт) 7:26

VB-constructor писал(а):
Код: Выделить всё
public x1,x2,y1,y2 as single

Private Sub Picture1_Mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
x=x2:y=y2
    If Option1(3).Value = True Then ini(0) = 1
end sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If ini(0) = 1 Then
   
x1=x:y1=y
        With Form1.UserControl11
           
            .Visible = True
            .Width = Picture1.Width
            .Height = Picture1.Height
            .Left = 0
            .Top = 0
            .X1 = Form1.X2
            .Y1 = Form1.Y2
            .X2 = Form1.X1
            .Y2 = Form1.Y1
           
        End With
     
    End If

end sub





Начиная с этого места:
Код: Выделить всё
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If ini(0) = 1 Then
   
x1=x:y1=y
        With Form1.UserControl11
           
            .Visible = True


ActiveX становится видимым, после чего ловить что-либо с лежащего под ним PictureBox бесполезно
Весь мир матрица, а мы в нем потоки байтов!

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 12.08.2006 (Сб) 9:44

Точно! Спасибо, !Viper!/ я как-то об этом не подумал...
Человек рождён для того, чтобы достичь жизни...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 64

    TopList