Тема: AHK : Как в GUI скрыть Edit, не скрывая его UpDown?
Пытаюсь спрятать Edit, но оставить "его" UpDown:
Gui, Add, Edit, hide
Gui, Add, UpDown но они прячутся оба. Пробовал поиграть с "+" и "-", но безрезультатно.
Что можно сделать?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пытаюсь спрятать Edit, но оставить "его" UpDown:
Gui, Add, Edit, hide
Gui, Add, UpDown но они прячутся оба. Пробовал поиграть с "+" и "-", но безрезультатно.
Что можно сделать?
Gui, Add, Edit, hide
Gui, Add, UpDown, -16
Gui, Show
ReturnА смысл затеи можете рассказать?
"его" UpDown
не заметил.
Gui, Add, Edit, vEdit
Gui, Add, UpDown
GuiControl, hide, Edit
Gui, Show
ReturnGui, Add, Edit, vEdit Gui, Add, UpDown GuiControl, hide, Edit Gui, Show Return
Спасибо, работает!
А смысл затеи можете рассказать?
Да. Мне это показалось лучшим выходом из ситуации с ограничением изменения UpDown только единицу.
Я его присваиваю к другому Edit, который будет спрятан, считываю значение и делю на 100. Полученное значение отправляю в видимый Edit. Получается приращение по 0.01. Нашеёл перед этим код строка на 40, но ничего в нём не понял. А так - работает. ![]()
Наверное, можно как-то изящнее осуществить?
Наверное, можно как-то изящнее осуществить?
Ну можно так попробовать:
Gui, Add, Edit, vEdit Center w100
Gui, Add, UpDown, vUpDown gUpDown Horz Wrap wp Range0-10000
Gui, Show
UpDown:
GuiControl,, Edit, % Round(UpDown / 100, 2)
ReturnЯ бы так сделал:
Gui, Add, Edit, vEdit
Gui, Add, UpDown, vMyUpDown gMyUpDown
Gui, Show
Return
GuiClose:
ExitApp
MyUpDown:
GuiControlGet, Number,, MyUpDown
GuiControl,, Edit, % Number = 0 ? 0 : Round(Number/100, 2)
returnPokerist
Ещё можно так, если нужно значение при старте.
Gui, Add, Edit, vEdit Center w60
Gui, Add, UpDown, vUpDown gUpDown Horz Wrap wp Range0-10000, 5000
GuiControlGet, UpDown
Gui, Show
UpDown:
GuiControl,, Edit, % Round(UpDown / 100, 2)
Return
teadrinker
Каков смысл?
GuiControlGet, Number,, MyUpDownДа, можно и без этого:
Gui, Add, Edit, vEdit
Gui, Add, UpDown, vMyUpDown gMyUpDown
Gui, Show
Return
GuiClose:
ExitApp
MyUpDown:
GuiControl,, Edit, % MyUpDown = 0 ? 0 : Round(MyUpDown/100, 2)
returnРазница между твоим кодом и моим в том, что твой делает отсчёт по кругу, после 0.00 появляется 100.00.
Разница между твоим кодом и моим в том, что твой делает отсчёт по кругу, после 0.00 появляется 100.00.
Так это я опцию "Wrap" добавил (просто так).
Разница ещё и в том, что твой UpDown присоединённый, и в этом случае происходит выделение текста (из за GuiControl) при каждом изменении, то бишь - мелькание.
Если нужен "дефолтный" вид то можно так:
Gui, Add, Edit, vEdit Center, 010000
Gui, Add, UpDown, vUpDown gUpDown -16 hp x+-1 Range0-10000, 5000
GuiControlGet, UpDown
Gui, Show
UpDown:
GuiControl,, Edit, % Round(UpDown / 100, 2)
ReturnИли так:
Gui, Font, s55 bold, LCDMono2
Gui, Add, Edit, vEdit Center, 100000
Gui, Add, UpDown, vUpDown gUpDown -16 w44 hp x+0 Range0-10000, 5000
GuiControl, Move, UpDown, w44
GuiControlGet, UpDown
Gui, Show
UpDown:
GuiControl,, Edit, % Round(UpDown / 100, 2)
ReturnСпасибо! Все способы хорошие и все работают.
Не всё так просто оказалось. Ручной ввод ведь никто не отменял и обратная связь тоже нужна. Но применить тот же трюк не получается из-за рекурсии.
Какой может быть выход из ситуации?
Так?
Gui, Font, s55 bold, LCDMono2
Gui, Add, Edit, vEdit gEdit Center Number, 100000
Gui, Add, UpDown, vUpDown gUpDown -16 w44 hp x+0 Range0-10000, 5000
GuiControl, Move, UpDown, w44
GuiControlGet, UpDown
Gui, Show
UpDown:
GuiControl,, Edit, % Round(UpDown / 100, 2)
Return
Edit:
GuiControlGet, Edit
GuiControl,, UpDown, % Edit*100
Return
/* Ну или на всякий так:
Edit:
GuiControlGet, Edit
If (Edit < 0 || Edit > 100)
GuiControl,, Edit, % Round(UpDown / 100, 2)
Else
GuiControl,, UpDown, % Edit*100
Return
*/
Так точно лучше. )
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться