purebasic.info

PureBasic forum
Текущее время: Ср авг 15, 2018 10:59 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Как отключить событие у гаджета
СообщениеДобавлено: Пт авг 03, 2018 3:11 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 648
Благодарил (а): 72 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Как известно в гаджетах имеющих полосы прокрутки нужно кликнуть по гаджету чтобы заработало колёсико мышы, вот только колёсико продолжает работать даже если мыша ушла за пределы окна, вот это и хочется отключить.
Попробовал сбрасывать активацию у гаджета с помощью IsMouseOver(wnd), не получается.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 03, 2018 4:03 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2283
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Можно вызвать SetActiveGadget(-1) когда курсор выходит за пределы окна.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 04, 2018 5:32 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 648
Благодарил (а): 72 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Нет, в моём случае это не поможет, нужно чтобы гаджет на клик не подключал колёсико.
В моём случае получается как бы медвежья услуга от винды, это просто мешает сделать всё удобно.
Колёсико должно работать только над гаджетом и без клика по этому гаджету, попытки сбросить активацию после клика только ухудшают.
Пока гаджет один, всё нормально, а когда гаджетов несколько, вот тут то и вылезает эта медвежья услуга от винды.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 04, 2018 10:44 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11226
Благодарил (а): 4 раз.
Поблагодарили: 424 раз.
Как-то раньше решал эту проблему. Подробностей уже не помню. Исходники. http://pbtorrent.ucoz.ru/load/iskhodnyj ... _2/1-1-0-5
Смотреть нужно файлы Window.pbi и Controls_CB.pbi в котором искать обработку события #WM_MOUSEWHEEL.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 04, 2018 11:32 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 263
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Да вроде норм qpAHToMAS советует:
Код:
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
_point.POINT
 
OpenWindow(0, 0, 0, 400, 200, "", #PB_Window_SystemMenu|1)
ListIconGadget(1, 10, 10, 100, 180, "1", 70)
ListIconGadget(2, 120, 10, 100, 180, "2", 70)
ListIconGadget(3, 230, 10, 100, 180, "3", 70)
ButtonGadget(4, 340, 10, 50, 20, "Test")
For i = 0 To 20
  AddGadgetItem(1, i, Str(i))
  AddGadgetItem(2, i, Str(i))
  AddGadgetItem(3, i, Str(i))
Next i
Repeat
  Event = WaitWindowEvent()
  GetCursorPos_(@_point)
  Select WindowFromPoint_(PeekQ(@_point))
    Case GadgetID(1)
      SetActiveGadget(1)
    Case GadgetID(2)
      SetActiveGadget(2)
    Case GadgetID(3)
      SetActiveGadget(3)
    Case GadgetID(4)
      If  EventType() = #PB_EventType_LeftClick
        Debug "Test"
      EndIf
    Default
      SetActiveGadget(-1)
  EndSelect
Until Event = #PB_Event_CloseWindow
End



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 05, 2018 6:48 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 648
Благодарил (а): 72 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Пётр скачал посмотрю
repeat интересно, пример работает как надо, попробую засунуть в прогу
у меня ScrollAreaGadget(), канвас и листИкон и они паралельно крутятся, неправильно это, а мешает именно листИкон
у канваса колёсиком число меняется


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс авг 05, 2018 7:28 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 648
Благодарил (а): 72 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
repeat, не, в проге не работает
я так понял твой код основан на наличии у листа встроенного события, поэтому другие гаджеты ни как не реагируют
получилось или все паралельно едут или только лист едет


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн авг 06, 2018 6:24 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 648
Благодарил (а): 72 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
удалил Default : SetActiveGadget(-1), а в функции добавил активацию гаджета
так заработало, но на первый щелчёк колёсика обязательно срабатывает и лист вместе с гаджетом, а дальше только гаджет
не фонтан, но приемлемо


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB