home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD1306512262000.psc / Controls / SplitPanel.ctl < prev    next >
Encoding:
Text File  |  2000-11-05  |  4.6 KB  |  160 lines

  1. VERSION 5.00
  2. Begin VB.UserControl SplitPanel 
  3.    Alignable       =   -1  'True
  4.    BorderStyle     =   1  'Fixed Single
  5.    ClientHeight    =   1185
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   1170
  9.    ControlContainer=   -1  'True
  10.    ScaleHeight     =   1185
  11.    ScaleWidth      =   1170
  12.    ToolboxBitmap   =   "SplitPanel.ctx":0000
  13.    Begin VB.PictureBox Splitter 
  14.       BorderStyle     =   0  'None
  15.       Height          =   3540
  16.       Left            =   855
  17.       ScaleHeight     =   3540
  18.       ScaleWidth      =   165
  19.       TabIndex        =   0
  20.       Top             =   30
  21.       Width           =   165
  22.    End
  23. End
  24. Attribute VB_Name = "SplitPanel"
  25. Attribute VB_GlobalNameSpace = False
  26. Attribute VB_Creatable = True
  27. Attribute VB_PredeclaredId = False
  28. Attribute VB_Exposed = False
  29. Option Explicit
  30.  
  31.  
  32. Private Const SPLITWIDTH As Single = 80
  33.  
  34. Private mHorizontalSplit As Boolean
  35. Private mControl1 As Object
  36. Private mControl2 As Object
  37. Private mSplitPercent As Single
  38.  
  39. Public Event Resize()
  40.  
  41.  
  42.  
  43. Public Property Get HorizontalSplit() As Boolean
  44.     HorizontalSplit = mHorizontalSplit
  45. End Property
  46. Public Property Let HorizontalSplit(val As Boolean)
  47.     mHorizontalSplit = val
  48.     If mHorizontalSplit Then
  49.         Splitter.MousePointer = 7
  50.     Else
  51.         Splitter.MousePointer = 9
  52.     End If
  53.     PropertyChanged "HorizontalSplit"
  54.     UserControl_Resize
  55. End Property
  56.  
  57. Public Property Get Control1() As Object
  58.     Set Control1 = mControl1
  59. End Property
  60. Public Property Set Control1(ctl As Object)
  61.     Set mControl1 = ctl
  62.     PropertyChanged "Control1"
  63.     UserControl_Resize
  64. End Property
  65.  
  66. Public Property Get Control2() As Object
  67.     Set Control2 = mControl2
  68. End Property
  69. Public Property Set Control2(ctl As Object)
  70.     Set mControl2 = ctl
  71.     PropertyChanged "Control2"
  72.     UserControl_Resize
  73. End Property
  74.  
  75. Public Property Get SplitPercent() As Byte
  76.     SplitPercent = mSplitPercent * 100
  77. End Property
  78. Public Property Let SplitPercent(val As Byte)
  79.     mSplitPercent = val / 100
  80.     PropertyChanged "SplitPercent"
  81.     UserControl_Resize
  82. End Property
  83.  
  84. Private Sub UserControl_InitProperties()
  85.     HorizontalSplit = False
  86.     SplitPercent = 50
  87. End Sub
  88.  
  89. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  90.     On Error Resume Next
  91.     HorizontalSplit = PropBag.ReadProperty("HorizontalSplit", False)
  92.     SplitPercent = PropBag.ReadProperty("SplitPercent", 50)
  93. End Sub
  94.  
  95. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  96.     PropBag.WriteProperty "HorizontalSplit", HorizontalSplit, False
  97.     PropBag.WriteProperty "SplitPercent", SplitPercent, 50
  98. End Sub
  99.  
  100. Private Sub splitter_mousedown(Button As Integer, Shift As Integer, x As Single, y As Single)
  101.     Splitter.BackColor = &H80000008
  102.     Splitter.ZOrder
  103. End Sub
  104.  
  105. Private Sub splitter_mousemove(Button As Integer, Shift As Integer, x As Single, y As Single)
  106.     If Button = vbLeftButton Then
  107.         If mHorizontalSplit Then
  108.             y = Splitter.Top - (SPLITWIDTH - y)
  109.             mSplitPercent = y / UserControl.Height
  110.             Splitter.Move 0, y
  111.         Else
  112.             x = Splitter.Left - (SPLITWIDTH - x)
  113.             mSplitPercent = x / UserControl.Width
  114.             Splitter.Move x
  115.         End If
  116.         If mSplitPercent < 0.1 Then mSplitPercent = 0.1
  117.         If mSplitPercent > 0.9 Then mSplitPercent = 0.9
  118.     End If
  119. End Sub
  120.  
  121. Private Sub splitter_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  122.     Splitter.BackColor = &H8000000F
  123.     UserControl_Resize
  124. End Sub
  125.  
  126. Private Sub UserControl_Resize()
  127.     On Error Resume Next
  128.     
  129.     If UserControl.Ambient.UserMode Then
  130.         UserControl.BorderStyle = 0
  131.     End If
  132.     
  133.     Dim pane1 As Single
  134.     Dim pane2 As Single
  135.     Dim totwidth As Single
  136.     Dim totheight As Single
  137.     totwidth = UserControl.Width
  138.     totheight = UserControl.Height
  139.     If mHorizontalSplit Then
  140.         pane1 = (totheight - SPLITWIDTH) * mSplitPercent
  141.         pane2 = (totheight - SPLITWIDTH) * (1 - mSplitPercent)
  142.         mControl1.Move 0, 0, totwidth, pane1
  143.         mControl2.Move 0, pane1 + SPLITWIDTH, totwidth, pane2
  144.         Splitter.Move 0, pane1, totwidth, SPLITWIDTH
  145.     Else
  146.         pane1 = (totwidth - SPLITWIDTH) * mSplitPercent
  147.         pane2 = (totwidth - SPLITWIDTH) * (1 - mSplitPercent)
  148.         mControl1.Move 0, 0, pane1, totheight
  149.         mControl2.Move pane1 + SPLITWIDTH, 0, pane2, totheight
  150.         Splitter.Move pane1, 0, SPLITWIDTH, totheight
  151.     End If
  152.     RaiseEvent Resize
  153. End Sub
  154.  
  155.  
  156.  
  157. Public Sub Refresh()
  158.    UserControl.Refresh
  159. End Sub
  160.