Прокрутка формы с помощью ScrollBar.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Прокрутка формы с помощью ScrollBar.

Сообщение ark » 04.08.2012 (Сб) 5:29

Хакер писал(а): положить весь хлам в контрол-контейнер и двигать контрол-контейнер
Так можно весь хлам положить в контейнер и двигать контейнер через ScrollWindow. Правда, таки да, по picContainer.left=picContainer.left прыгнет сам контейнер.
Mikle писал(а):А что тут неэстетичного?
VB - шные скроллбары с остающимся фокусом.
Вообще-то, положа руку на сердце, в рабочем пректе я бы так и сделал, через PictureBox. Пример писался чисто_в_познавательных_целях. Вы на год создания модуля гляньте :D
Хакер писал(а):«дык ыть работает жеж!».
А чем не аргумент? :D Именно им я от Мэта Курланда отбивался в 2001, когда запостил свою первую CallAPIByName, а он доказывал, что так делать не кошерно и надо пользовать его делегаты. :D Кстати, в отличии от тебя, он не привёл ни одного аргумента типа .left=.left, просто - так делать нельзя, потому что нельзя. И опасно.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Прокрутка формы с помощью ScrollBar.

Сообщение Хакер » 04.08.2012 (Сб) 5:42

ark писал(а):Так можно весь хлам положить в контейнер и двигать контейнер через ScrollWindow. Правда, таки да, по picContainer.left=picContainer.left прыгнет сам контейнер.

Какой резон двигать контейнер через один единственный ScrollWindow, что неправильно и ведёт к непредсказуемым глюкам, когда можно двигать контейнер через один единственный вызов .Move, что правильно и не ведёт к глюкам?

ark писал(а):VB - шные скроллбары с остающимся фокусом.
Вообще-то, положа руку на сердце, в рабочем пректе я бы так и сделал, через PictureBox. Пример писался чисто_в_познавательных_целях. Вы на год создания модуля гляньте :D

Это не является их жестко фиксированным поведением. И вообще никто не мешает дать окну оконный стили скроллинга (WS_HSCROLL, WS_VSCROLL) и двигать контейнер в ответ на сообщения о скроллинге. Но двигать, меняя свойства Top и Left, или делая единый вызов метода Move, но только не ScrollWindowEx.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: Прокрутка формы с помощью ScrollBar.

Сообщение ark » 04.08.2012 (Сб) 6:41

Хакер писал(а):Какой резон двигать контейнер через один единственный ScrollWindow, что неправильно и ведёт к непредсказуемым глюкам, когда можно двигать контейнер через один единственный вызов .Move, что правильно и не ведёт к глюкам?
Да ладно, убедил, согласен я. Это я по инерции отбрыкивался. Лучше скажи, как думешь, есть ли возможность послать флаг SL_FORCE_DIRECT_WRITE для (Nt)WriteFile из user mode? Ну, хоть как-нить через ж..., через SetThreadContext, например?

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: Прокрутка формы с помощью ScrollBar.

Сообщение uni » 04.08.2012 (Сб) 6:57

Samovar писал(а):/Off
Простите за вопрос uni,
А что за программу стирки Вы делали? Неужели наконец-то белую технику начали делать с программным интерфейсом и с портом под управление домашним компютером!?
/EndOff

Промышленные стиральные машины все такие. У нас в России только одна такая фирма, которая занимается производством промышленных стиральных машин и прочего оборудования для прачечных - Вязьма. Это Конфигуратор для её контроллеров, которые работают с флешкой. На флешку записывается файл, она вставляется в контроллер и ему доступны все программы, созданные в Конфигураторе.

На картинке динамически создаются виды параметров до 80 шагов одной программы. У меня не просто элементы прокручиваются, они ещё динамически перестраиваются при изменении размеров формы. Табличка - это MSFlexGrid в виде коллекции.
Россия навсегда!
Сетрификаты

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Прокрутка формы с помощью ScrollBar.

Сообщение Хакер » 04.08.2012 (Сб) 6:58

Что за оффтоп?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: Прокрутка формы с помощью ScrollBar.

Сообщение uni » 04.08.2012 (Сб) 10:19

Хакер писал(а):Что за оффтоп?

Тонкий намёк, но я его понял. Давай реквизиты, так уж и быть, я скину тебе 50 руб за возможность демонстрации реального примера скроллинга при помощи FlatScrollBar.

VB - A demonstration of how to scroll a form.
Россия навсегда!
Сетрификаты

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Прокрутка формы с помощью ScrollBar.

Сообщение Хакер » 04.08.2012 (Сб) 14:49

uni, ты старнный ей богу. Я имею в виду все твои причуды, которые ты описавал годами ранее. Но в данном случае дело хотя бы в том, что фраза «Что за оффтоп» писалась ark-у, который начал в теме о скроллинге говорить про свою проблему и SetThreadContext. Пока я писал фразы, ты ответил. Но поскольку твой пост о стиральных машинках — тоже оффтоп, я не стал модифицировать свой пост (хотя форум меня предупредил и дал такую возможность).

Никаких намёков. Причём тут к тому же FlatScrollBar? Кому он вообще сдался? И зачем мне ссылка на форум с темой «демонстрация того, как скроллить форму?». Это же как надо опуститься, чтобы смотреть подобные топики. Это всё равно что смотреть топики «как правильно ходить в туалет». Буэ.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

uni
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 05.05.2006 (Пт) 15:24
Откуда: Екатеринбург

Re: Прокрутка формы с помощью ScrollBar.

Сообщение uni » 04.08.2012 (Сб) 16:47

Не понял на счёт туалета, а мои "странные причуды" были реализованы и спокойно себе работают. Была вот у меня причуда: сделать Undo/Redo в моей программе, ибо заколебало её тестировать без возможности отката (см. картинку, там есть кнопки на панели инструменов). Так и не нашёл примера как это сделать, покумекал и реализовал бесконечный Undo/Redo, но для этого мне пришлось существенно побегать по таким вот форумам как там, чтобы части кода пособирать (у меня сжатие используется). А там есть на что посмотреть, например, я там нашёл ссылку как реализовать в VB6 многопоточность :) : Interop Forms Toolkit 2.0 Tutorial.

Мне вот тоже нужно было реализовать прокрутку. Только не формы, а содержимого фрейма. Стандартная полоса прокрутки меня не устроила в ввиду своей убогости: жуткий вид и мигание. Потому взял ту, что покрасивше. Там же ведь тоже есть свои тонкости. К примеру, у меня 80 таблиц с параметрами (если по максимуму) и нужно их прокручивать вверх-вниз. Как оказалось, это не так просто, т.к. Value, если мне память не изменяет (давно дело было) имеет целый тип и его не хватает на прямую подстановку смещений. Нужно использовать относительные измерения, т.е. 0 - 100% и пересчитывать это дело. Кроме того, как я указывал, у меня вид содержимого фрейма автоматически раскладывается при изменении размер формы, что тоже наложило отпечаток на сложность реализации, поэтому я код не стал приводить.

Там в топике простой пример и он работает (я проверил, прежде чем показывать). Он примитивный и не использует никакого Win32API. По-моему, там сделано как раз то, о чём вы тут упоминали. Подойдёт ли этот пример пусть уж автор местный решает.
Россия навсегда!
Сетрификаты

Пред.

Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот и гости: 67

    TopList