Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Управление слайдером

Ответить
Настройки темы
[решено] Управление слайдером

Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Изменения
Автор: gregaz
Дата: 18-06-2009
Как правильно организовать управление слайдером ?

Почему при клике в теле слайдера движок не устанавливается точно в кликнутую позицию ,а проскакивает ее ?

Необходимо установить движок слайдера в кликнутую позицию и получить ее координаты.
Код: Выделить весь код
#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

 

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


gregaz, можно отловить нажатие левой кнопки мыши (это было на форуме, поиск), затем считать координаты мыши относительно окна и исходя из них передвинуть слайдер, затем считать его расположение.

-------
Хочу научиться писать драйвера на с++

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:57, 17-06-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


morgan1991, Спасибо
Извиняюсь ,что не сразу воспользовался поиском.
Правда не совсем понятно как считать точную позицию движка
Кликну на 25 - он все равно даст 20 (частота дискретицации?)
Повторный клик на 25 дает 40 и т.д. 20,40,20,40 ? (в примере от Yashied : Yashied )

Там была проблема предачи в скрипт позиции движка.
А здесь-получение этой позиции при клике ?

Последний раз редактировалось gregaz, 17-06-2009 в 17:33.


Отправлено: 16:42, 17-06-2009 | #3


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


gregaz, а зачем для считывания позиции использовать расширенный режим?

Код: Выделить весь код
$read=GUICtrlRead($slider,1)
Может сделать так:

Код: Выделить весь код
$read=GUICtrlRead($slider)
Проблема в этом?

-------
Хочу научиться писать драйвера на с++


Отправлено: 21:32, 17-06-2009 | #4


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
gregaz, а зачем для считывания позиции использовать расширенный режим? »
Да разницы то ведь нет .
Даже используя _GUICtrlSlider_GetPos($Slider) все равно не получить точную координату скажем 23 (будет 20, следующий клик там же - 40 и т.д. 20-40-20-40...)
Вопрос : как установить движок точно в кликнутое место ?
Можно как-то уменьшить частоту дискретизации (здесь 20) ?

Отправлено: 09:46, 18-06-2009 | #5


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить 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


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


morgan1991 , Спасибо
Вообще то это мне и требовалось.
Решение действительно простое
Цитата morgan1991:
Только ещё бы отключить стандартный сдвиг ползунка.... »
От этого трудно избавиться , да и вряд ли это принципиально важно.

Отправлено: 15:02, 18-06-2009 | #7


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить 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


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Yashied, спасибо .
Очень интересное решение .
Надо попробовать использовать .

Отправлено: 23:28, 19-06-2009 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Управление слайдером

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Управление компьютера при помощи речи - Голосовое управление 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




 
Переход