Что нового

после изменения размена GUI со Scrollbar кнопки меняют взаимное расположение

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
Помогите исправить глюк, в этой проге программно добавляю 19 кнопок, для этого опускаю на 12 кнопке, например, бегун Scrollbar вниз и там оставляю, после этого меняю размер окна и кнопки наезжают друг на друга. в чем ошибка?



Код:
#Include <GuiScroll.au3>

$i=1

$GUI = GUICreate("",1000,500, -1, -1,$WS_OVERLAPPEDWINDOW)
$iBar = Scrollbar_Create($GUI, $SB_VERT, 635)
Scrollbar_Step(35, $GUI, $SB_VERT)
$Boot = GUICtrlCreateButton("Добавить",800,180,100,20)
GUISetState()

While 1
	$Element = GUIGetMsg()
	Switch $Element
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Boot
				$Pos = Scrollbar_GetPos($GUI, $SB_VERT)
				GUICtrlCreateButton($i,5,(35*$i)-$Pos,30,30)
;~ 				GUICtrlSetResizing(-1, $GUI_DOCKALL)
				$i += 1
	EndSwitch
WEnd
 

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
AlexxxMksv
опускаю на 12 кнопке, например, бегун Scrollbar вниз и там оставляю
А затем вы уменьшаете Y-координату кнопки на величину позиции скрола
Код:
(35*$i)-$Pos
Вот кнопка и создаётся на 135 пикселей выше.
 
Автор
A

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
InnI сказал(а):
AlexxxMksv
опускаю на 12 кнопке, например, бегун Scrollbar вниз и там оставляю
А затем вы уменьшаете Y-координату кнопки на величину позиции скрола
Код:
(35*$i)-$Pos
Вот кнопка и создаётся на 135 пикселей выше.

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

подробне опишу повторите так же:
- запустить прогу
- добавить кнопку одну
- сдвинуть скрол на одну позицию
- добавить еще одну кнопку (она станет радом)
- меняем размер окна

и в результате вторая кнопка наезжает первую.
ожидается что вторая кнопка останется там же где и была.
вторая кнопка ставится с учетом сдвига (35*$i)-$Pos специально, иначе после сдвига скрола кнопка станет не на свое место. А надо ее поставить именно туда.
почему установленная вторая кнопка меняет свое расположение относительно первой. ?

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

InnI

AutoIT Гуру
Сообщения
4,923
Репутация
1,432
AlexxxMksv
(она станет рядом)
Она не встанет рядом - она будет создана выше на позицию скрола. А то, что вы видите - это какой-то глюк GUI.
Просто уберите -$Pos и кнопки будут созданы друг под другом. Даже если вы сместите скрол вниз и увидите "неправильное" создание очередной кнопки, то просто измените размер окна и кнопки "встанут как надо". Это какая-то проблема с обновлением окна.
 
Автор
A

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
InnI сказал(а):
AlexxxMksv
(она станет рядом)
Она не встанет рядом - она будет создана выше на позицию скрола. А то, что вы видите - это какой-то глюк GUI.
Просто уберите -$Pos и кнопки будут созданы друг под другом. Даже если вы сместите скрол вниз и увидите "неправильное" создание очередной кнопки, то просто измените размер окна и кнопки "встанут как надо". Это какая-то проблема с обновлением окна.


Да глюк! совершенно согласен. уберу -$Pos или оставлю все равно глюк не уйдет. после изменения размера окна координата второй кнопки меняется. это видно и визуально и если получить координаты ControlGetPos до изменения размера окна и после.


хотелось не решать оставить или нет -$Pos, а устранить глюк, есть такой способ?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это недоработка GuiScroll.au3. Копайте в эту сторону или создавайте полосу прокрутки классическим способом, без UDF.
 
Автор
A

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
Понял, спасибо всем буду искать другой способ
 
Автор
A

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
Нашел такое решение проблемы

https://www.autoitscript.com/forum/topic/79684-scroll-udf-much-easier-than-the-_guiscrollbars-udf/
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это же тот же UDF, что вы использовали ранее.
 
Автор
A

AlexxxMksv

Новичок
Сообщения
39
Репутация
0
Yashied сказал(а):
Это же тот же UDF, что вы использовали ранее.

Это да. Я в Autoit новичок, пока других способов не знаю. Прошу вас привести пример без UDF.
 
Верх