home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / envelop / envelop.5 / Tools / Arsenal / parts / sash / SASH.ETO
Text File  |  1996-07-08  |  5KB  |  216 lines

  1. Type Sash From Label
  2.   Dim p_FullDrag As Boolean
  3.   Dim A As Window
  4.   Dim B As Window
  5.   Property FullDrag Get getFullDrag Set setFullDrag As Long
  6.   Dim Markup As SashMarkup
  7.   Dim rx As Single
  8.  
  9.   ' METHODS for object: Sash
  10.   Function getFullDrag as Long
  11.     getFullDrag = p_FullDrag
  12.   End Function
  13.  
  14.   Sub setFullDrag(value as Long)
  15.     p_FullDrag = value
  16.     If value == False Then Setup
  17.   End Sub
  18.  
  19.   Sub Setup()
  20.     If p_FullDrag Then 
  21.     Else 
  22.       If Parent <> Nothing Then 
  23.         dim cache as long
  24.         cache = Parent.Controls.EvalRequires
  25.         Parent.Controls.EvalRequires = "MatchNone"
  26.         Parent.Controls.FindSashMarkup(Me)
  27.         Parent.Controls.EvalRequires = cache
  28.         If Markup == Nothing Then 
  29.           Markup = EmbedObject(Parent, SashMarkup, UniqueEmbedName(Parent, "SashMarkup"))
  30.         End If
  31.       End If
  32.     End If
  33.   End Sub
  34.  
  35. End Type
  36.  
  37. Type VSash From Sash
  38.  
  39.   ' METHODS for object: VSash
  40.   Sub MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
  41.     If button == 1 Then 
  42.       App.AutoBusySignal = False
  43.       If p_FullDrag Then 
  44.         rx = x
  45.       Else 
  46.         Markup.Start(Me, x)
  47.       End If
  48.     End If
  49.   End Sub
  50.  
  51.   Sub MouseMove(button As Integer, shift As Integer, x As Single, y As Single)
  52.     If button == 1 Then 
  53.       If p_FullDrag Then 
  54.         Left = Left - rx + x
  55.         A.Width = Left - A.Left
  56.         B.Move(Left + Width, B.Top, (B.Left + B.Width) - (Left + Width), B.Height)
  57.   
  58.       Else 
  59.         Markup.MoveRect(x)
  60.       End If
  61.     End If
  62.   End Sub
  63.  
  64.   Sub MouseUp(button As Integer, shift As Integer, x As Single, y As Single)
  65.     If button == 1 Then 
  66.       If p_FullDrag Then 
  67.       Else 
  68.         Markup.Finish
  69.         Left = Markup.SashL
  70.         A.Width = Left - A.Left
  71.         B.Move(Left + Width, B.Top, (B.Left + B.Width) - (Left + Width), B.Height)
  72.   
  73.       End If
  74.       App.AutoBusySignal = True
  75.     End If
  76.   End Sub
  77.  
  78. End Type
  79.  
  80. Type HSash From Sash
  81.  
  82.   ' METHODS for object: HSash
  83.   Sub MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
  84.     If button == 1 Then 
  85.       App.AutoBusySignal = False
  86.       If p_FullDrag Then 
  87.         rx = y
  88.       Else 
  89.         Markup.Start(Me, y)
  90.       End If
  91.     End If
  92.   End Sub
  93.  
  94.   Sub MouseMove(button As Integer, shift As Integer, x As Single, y As Single)
  95.     If button == 1 Then 
  96.       If p_FullDrag Then 
  97.         Top = Top - rx + y
  98.         A.Height = Top - A.Top
  99.         B.Move(B.Left, Top + Height, B.Width, (B.Top + B.Height) - (Top + Height))
  100.       Else 
  101.         Markup.MoveRect(y)
  102.       End If
  103.     End If
  104.   End Sub
  105.  
  106.   Sub MouseUp(button As Integer, shift As Integer, x As Single, y As Single)
  107.     If button == 1 Then 
  108.       If p_FullDrag Then 
  109.       Else 
  110.         Markup.Finish
  111.         Top = Markup.SashT
  112.   
  113.         A.Height = Top - A.Top
  114.         B.Move(B.Left, Top + Height, B.Width, (B.Top + B.Height) - (Top + Height))
  115.       End If
  116.       App.AutoBusySignal = True
  117.     End If
  118.   End Sub
  119.  
  120. End Type
  121.  
  122. Type SashMarkup From MarkupLayer
  123.   Dim SashR As Single
  124.   Dim SashT As Single
  125.   Dim SashB As Single
  126.   Dim SashL As Single
  127.   Dim rx As Single
  128.   Dim Hsash As Long
  129.  
  130.   ' METHODS for object: SashMarkup
  131.   Sub FindSashMarkup(sash as Sash)
  132.     sash.Markup = Me
  133.   End Sub
  134.  
  135.   Sub Finish
  136.     Rectangle(SashL, SashT, SashR, SashB)
  137.     Enabled = False
  138.   End Sub
  139.  
  140.   Sub MoveRect(x as single)
  141.     If Hsash Then 
  142.       Dim dx, Sashheight as single
  143.       dx = rx - x
  144.       Rectangle(SashL, SashT, SashR, SashB)
  145.       Sashheight = SashB - SashT
  146.       SashT = SashT - dx
  147.       SashB = SashT + Sashheight
  148.       Rectangle(SashL, SashT, SashR, SashB)
  149.       rx = x
  150.   
  151.     Else 
  152.       Dim dx, Sashwidth as single
  153.       dx = x - rx
  154.       Rectangle(SashL, SashT, SashR, SashB)
  155.       Sashwidth = SashR - SashL
  156.       SashL = SashL + dx
  157.       SashR = SashL + Sashwidth
  158.       Rectangle(SashL, SashT, SashR, SashB)
  159.       rx = x
  160.     End If
  161.   End Sub
  162.  
  163.   Sub Start(sash as Sash, relx as single)
  164.     Enabled = True
  165.     Move(0, 0, Parent.ScaleWidth, Parent.ScaleHeight)
  166.     If TypeOf sash Is HSash Then Hsash = True Else Hsash = False
  167.     SashL = sash.Left
  168.     SashT = sash.Top
  169.     SashR = SashL + sash.Width
  170.     SashB = SashT + sash.Height
  171.     rx = relx
  172.     Rectangle(SashL, SashT, SashR, SashB)
  173.   End Sub
  174.  
  175. End Type
  176.  
  177. Begin Code
  178. ' Reconstruction commands for object: Sash
  179. '
  180.   With Sash
  181.     .Move(0, 0, 0, 0)
  182.     .BorderStyle := "Fixed Single"
  183.     .p_FullDrag := False
  184.     .A := Nothing
  185.     .B := Nothing
  186.     .FullDrag := 0
  187.     .Markup := Nothing
  188.     .rx := 0
  189.   End With  'Sash
  190. ' Reconstruction commands for object: VSash
  191. '
  192.   With VSash
  193.     .MousePointer := "Size W E"
  194.     .Move(0, 0, 0, 0)
  195.   End With  'VSash
  196. ' Reconstruction commands for object: HSash
  197. '
  198.   With HSash
  199.     .MousePointer := "Size N S"
  200.     .Move(0, 0, 0, 0)
  201.   End With  'HSash
  202. ' Reconstruction commands for object: SashMarkup
  203. '
  204.   With SashMarkup
  205.     .Move(0, 0, 0, 0)
  206.     .SashR := 0
  207.     .SashT := 0
  208.     .SashB := 0
  209.     .SashL := 0
  210.     .rx := 1
  211.     .Hsash := -1
  212.     .DrawMode := "Xor Pen"
  213.     .DrawColor := 0
  214.   End With  'SashMarkup
  215. End Code
  216.