|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Управление слайдером |
|
[решено] Управление слайдером
|
Пользователь Сообщения: 88 |
Профиль | Отправить PM | Цитировать
Как правильно организовать управление слайдером ?
Почему при клике в теле слайдера движок не устанавливается точно в кликнутую позицию ,а проскакивает ее ? Необходимо установить движок слайдера в кликнутую позицию и получить ее координаты. #include <GUIConstants.au3> $hGUI = GuiCreate('Test',660, 200) Opt("GUIOnEventMode", 1) GUISetOnEvent($GUI_EVENT_CLOSE, "quit") $slider = GUICtrlCreateSlider(10, 130, 630, 25 ) GUICtrlSetOnEvent( -1, "Sl") GUISetState(@SW_SHOW) While 1 Sleep(100) WEnd Func quit() Exit EndFunc Func Sl() $read=GUICtrlRead($slider,1) ConsoleWrite( $read & @crlf) EndFunc Похоже решение тоже простое , но я не нашел . |
|
Отправлено: 14:02, 16-06-2009 |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать gregaz, можно отловить нажатие левой кнопки мыши (это было на форуме, поиск), затем считать координаты мыши относительно окна и исходя из них передвинуть слайдер, затем считать его расположение.
|
------- Отправлено: 14:57, 17-06-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать morgan1991, Спасибо
Извиняюсь ,что не сразу воспользовался поиском. Правда не совсем понятно как считать точную позицию движка Кликну на 25 - он все равно даст 20 (частота дискретицации?) Повторный клик на 25 дает 40 и т.д. 20,40,20,40 ? (в примере от Yashied : Yashied ) Там была проблема предачи в скрипт позиции движка. А здесь-получение этой позиции при клике ? |
Последний раз редактировалось gregaz, 17-06-2009 в 17:33. Отправлено: 16:42, 17-06-2009 | #3 |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 21:32, 17-06-2009 | #4 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
Даже используя _GUICtrlSlider_GetPos($Slider) все равно не получить точную координату скажем 23 (будет 20, следующий клик там же - 40 и т.д. 20-40-20-40...) Вопрос : как установить движок точно в кликнутое место ? Можно как-то уменьшить частоту дискретизации (здесь 20) ? |
||
Отправлено: 09:46, 18-06-2009 | #5 |
Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать gregaz,
А так не пробовали? #include <GUIConstants.au3> $gui = GUICreate("slider",220,100, 100,200) GUISetBkColor (0x00E0FFFF) ; will change background color $slider1 = GUICtrlCreateSlider (0,10,220,20) GUICtrlSetLimit(-1,200, 0) ; change min/max value $button = GUICtrlCreateButton ("Value?",75,70,70,20) GUISetState() GUICtrlSetData($slider1,45) ; set cursor $start=TimerInit() Do $n = GUIGetMsg () If $n = $button Then MsgBox(0,"slider1",GUICtrlRead($slider1),2) $start=TimerInit() EndIf If $n = $slider1 Then $pos = GUIGetCursorInfo($gui) GUICtrlSetData($slider1, $pos[0]-10) EndIf Until $n = $GUI_EVENT_CLOSE |
------- Отправлено: 10:41, 18-06-2009 | #6 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать morgan1991 , Спасибо
Вообще то это мне и требовалось. Решение действительно простое Цитата morgan1991:
|
|
Отправлено: 15:02, 18-06-2009 | #7 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Цитата gregaz:
#Include <GUISlider.au3> Global $Form, $Slider, $Data, $Release = False $Form = GUICreate('Test', 220, 100) $Slider = GUICtrlCreateSlider(0, 10, 220, 20) GUICtrlSetLimit(-1, 200, 0) _GUICtrlSlider_SetPageSize($Slider, 0) GUISetState() Do $Data = GUIGetCursorInfo() Switch $Data[4] Case $Slider If $Data[2] Then If $Release Then GUICtrlSetData($Slider, $Data[0] - 10) $Release = False EndIf Else $Release = True EndIf EndSwitch Until GUIGetMsg() = -3 |
|
Отправлено: 10:05, 19-06-2009 | #8 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Yashied, спасибо .
Очень интересное решение . Надо попробовать использовать . |
Отправлено: 23:28, 19-06-2009 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Управление компьютера при помощи речи - Голосовое управление | mihanik | Программное обеспечение Windows | 24 | 11-04-2014 03:36 | |
Win32 API - [решено] Управление Winamp из VB | Vovchick1 | Программирование и базы данных | 5 | 21-04-2009 18:21 | |
Печать - [решено] Управление очередью | WChek | Сетевые технологии | 3 | 03-04-2009 18:55 | |
[решено] удаленное управление программами | noleiemit | Хочу все знать | 2 | 23-06-2008 15:16 | |
[решено] Управление правами | VDima | Microsoft Windows 2000/XP | 1 | 26-05-2006 09:45 |
|