Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как отключить MouseMove после срабатывания - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Как отключить MouseMove после срабатывания
user0 Дата: Четверг, 16.02.2017, 15:46 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Доброго времени,

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

Зачем это нужно:
случай 1 (в архиве) - textfield, с рамкой меняющей цвет при on_hover и on_click (как в форме авторизации гугла).
Делаю через MouseMove, возвращаю в исходное через Detail_MouseMove, а вот дальше уже ни Click, ни GotFocus не позволяют изменить цвет на синий при клике на текстовое поле.

случай 2 - listbox, изменяющий высоту в зависимости от количества строк. Размеры меняются также через MouseMove/Detail_MouseMove, но проблема в том что развернутый список мигает (перерисовается) при движении мыши по нему.
Me.lstAutoHeight.Height = Me.lstAutoHeight.ListCount * 217

Есть ли возможность это обойти?

Вот это не работает, хотя и не должно )
К сообщению приложен файл: textfield.zip (23.1 Kb)


Сообщение отредактировал user0 - Четверг, 16.02.2017, 22:59
 
Ответить
СообщениеДоброго времени,

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

Зачем это нужно:
случай 1 (в архиве) - textfield, с рамкой меняющей цвет при on_hover и on_click (как в форме авторизации гугла).
Делаю через MouseMove, возвращаю в исходное через Detail_MouseMove, а вот дальше уже ни Click, ни GotFocus не позволяют изменить цвет на синий при клике на текстовое поле.

случай 2 - listbox, изменяющий высоту в зависимости от количества строк. Размеры меняются также через MouseMove/Detail_MouseMove, но проблема в том что развернутый список мигает (перерисовается) при движении мыши по нему.
Me.lstAutoHeight.Height = Me.lstAutoHeight.ListCount * 217

Есть ли возможность это обойти?

Вот это не работает, хотя и не должно )

Автор - user0
Дата добавления - 16.02.2017 в 15:46
user0 Дата: Суббота, 18.02.2017, 08:28 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Если кому-то интересно, решение через добавление проверки в MouseMove (подсказали люди с cyberforum):

для полей
[vba]
Код
If Me.ActiveControl.Name <> "txtLogin" Then
[/vba]
для списка
[vba]
Код
If Me.lstAutoHeight.Height <> Me.lstAutoHeight.ListCount * 217 Then
[/vba]
Хотя по списку другой небольшой косяк вылез.
Если он при разворачивании перекрывает нижерасположеный список, то либо невозможно нормально выбрать элементы, либо перекрываемая часть просто скрывается под нижерасположеным до клика или скрола на ней.
К сообщению приложен файл: MouseMove3_list.zip (27.6 Kb)
 
Ответить
СообщениеЕсли кому-то интересно, решение через добавление проверки в MouseMove (подсказали люди с cyberforum):

для полей
[vba]
Код
If Me.ActiveControl.Name <> "txtLogin" Then
[/vba]
для списка
[vba]
Код
If Me.lstAutoHeight.Height <> Me.lstAutoHeight.ListCount * 217 Then
[/vba]
Хотя по списку другой небольшой косяк вылез.
Если он при разворачивании перекрывает нижерасположеный список, то либо невозможно нормально выбрать элементы, либо перекрываемая часть просто скрывается под нижерасположеным до клика или скрола на ней.

Автор - user0
Дата добавления - 18.02.2017 в 08:28
user0 Дата: Четверг, 11.05.2017, 07:43 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
или еще можно так:

[vba]
Код
Private Sub lstAutoHeight_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Me.lstAutoHeight.Height = X
    Me.lstAutoHeight.OnMouseMove = ""
End Sub
[/vba]

[vba]
Код
Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    If Me.lstAutoHeight.Height = X Then
        Me.lstAutoHeight.Height = Y
    End If
    Me.lstAutoHeight.OnMouseMove = "[Event Procedure]"
End Sub
[/vba]


Сообщение отредактировал user0 - Четверг, 11.05.2017, 07:45
 
Ответить
Сообщениеили еще можно так:

[vba]
Код
Private Sub lstAutoHeight_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Me.lstAutoHeight.Height = X
    Me.lstAutoHeight.OnMouseMove = ""
End Sub
[/vba]

[vba]
Код
Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    If Me.lstAutoHeight.Height = X Then
        Me.lstAutoHeight.Height = Y
    End If
    Me.lstAutoHeight.OnMouseMove = "[Event Procedure]"
End Sub
[/vba]

Автор - user0
Дата добавления - 11.05.2017 в 07:43
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!