Help - Как сделать "фрейм" на форме?

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

Help - Как сделать "фрейм" на форме?

Сообщение Dummiel » 29.07.2004 (Чт) 6:53

Как на форме сделать фреймы по типу как при просмотре Help’а в MS Office? Т.е., что-бы при помещении курсора на границу между фреймами он бы менялся на двунаправленную стрелку влево-вправо при вертикальном фрейме или вверх-вниз при горизонтальном и перетаски-вал бы потом границы фреймов. Соответственно, поместить туда два Textbox’а или два MSFlex-Grid’а (для моей задачи MSFlexGrid’ы нужнее), причем так, чтобы при изменении размеров фрей-мов их содержимое отражалось бы как положено, т.е. начало было бы всегда слева-сверху.
Это реализовано в проге на VB 5, о которой я упоминал, но там во фреймах DBGrid’ы, а с ними мой VB 6 не дружит. И потом, на форумах часто упоминают о том, что MSFlexGrid лучше (или проще?) DBGrid’а.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.07.2004 (Чт) 8:55

это называется не фрэйм а сплиттер
и делается примерно так:
1. помещаем на форму, ну скажем, TextBox (имя = Text1), ListBox (имя = List1) и Image (имя = imgSplit)
2. в коде формы пишем следующее:
Код: Выделить всё
Option Explicit

Private splitX As Single
Private OldX As Single

Private Sub Form_Load()
  splitX = Me.ScaleWidth \ 4
End Sub

Private Sub Form_Resize()
  imgSplit.Move splitX, 0, 60, Me.ScaleHeight
  Text1.Move splitX + 60, 0, Me.ScaleWidth - splitX - 60, Me.ScaleHeight
  List1.Move 0, 0, splitX, Me.ScaleHeight
End Sub

Private Sub imgSplit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  OldX = X
End Sub

Private Sub imgSplit_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = vbLeftButton Then
    splitX = splitX + (X - OldX)
    If splitX < Me.ScaleWidth \ 4 Then splitX = Me.ScaleWidth \ 4
    If splitX > Me.ScaleWidth \ 2 Then splitX = Me.ScaleWidth \ 2
    Form_Resize
  End If
End Sub


да, и еще... чуть не забыл - у imgSplit установи свойство MousePointer = 9 - Size W E
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.07.2004 (Чт) 10:10

Вот мой самописный сплиттер - работает даже в MDI-окне. Если кому-то понадобится MSM-пакет для Windows Installer, стучитесь - скину.
Вложения
XSplitter.zip
VB Splitter
(10.18 Кб) Скачиваний: 83


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

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

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

    TopList