Что нового

[Баг] Странное поведение при изменений размера CheckBox

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Посмотрите на этот пример:

Код:
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test Script", 300, 200)
$nCheckBox = GUICtrlCreateCheckbox("Test", 20, 40, -1, 20)
$nButton = GUICtrlCreateButton("Set data", 20, 80, 60, 20)

GUISetState(@SW_SHOW, $hGUI)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			ControlMove($hGUI, "", $nCheckBox, Default, Default, 60, 15)
			;GUICtrlSetPos($nCheckBox, 20, 40, 60, 15)
			GUICtrlSetData($nCheckBox, "Test #2")
	EndSwitch
WEnd


При нажатий на «Set Data», Checkbox поднимается немного вверх, хотя и не должен (см. Default в качестве параметров x/y у функций ControlMove). Впрочем проблема даже не в ControlMove или GUICtrlSetPos, проблема в том, что параметр Height (высота элемента) не совпадает с изначальным размером Checkbox'а, стоит только задать там 20, как всё становится на свои места.

Такое ощущение, что при попытке изменить размер элемента, AutoIt делает перерасчёт его высоты, методом вычитания наименьшего числа с наибольшего (с задаваемого и оригинального размера), причём это происходит всего один раз, при первой попытке изменить размер.
Т.е например если оригинальная высота это 20, а задаваемая 25, то элемент двигается на 5 вниз, и наоборот, если оригинальная высота 20, а задаваемая 15, то элемент двигается на 5 вверх.

У кого какие мысли будут по этому поводу? :scratch:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
CreatoR
Это не баг. Просто выравнивание по вертикали (по умолчанию) стоит по центру. Поставьте стиль $BS_TOP, и всё будет в порядке.
Код:
$nCheckBox = GUICtrlCreateCheckbox("Test", 20, 40, -1, 20, $BS_TOP)
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Garrett [?]
Это не баг. Просто выравнивание по вертикали (по умолчанию) стоит по центру
Странный это “не баг”.
В справке об этом должны были упомянуть, я потратил пол часа из своей жизни на эту мелочь :wall_brake:

Поставьте стиль $BS_TOP, и всё будет в порядке
Опять же, стиль от кнопки, и откуда мы должны знать о том что именно он должен использоваться для решения этого “не бага”. Понимаю конечно, методом проб и ошибок, но всё же, так не должно быть.

P.S
Отправлять баг репорт по теме (хотябы по части документаций), или закроют как Rejected/Wont fix? :whistle:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
CreatoR [?]
Опять же, стиль от кнопки
А разве есть отдельно такой control как chekbox? По-моему это разновидность button.
Код:
$Button = GUICtrlCreateButton("Button", 18, 50, 75, 25, $BS_CHECKBOX)


и откуда мы должны знать о том что именно он должен использоваться
Ну, IMHO отсюда и отсюда



Добавлено:
Сообщение автоматически объединено:

CreatoR [?]
Отправлять баг репорт по теме (хотябы по части документаций), или закроют как Rejected/Wont fix?
whistle.gif
IMHO лишним не будет.
 
Верх