Автор Тема: Вертикальная полоса прокрутки  (Прочитано 351 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн rybik [?]

  • Новичок
  • *
  • Сообщений: 52
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Как мне сделать появление полосы прокрутки если элементы выходят за границы окна?
« Последнее редактирование: Август 13, 2018, 13:49:35 от rybik »

Русское сообщество AutoIt

Вертикальная полоса прокрутки
« Отправлен: Август 12, 2018, 00:52:35 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2785
  • Репутация: 470
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса пропрутки
« Ответ #1, Отправлен: Август 12, 2018, 05:15:16 »
привет. очень не информативно.
попробую догадаться - ЭТО?
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн rybik [?]

  • Новичок
  • *
  • Сообщений: 52

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса пропрутки
« Ответ #2, Отправлен: Август 12, 2018, 15:47:20 »
Код: AutoIt [Выделить]
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

AutoItSetOption("GUIResizeMode", 2 + 32 + 256 + 512)

Global $Window = GUICreate("Window", 425, 140, 800, 0, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS))

GUICtrlCreateButton("Buttom", 100, 100, 150, 150)
GUISetState(@SW_SHOW, $Window)

While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd


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

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса пропрутки
« Ответ #3, Отправлен: Август 12, 2018, 18:09:11 »
Что является изначальной константой: расположение элементов в окне или размер окна?
Как вариант можно ограничить минимальный размер окна.

Русское сообщество AutoIt

Re: Вертикальная полоса пропрутки
« Ответ #3 Отправлен: Август 12, 2018, 18:09:11 »

Оффлайн rybik [?]

  • Новичок
  • *
  • Сообщений: 52

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса пропрутки
« Ответ #4, Отправлен: Август 12, 2018, 18:20:49 »
Что является изначальной константой: расположение элементов в окне или размер окна?[/url].

Константой является расположение элементов в окне. Когда я меняю размер окна с помощью мышки элементы становятся за областью видимого окна и должна появляться полоса прокрутки.
Еще у меня элементы в окне будут добавляться при нажатии клавиши и окно будет увеличиваться, как только упрется в границу экрана, должна появиться полоса прокрутки.
« Последнее редактирование: Август 12, 2018, 23:24:09 от rybik »

Помечен как лучший ответ пользователем rybik Отправлен Август 13, 2018, 20:07:56

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3941
  • Репутация: 1043
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Вертикальная полоса пропрутки
« Ответ #5, Отправлен: Август 13, 2018, 00:33:07 »
rybik
Полоса прокрутки - один из самых сложных элементов GUI
Код: AutoIt [Выделить]
#include <GUIScrollbars_Ex.au3> ; https://www.autoitscript.com/forum/topic/113723-scrollbars-made-easy-new-version-13-may-18/
#include <GUIConstants.au3>

AutoItSetOption("GUIResizeMode", 2 + 32 + 256 + 512)

$Window = GUICreate("Window", 425, 140, 800, 0, $WS_OVERLAPPEDWINDOW)
$Button = GUICtrlCreateButton("Добавить кнопку", 100, 100, 150, 150)
GUISetState(@SW_SHOW, $Window)
$Btn = -1

_GUIScrollbars_Generate($Window, 1, 1) ; создание полос прокрутки
_GUIScrollbars_ReSizer($Window, 250, 250) ; установка начальных границ прокрутки

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
    Case $Button
      $Btn = GUICtrlCreateButton("Удалить кнопку", 300, 100, 150, 150)
      GUICtrlSetState($Button, $GUI_DISABLE)
      _GUIScrollbars_ReSizer($Window, 450, 250) ; установка новых границ прокрутки
    Case $Btn
      GUICtrlDelete($Btn)
      $Btn = -1
      GUICtrlSetState($Button, $GUI_ENABLE)
      _GUIScrollbars_ReSizer($Window, 250, 250) ; возврат начальных границ прокрутки
  EndSwitch
WEnd



