Скроллинг формы. Как?

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

Скроллинг формы. Как?

Сообщение Max22 » 19.08.2003 (Вт) 18:38

Хотел сделать дочернюю MDI форму как в Word'е, т.е. по центру формы как-бы лист расположен, а уж на нём всякие контролы и т.д.
Ну ладно, сделал я форму, разместил на ней рамку (Frame) настроил размеры, цвета и т.д. Всё хорошо, вот только нижнюю часть рамки увидеть то никак не возможно :?
Как быть?
Пробовал изменить стиль окна с помощью SetWindowLong. Полосы прокрутки появляются, вот только ничего они не прокручивают... :(

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 20.08.2003 (Ср) 10:40

Чего-то я не совсем понял, но есть у MDI формы свойство Scrollbars, которое позволяет (при значении равном True) передвинуть дочернюю форму в пределах MDI формы, если она выходит за границы MDI формы.
ЗЫ Зачем ты хотел изменять стиль окна? чего-то не пойму (может пояснишь конкретнее что надо?)
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Max22
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 19.08.2003 (Вт) 17:57
Откуда: Уфа

Сообщение Max22 » 20.08.2003 (Ср) 16:40

Нет, не дочернюю форму внутри MDI формы, а содержимое дочерней формы прокручивать надо.
Содержимое выходит за границы окна, вот его то и хотелось бы увидеть...

Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Сообщение Alex_new_2030 » 21.08.2003 (Чт) 5:32

Если в VB прокрутить надо то можно фрейму отрицательное значение top поставить, он вверх и уползет.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 21.08.2003 (Чт) 13:09

ALEX, ты прав :wink:
Я вот сам заинтересовался этим вопросом и вот, что у меня вышло (просто чуть подробнее):
Код: Выделить всё
'переменная, которой присвоим начальное значение проперти Top фрэйма
Public frmtop

Private Sub Form_Load()
'если двигать нижнюю границу фрайма
'до самого верха
VScroll1.Max = Frame1.Height

' или так - это если двигать нижнюю границу фрэйма относительно
' нижней границы формы
VScroll1.Max = Form1.ScaleHeight - 1000

frmtop = Frame1.Top
VScroll1.SmallChange = Int(VScroll1.Max / 100) ' здесь можешь на свой вкус
VScroll1.LargeChange = Int(VScroll1.Max / 10) ' то же самое
End Sub

Private Sub VScroll1_Change()
' frmtop позволит не превысить перемещение верхней и нижней
' границы фрэйма выше изначального значения проперти Top фрэйма
' (а вообще это на твой вкус - просто посмотри как мой вариант
' работает  :D )
Frame1.Top = -VScroll1.Value + frmtop
End Sub

Private Sub VScroll1_Scroll()
Frame1.Top = -VScroll1.Value + frmtop
End Sub
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

Max22
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 19.08.2003 (Вт) 17:57
Откуда: Уфа

Спасибо

Сообщение Max22 » 21.08.2003 (Чт) 18:07

:idea: Идею понял, бум пробовать.

Max22
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 19.08.2003 (Вт) 17:57
Откуда: Уфа

Сообщение Max22 » 21.08.2003 (Чт) 22:54

Спасибо, в целом всё работает не плохо 8) , вот только VScroll немного не похож на стандартную полосу прокрутки ХР, от колёсика мышки не прокручивается и т.п. мелочи...
Чтобы сделать со стандартными полосами я так понял нужно изменить стиль окна, задать максимум/минимум для бегунка(SetScrollRange?), а дальше перехватывать сообщения WM_VSCROLL и т.д. :?
Стоит ли овчинка выделки?


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

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

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

    TopList