Глупый, бональный вопрос...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Глупый, бональный вопрос...

Сообщение XairOn » 23.03.2005 (Ср) 18:59

Здравствуйте, вопрос мой действительно глупый и бональный, но тем не менее... В VB у многих контролов (почти у всех) есть событие Click, оно происходит тогда, когда пользователь нажимает на этот конрол... это всем понятно, но вот что меня не устривает, это событие происходит при нажатии любой кнопки мыши (правой или левой), во всех программах (...ну или почти во всех :wink: ) контрол реагирует на нажатие только левой кнопки (правая либо игнорируется, либо используется в других целях), так вот мне нужно, что бы в моей проге, как и в любой другой, выполнялось это условие (т.е. левая кнопка для клика, правая игнорируется)... как это сделать? Конечно можно по MouseDown, MouseUp смотреть, но это довольно гиморно (если "делать нормальный" клик) и для большого количества контролов очень неудобно... можно ли как-нибудь по-другому этого добиться???

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 23.03.2005 (Ср) 19:09

Охх, что-то сегодня все хотят разбираться с Click Event'ом. По-моему, тебе все-таки придется смотреть по MouseDown/MouseUp'у, потому что Click, во-первых, не дает никакой информации о нажатой кнопке мыши и, во-вторых, если уж на то пошло, может происходить, как ни странно, не только при клике мышкой. Если у тебя фокус на кнопке и ты жмешь пробел, кнопка нажимается и тоже происходит Click event. А если ты действительно щелкнул мышкой, то перед Click'ом всегда происходят сначала MouseDown, потом MouseUp.

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 23.03.2005 (Ср) 22:17

...это событие происходит при нажатии любой кнопки мыши (правой или левой), во всех программах...

С чего это ты взял. У кнопки тока для левой кнопки мыши клик. У TextBox'а правой вызывается менюха.
А вооще можешь ето, к примеру, в событие MouseUp запихнуть
Код: Выделить всё
Select Case Button
Case vbLeftButton
'Что происходит при нажатии левой кнопки
Case vbRightButton
'Что происходит при нажатии правой кнопки
End Select
или чо ето не подходит :?

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

Сообщение vvs_adm » 23.03.2005 (Ср) 23:58

Вообще по событию MouseUP не есть хорошо... Можно нажать мыху где-то, подвести к кнопке и отпустить. И клика нет, а MouseUP есть. И так ведь Click только на левую реагирует .

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 24.03.2005 (Чт) 9:08

Эх... видать опять придется ручками... :cry:

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 24.03.2005 (Чт) 9:24

Простая VB кнопка на правую кнопку не реагирует, а если у тебя другой - сторонний контролл, может у него при событии клик перадется Button As Integer?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.03.2005 (Чт) 9:27

Код: Выделить всё
Private MButton As Long
...
Private Sub Command1_Click()
Select Case MButton
  Case 1
    MsgBox "LClick"
  Case 2
    MsgBox "RClick"
End Select
MButton = 0
End Sub
...
Private Sub Command1_MouseDown(...)
MButton = 0
End Sub
...
Private Sub Command1_MouseUp(ByVal Button As Long, ...)
MButton = Button
End Sub
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение vvs_adm » 24.03.2005 (Чт) 9:31

Алексей К. писал(а):...<cut>...перадется Button As Integer?
:lol:

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 24.03.2005 (Чт) 9:59

vvs_adm
Ничего смешного я здесь не вижу, смысл фразы "может быть" понимаешь?
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Если у него сторонний контрол, то там тип такой - какой захотел сделать разработчик, хоть string, long и т.д.

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 24.03.2005 (Чт) 10:24

А почему бы в MouseUp координаты не проверять?
Если X,Y < 0 или X,Y > Ширины,высоты кнопки - то клик не защитывать?
Программисты не глючат - глючат компиляторы...

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

Сообщение vvs_adm » 24.03.2005 (Чт) 11:05

Алексей К.Вообще-то я никого не хотел обидеть, и ничего смешного в смысле твоего топика не увидел, да и не смотрел. Я ведь выделил жирным шрифтом то, что показалось мне смешным, а именно опечатка перадется.Так что, извини, если что...

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 24.03.2005 (Чт) 11:20

vvs_adm
Ничего плохого.
А я опечатку и сам-то не заметил, подумал ты про тип... :D

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 24.03.2005 (Чт) 19:08

Алексей К. писал(а):Простая VB кнопка на правую кнопку не реагирует

кнопка да, но вот скажем, OptionButton или CheckBox реагируют и на левую и на правую кнопки одинаково... Насчет MouseDown, MouseUp я уже говорил, тут ничего для меня сложного нет, просто когда контролов много, очень гиморно для каждого такую кучу обработчиков задействовать... ядумал, что можно как-нибудь иначе, но похоже что нет...

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 25.03.2005 (Пт) 11:20

>кнопка да, но вот скажем, OptionButton или CheckBox реагируют и на левую и на правую кнопки одинаково

что-то у тебя не то... с мышкой

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 25.03.2005 (Пт) 15:56

Sur писал(а):что-то у тебя не то... с мышкой

С какой ещё мышкой??? Мы тут вообще-то про VB говорим... ты поробуй обычный OptionButton на форму кинь, а потом запусти и глянь что получится??? Рекция этого контрола и на правую и на левую кнопки одинаковая... можешь сам убедиться.

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 28.03.2005 (Пн) 8:45

XairOn, Не, не одинаковая. У меня на правую кнопку вообще никак не реагирует ни CommandButton, ни OptionButton, ни CheckBox.
Программисты не глючат - глючат компиляторы...


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 92

    TopList