Добавлено: Август 13, 2018, 00:38:40
И опечатку в названии темы исправьте: пропрутки ;)
« Последнее редактирование: Август 13, 2018, 00:38:40 от InnI, Причина: Объединение сообщений »

Оффлайн rybik [?]

  • Новичок
  • *
  • Сообщений: 52

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса пропрутки
« Ответ #6, Отправлен: Август 13, 2018, 13:51:16 »
rybik
Полоса прокрутки - один из самых сложных элементов GUI
Код: AutoIt [Выделить]
#include <GUIScrollbars_Ex.au3> ; https://www.autoitscript.com/forum/topic/113723-scrollbars-made-easy-new-version-13-may-18/
#include <GUIConstants.au3>

AutoItSetOption("GUIResizeMode", 2 + 32 + 256 + 512)

$Window = GUICreate("Window", 425, 140, 800, 0, $WS_OVERLAPPEDWINDOW)
$Button = GUICtrlCreateButton("Добавить кнопку", 100, 100, 150, 150)
GUISetState(@SW_SHOW, $Window)
$Btn = -1

_GUIScrollbars_Generate($Window, 1, 1) ; создание полос прокрутки
_GUIScrollbars_ReSizer($Window, 250, 250) ; установка начальных границ прокрутки

While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
    Case $Button
      $Btn = GUICtrlCreateButton("Удалить кнопку", 300, 100, 150, 150)
      GUICtrlSetState($Button, $GUI_DISABLE)
      _GUIScrollbars_ReSizer($Window, 450, 250) ; установка новых границ прокрутки
    Case $Btn
      GUICtrlDelete($Btn)
      $Btn = -1
      GUICtrlSetState($Button, $GUI_ENABLE)
      _GUIScrollbars_ReSizer($Window, 250, 250) ; возврат начальных границ прокрутки
  EndSwitch
WEnd



Добавлено: Август 13, 2018, 00:38:40
И опечатку в названии темы исправьте: пропрутки ;)

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

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2785
  • Репутация: 470
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса прокрутки
« Ответ #7, Отправлен: Август 13, 2018, 16:25:10 »
WM_GETMINMAXINFO
Устанавливаешь ограничение по ширине

Русское сообщество AutoIt

Re: Вертикальная полоса прокрутки
« Ответ #7 Отправлен: Август 13, 2018, 16:25:10 »

Оффлайн rybik [?]

  • Новичок
  • *
  • Сообщений: 52

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Вертикальная полоса прокрутки
« Ответ #8, Отправлен: Август 13, 2018, 20:08:22 »
WM_GETMINMAXINFO
Устанавливаешь ограничение по ширине

благодарю

Русское сообщество AutoIt

Re: Вертикальная полоса прокрутки
« Ответ #8 Отправлен: Август 13, 2018, 20:08:22 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
7046 Просмотров
Последний ответ Октябрь 24, 2014, 14:52:06
от Ruslan_2005
0 Ответов
3548 Просмотров
Последний ответ Ноябрь 07, 2009, 02:50:36
от CreatoR
8 Ответов
6377 Просмотров
Последний ответ Ноябрь 18, 2009, 17:30:36
от Anton
2 Ответов
4241 Просмотров
Последний ответ Ноябрь 23, 2009, 14:38:57
от XpycT
12 Ответов
5081 Просмотров
Последний ответ Июль 23, 2012, 00:42:26
от vlad6k
5 Ответов
4620 Просмотров
Последний ответ Ноябрь 26, 2011, 16:23:29
от AZJIO
3 Ответов
2262 Просмотров
Последний ответ Январь 30, 2013, 13:02:15
от CreatoR
5 Ответов
2213 Просмотров
Последний ответ Июнь 20, 2014, 16:19:06
от InnI
2 Ответов
954 Просмотров
Последний ответ Декабрь 05, 2015, 03:17:31
от BlackPhreaker
8 Ответов
3085 Просмотров
Последний ответ Апрель 01, 2016, 13:30:27
от Garrett