ScrollBar

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

ScrollBar

Сообщение 1Steps » 23.01.2009 (Пт) 3:31

Нарисовать ScrollBar не состовляет большого труда.

Вопрос.
Как этот ScrollBar подсунуть стандартному TextBox, TreeView, Lixtbox и т.д?

Или переформулирую.
Как отрисовать ScrollBar находящийся на TextBox, TreeView, Lixtbox и т.д?

Может не в теме, если что, перенесите.
Удалена за ненадобностью.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ScrollBar

Сообщение 1Steps » 24.01.2009 (Сб) 18:41

Интересно. Что никто не знает?
Мне не нужен код. Мне нужно теоретически.
Да и вообще, это возможно без лишней головной боли?
Удалена за ненадобностью.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ScrollBar

Сообщение MIT » 25.01.2009 (Вс) 17:40

Не очень понял о чем ты. Прикрепляю пример - исходник - может оно.

skinScrolling_src.rar
(16.29 Кб) Скачиваний: 69


:cyclops:
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ScrollBar

Сообщение 1Steps » 25.01.2009 (Вс) 17:45

Спасибо. Гляну.
Удалена за ненадобностью.

Severus_Snape
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 04.02.2009 (Ср) 17:12

Re: ScrollBar

Сообщение Severus_Snape » 04.02.2009 (Ср) 23:40

1)Берешь элемент Panel; в него кладешь то, что нужно скроллить(допустим текстбокс);
2) скроллируемому элементу не ставить своих скроллов, поставить полную ширину или высоту(кусок скроется за областью панели)
3) создаешь независимый скроллбар.
4) на его событие прокрутки вешаешь код типа такого:
Код: Выделить всё
Dim locate As Point
locate.Y = - VScrollBar1.Value * 3
TextBox1.Location = locate


Всё! Действенный способ. :D

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ScrollBar

Сообщение MIT » 05.02.2009 (Чт) 0:56

А если в текстбоксе текста много будет? Что, делать ему высоту 1000px? А если текста очень много, и высота понадобится больше экрана, то что?
Нет, такой способ (в любом случае такая реализация) не катит.
Последний раз редактировалось MIT 05.02.2009 (Чт) 19:02, всего редактировалось 1 раз.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ScrollBar

Сообщение 1Steps » 05.02.2009 (Чт) 1:11

1)Берешь элемент Panel; в него кладешь то, что нужно скроллить(допустим текстбокс);
2) скроллируемому элементу не ставить своих скроллов, поставить полную ширину или высоту(кусок скроется за областью панели)
3) создаешь независимый скроллбар.
4) на его событие прокрутки вешаешь код типа такого:
Спасибо. Я так и сделал. :D
Удалена за ненадобностью.

Severus_Snape
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 04.02.2009 (Ср) 17:12

Re: ScrollBar

Сообщение Severus_Snape » 05.02.2009 (Чт) 1:50

MIT писал(а):А если в тпкстбоксе текста мноого будет? Что, делать ему высоту 1000px? А если текста очень много, и высота понадобится больше экрана, то что?
Нет такой способ (в любом случае такая реализация) не катит.

я ставил пикчурбоксу больше 2000 пикселей ширины и грузил его в панель - и ничего. Проц нагружался даже меньше, чем при прокрутке скроллом самой панели. Почему не катит? :)

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ScrollBar

Сообщение 1Steps » 05.02.2009 (Чт) 2:51

Нет такой способ (в любом случае такая реализация) не катит.
Почему?
Удалена за ненадобностью.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ScrollBar

Сообщение MIT » 05.02.2009 (Чт) 14:53

Такой способ можно юзать для промотки группы контролов (например кучи чекбоксов), а не одного. Попытаюсь объяснить почему:

Во-первых меня терзает смутное подозрение, что "раздуть" контрол шире (выше) размеров PrimaryScreen не получится (попробуй раздвинуть форму шире экрана - не выйдет, хотя по поводу контролов не уверен)
Во-вторых в некоторых контролах важен отображаемый а не видимый участок. Возьмем ListView, там есть процедура EnsureVisible (которая должна "перематать" контрол на указанный элемент и показать его). А как она, по вашему, будет работать, если ListView растянут на всю высоту (а соответственно все элементы, по мнению контрола, видимы)?
В-третьих если (опять возьмем ListView) у меня 10000 элементов, то какая там у него высота-то будет?..
В-четвертых в некоторых случаях сложно просчитать необходимую высоту: для ListView тут просто - Кол-во_элементов * высоту_отдельного, даже с текстбоксом - MeasureString, а как просчитать высоту сложноформатированного текста RichTextBox`а?
В-пятых - в "умных" контролах есть функция скрытия скроллбаров прои отсутствии необходимости в них. Как это отловить?

Единственный плюс (хотя его полезность весьма сомнительна) - это возможность реализовать "перемотку пальцем", наподобие Adobe Reader`а или Photoshop`а.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Severus_Snape
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 04.02.2009 (Ср) 17:12

Re: ScrollBar

Сообщение Severus_Snape » 05.02.2009 (Чт) 23:11

Согласен, это вариант типа "чесать левой пяткой правое ухо", но для чего-то простенького пойдет. :)

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ScrollBar

Сообщение MIT » 06.02.2009 (Пт) 0:08

Да, тут много ограничений получается, но если автору ближе подобный метод это его дело, конечно.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ScrollBar

Сообщение 1Steps » 06.02.2009 (Пт) 1:36

Код: Выделить всё
... важен отображаемый а не видимый участок. Возьмем ListView, там есть процедура EnsureVisible
А кто мешает её реализовать.
Пример с ЛистВью не совсем подходящий.

На картинке Panel в которой PictureBox(SizeMode=AutoSize, Picture=360x318).
Студия позволяет раздвигать размеры PictureBox больше размеров формы и поверь на слово, больше размеров Screena. Или это только в дизайнере?

Может у кого-то есть более весомые аргументы?
Вложения
Pic.PNG
Pic.PNG (25.18 Кб) Просмотров: 1188
Удалена за ненадобностью.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ScrollBar

Сообщение MIT » 10.02.2009 (Вт) 19:53

Сразу что-то не ответил... Ладно, думаю не поздно.

1Steps писал(а):А кто мешает её реализовать.
А оно тебе надо?
1Steps писал(а):Пример с ЛистВью не совсем подходящий.
По моему он очень наглядно показывает возможные проблемы такого подхода

1Steps писал(а):Студия позволяет раздвигать размеры PictureBox больше размеров формы и поверь на слово, больше размеров Screena. Или это только в дизайнере?
Наверно ты не совсем понимаешь что такое PrimaryScreen...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

    TopList