Autoit слайдер/slider (gui) нужна помощь в решении задачи

Ответить
Аватара пользователя
aktivizion

Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение aktivizion »

#include

#include



GUICreate("Slider Set Pos", 600, 296)

$hSlider = GUICtrlCreateSlider(2, 40, 400, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))

GUISetState()

GuiCtrlCreateInput("0,0148149998858571", 2, 10, 130, 20)

GuiCtrlCreateInput("0.14%", 140, 10, 130, 20)

$hSlider = GUICtrlCreateSlider(2, 100, 400, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))

GUISetState()

GuiCtrlCreateInput("0,0198147568858794", 2, 70, 130, 20)

GuiCtrlCreateInput("0.15%", 140, 70, 130, 20)





; Loop until user exits

Do

Until GUIGetMsg() = $GUI_EVENT_CLOSE




начальный, даже не начальный, а просто шаблон скрипта.

Мне нужно чтобы

при движении слайдера, число над ним, именно в том формате как оно есть изменялась,

тоесть создать маленький миханизм.

На примере показано только два значения, их нужно мне примерно 10

и чтобы все они были взаимосвязаны друг с другом, тоесть чтобы вся их сумма была равна 1

например:

0,501393020153046

и

0,498607009649277

в сумме дают 1.00000022 небольшая погрешность есть

помогите, натолкните на мысль к решению проблемы
Аватара пользователя
Yashied

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение Yashied »

Код:

Код: Выделить всё

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUISlider.au3>
#include <GUIToolTip.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
GUICreate('MyGUI', 300, 100)
$Input = GUICtrlCreateInput('0.50%', 20, 60, 40, 19, BitOR($ES_CENTER, $ES_READONLY))
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Slider = GUICtrlCreateSlider(20, 16, 260, 28, BitOR($TBS_AUTOTICKS, $TBS_TOOLTIPS, $WS_TABSTOP))
GUICtrlSetLimit(-1, 10, 0)
GUICtrlSetData(-1, 5)
$hSlider = GUICtrlGetHandle(-1)
$Dummy = GUICtrlCreateDummy()
$hWnd = _GUICtrlSlider_GetToolTips($hSlider)
_GUIToolTip_SetTitle($hWnd, '0.50%')
_GUIToolTip_SetMargin($hWnd, -8, -8, -8, -24)
GUIRegisterMsg($WM_HSCROLL, 'WM_HVSCROLL')
GUISetState()
While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Dummy
            $Val = StringFormat('%.2f%', GUICtrlRead($Dummy) / 10)
            GUICtrlSetData($Input, $Val)
            _GUIToolTip_SetTitle($hWnd, $Val)
            _GUIToolTip_Update($hWnd)
    EndSwitch
WEnd
Func WM_HVSCROLL($hWnd, $iMsg, $wParam, $lParam)
    Switch $iMsg
        Case $WM_HSCROLL
            Switch $lParam
                Case $hSlider
                    GUICtrlSendToDummy($Dummy, GUICtrlRead($Slider))
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_HVSCROLL

Что именно должно отображаться, я так и не понял.
Аватара пользователя
aktivizion

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение aktivizion »

Ну как бы обьяснить...



Вот есть число 1

его надо разбить на %-ы

и с помощью самого слайдера редактирую именно тот % составляющий число 1, но

он должен имень очень огромный формат, для этого я и хотел бы вместе с вами написать

подобия калькулятора.



0,501393020153046 ~~51%

0,498607009649277 ~~49%



или же



0,333332985639572 ~~34%

0,218854993581772 ~~22%

0,185185000300407 ~~18%

0,042087998241186 ~~4%



и чтобы сумма этих чисел равнялось 1



Двигая слайдер изменяем % строки, вместе с этим изменяеться число



Думаю вы считаете это какой-то странной затеей, но это мне действительно нужно

если что, я буду пробовать сделать это самостоятельно
Аватара пользователя
kaster

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение kaster »

Цитата aktivizion:



0,501393020153046 ~~51%

0,498607009649277 ~~49%
Autoit слайдер/slider (gui) нужна помощь в решении задачи




я бы сказал наоборот

0,501393020153046 ~~50%

0,498607009649277 ~~50%


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

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение aktivizion »

Цитата Yashied:



GUICtrlSetLimit(-1, 10, 0)
Autoit слайдер/slider (gui) нужна помощь в решении задачи




вот эту строчку немного подправил

GUICtrlSetLimit(-1, 1000, 0)

для более утонченного выбора %
Аватара пользователя
aktivizion

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение aktivizion »

Цитата kaster:



элементарные правила округления
Autoit слайдер/slider (gui) нужна помощь в решении задачи




Я про это знал, просто надо было как-то выделить %-ое соотношение
Аватара пользователя
aktivizion

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение aktivizion »

ладно) закрывайте тему)



зато вспомнили как работает слайдер
Аватара пользователя
kaster

Re: Autoit слайдер/slider (gui) нужна помощь в решении задачи

Сообщение kaster »

aktivizion, просто отмечай тему решенной, если получил ответ на свой вопрос Изображение закрывать ни к чему
Ответить

Вернуться в «AutoIt»