752 lines
24 KiB
Plaintext
752 lines
24 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
*< FOXBIN2PRG: Version="1.21" SourceFile="sfsplitter.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
|
*
|
|
*
|
|
DEFINE CLASS gripper AS container
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="GripperDot1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="GripperDot2" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="GripperDot3" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="GripperDot4" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="GripperDot5" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: repositiononresize && A method to move the gripper to keep it centererd in the Splitter when the hosting form is resized.
|
|
*m: setupforhorizontalsplitter && A method to set the positions of the dots to a vertical orientation.
|
|
*m: setupforverticalsplitter && A method to set the positions of the dots to a horizontal orientation.
|
|
*m: setupgripper && The setup method to positiosn the dots according to the orientation of the splitter, also sets up the number of dots.
|
|
*p: ndots && Enter a number from 0 to 5 to indicate how many gripper dots to show. Enter 0 for none.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
Height = 19
|
|
Name = "gripper"
|
|
ndots = 5
|
|
Width = 36
|
|
_memberdata = <VFPData>
|
|
<memberdata name="ndots" type="property" display="nDots"/>
|
|
<memberdata name="repositiononresize" type="method" display="RepositionOnResize"/>
|
|
<memberdata name="setupforhorizontalsplitter" type="method" display="SetupForHorizontalSplitter"/>
|
|
<memberdata name="setupforverticalsplitter" type="method" display="SetupForVerticalSplitter"/>
|
|
<memberdata name="setupgripper" type="method" display="SetupGripper"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'GripperDot1' AS gripperdot WITH ;
|
|
Left = 2, ;
|
|
Name = "GripperDot1", ;
|
|
Top = 4, ;
|
|
ShapeDark.BackStyle = 0, ;
|
|
ShapeDark.Name = "ShapeDark", ;
|
|
ShapeDark.ZOrderSet = 0, ;
|
|
ShapeLight.Name = "ShapeLight", ;
|
|
ShapeLight.ZOrderSet = 1, ;
|
|
ShapeMiddle.Name = "ShapeMiddle", ;
|
|
ShapeMiddle.ZOrderSet = 2
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'GripperDot2' AS gripperdot WITH ;
|
|
Left = 6, ;
|
|
Name = "GripperDot2", ;
|
|
Top = 4, ;
|
|
ShapeDark.BackStyle = 0, ;
|
|
ShapeDark.Name = "ShapeDark", ;
|
|
ShapeDark.ZOrderSet = 0, ;
|
|
ShapeLight.Name = "ShapeLight", ;
|
|
ShapeLight.ZOrderSet = 1, ;
|
|
ShapeMiddle.Name = "ShapeMiddle", ;
|
|
ShapeMiddle.ZOrderSet = 2
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'GripperDot3' AS gripperdot WITH ;
|
|
Left = 10, ;
|
|
Name = "GripperDot3", ;
|
|
Top = 4, ;
|
|
ShapeDark.BackStyle = 0, ;
|
|
ShapeDark.Name = "ShapeDark", ;
|
|
ShapeDark.ZOrderSet = 0, ;
|
|
ShapeLight.Name = "ShapeLight", ;
|
|
ShapeLight.ZOrderSet = 1, ;
|
|
ShapeMiddle.Name = "ShapeMiddle", ;
|
|
ShapeMiddle.ZOrderSet = 2
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'GripperDot4' AS gripperdot WITH ;
|
|
Left = 14, ;
|
|
Name = "GripperDot4", ;
|
|
Top = 4, ;
|
|
ShapeDark.BackStyle = 0, ;
|
|
ShapeDark.Name = "ShapeDark", ;
|
|
ShapeDark.ZOrderSet = 0, ;
|
|
ShapeLight.Name = "ShapeLight", ;
|
|
ShapeLight.ZOrderSet = 1, ;
|
|
ShapeMiddle.Name = "ShapeMiddle", ;
|
|
ShapeMiddle.ZOrderSet = 2
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'GripperDot5' AS gripperdot WITH ;
|
|
Left = 18, ;
|
|
Name = "GripperDot5", ;
|
|
Top = 4, ;
|
|
ShapeDark.BackStyle = 0, ;
|
|
ShapeDark.Name = "ShapeDark", ;
|
|
ShapeDark.ZOrderSet = 0, ;
|
|
ShapeLight.Name = "ShapeLight", ;
|
|
ShapeLight.ZOrderSet = 1, ;
|
|
ShapeMiddle.Name = "ShapeMiddle", ;
|
|
ShapeMiddle.ZOrderSet = 2
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
PROCEDURE Init
|
|
|
|
*-- Get MousePointer setting from parent Splitter
|
|
this.MousePointer=this.Parent.MousePointer
|
|
|
|
*-- Also, set the MousePointer on each shape in each GripperDot container
|
|
FOR EACH GripperDot in this.Controls
|
|
GripperDot.setall('MousePointer', this.MousePointer)
|
|
EndFor
|
|
|
|
this.SetupGripper()
|
|
|
|
Dodefault()
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE MouseMove
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
|
|
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE repositiononresize && A method to move the gripper to keep it centererd in the Splitter when the hosting form is resized.
|
|
*-- This method will keep the Gripper container centered when the hosting form is resized.
|
|
*-- For vertical splitter, we will set the Left of the Gripper container to center it horizontally
|
|
*-- For horizontal splitter, we will set the Top of the Gripper container to center it vertically.
|
|
|
|
If this.parent.Width>this.parent.Height
|
|
With this
|
|
.Anchor=0
|
|
.Left=(this.parent.Width-.Width)/2
|
|
.Anchor=10
|
|
Endwith
|
|
Else
|
|
With this
|
|
.Anchor=0
|
|
.top=(this.parent.Height-.height)/2
|
|
.Anchor=5
|
|
Endwith
|
|
Endif
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setupforhorizontalsplitter && A method to set the positions of the dots to a vertical orientation.
|
|
*-- A method that will position the dots in a vertical orientation to be used on a horizontal splitter.
|
|
|
|
lnDotHeight=this.GripperDot1.Height
|
|
|
|
this.GripperDot1.Left=2
|
|
this.GripperDot1.Top=1
|
|
|
|
this.GripperDot2.Left=2
|
|
this.GripperDot2.Top=1+lnDotHeight
|
|
|
|
this.GripperDot3.Left=2
|
|
this.GripperDot3.Top=1+2*lnDotHeight
|
|
|
|
this.GripperDot4.Left=2
|
|
this.GripperDot4.Top=1+3*lnDotHeight
|
|
|
|
this.GripperDot5.Left=2
|
|
this.GripperDot5.Top=1+4*lnDotHeight
|
|
|
|
With this
|
|
.Anchor=0
|
|
.Height=this.nDots*lnDotHeight && This will cause the container to only show the correct number of dots.
|
|
.Width=lnDotHeight+1
|
|
.Anchor=5
|
|
EndWith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setupforverticalsplitter && A method to set the positions of the dots to a horizontal orientation.
|
|
*-- A method that will position the dots in a horizontal orientation to be used on a vertical splitter.
|
|
|
|
lnDotWidth=this.GripperDot1.Width
|
|
|
|
this.GripperDot1.Left=1
|
|
this.GripperDot1.Top=2
|
|
|
|
this.GripperDot2.Left=1+lnDotWidth
|
|
this.GripperDot2.Top=2
|
|
|
|
this.GripperDot3.Left=1+2*lnDotWidth
|
|
this.GripperDot3.Top=2
|
|
|
|
this.GripperDot4.Left=1+3*lnDotWidth
|
|
this.GripperDot4.Top=2
|
|
|
|
this.GripperDot5.Left=1+4*lnDotWidth
|
|
this.GripperDot5.Top=2
|
|
|
|
With this
|
|
.Anchor=0
|
|
.Width=this.nDots*this.GripperDot1.Width+1 && This will cause the container to only show the correct number of dots.
|
|
.Height=lnDotWidth+1
|
|
.Anchor=10
|
|
Endwith
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setupgripper && The setup method to positiosn the dots according to the orientation of the splitter, also sets up the number of dots.
|
|
*-- 2009-01-04 By Matt Slay
|
|
*-- This sets the fixed positions that do no change when the form is resized.
|
|
*-- For vertical splitter, we will set the Top of the Gripper container to center it vertically.
|
|
*-- For horizontal splitter, we will set the Left of the Gripper container to center it horiziontally.
|
|
*-- This method only needs to be called once.
|
|
|
|
If this.parent.Width>this.parent.Height
|
|
With this
|
|
.SetupForVerticalSplitter()
|
|
.Anchor= 0
|
|
.top=(this.parent.Height-.height)/2-1
|
|
.Anchor=10
|
|
Endwith
|
|
Else
|
|
With this
|
|
.SetupForHorizontalSplitter()
|
|
.Anchor=0
|
|
.left=(this.parent.Width-.width)/2-1
|
|
.Anchor=5
|
|
Endwith
|
|
Endif
|
|
|
|
this.RepositionOnResize()
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gripperdot AS container
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="ShapeDark" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="ShapeLight" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="ShapeMiddle" UniqueID="" Timestamp="" />
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
Height = 4
|
|
Name = "gripperdot"
|
|
Width = 4
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'ShapeDark' AS shape WITH ;
|
|
BackStyle = 1, ;
|
|
BorderStyle = 0, ;
|
|
BorderWidth = 0, ;
|
|
FillColor = 80,80,80, ;
|
|
FillStyle = 0, ;
|
|
Height = 2, ;
|
|
Left = 1, ;
|
|
Name = "ShapeDark", ;
|
|
Top = 1, ;
|
|
Width = 2
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
ADD OBJECT 'ShapeLight' AS shape WITH ;
|
|
BackStyle = 1, ;
|
|
BorderStyle = 0, ;
|
|
BorderWidth = 0, ;
|
|
FillColor = 250,250,250, ;
|
|
FillStyle = 0, ;
|
|
Height = 2, ;
|
|
Left = 2, ;
|
|
Name = "ShapeLight", ;
|
|
Top = 2, ;
|
|
Width = 2
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
ADD OBJECT 'ShapeMiddle' AS shape WITH ;
|
|
BackStyle = 1, ;
|
|
BorderStyle = 0, ;
|
|
BorderWidth = 0, ;
|
|
FillColor = 173,209,255, ;
|
|
FillStyle = 0, ;
|
|
Height = 1, ;
|
|
Left = 2, ;
|
|
Name = "ShapeMiddle", ;
|
|
Top = 2, ;
|
|
Width = 1
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
PROCEDURE Init
|
|
|
|
this.MousePointer=this.Parent.Parent.MousePointer
|
|
this.SetAll('MousePointer', this.MousePointer, 'Shape')
|
|
ENDPROC
|
|
|
|
PROCEDURE MouseMove
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
|
|
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE ShapeDark.MouseMove
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
|
|
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE ShapeLight.MouseMove
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
|
|
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
PROCEDURE ShapeMiddle.MouseMove
|
|
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
|
|
|
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS sfsplitter AS control
|
|
*< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="Gripper" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: getobject1size && Gets the size for Object 1
|
|
*m: getobject2size && Gets the size for Object 2
|
|
*m: getobjectnames && Populates an array from a comma-delimited list
|
|
*m: getposition && Returns the new position: X for a horizontal splitter and Y for a vertical splitter
|
|
*m: moveobject1 && Moves Object 1 to the new position
|
|
*m: moveobject2 && Moves Object 2 to the new position
|
|
*m: movesplittertoposition && Moves the splitter to the specified position
|
|
*m: setposition && Sets the new position for the splitter
|
|
*m: setupgripper && A method to setup various properties on the gripper to visually configure it for Vertical or Horizontal configuration.
|
|
*m: splittermoved && Called after the splitter is moved
|
|
*p: cobject1name && The name of the object above (for a vertical splitter) or to the left of (for a horizontal splitter) the splitter
|
|
*p: cobject2name && The name of the object below (for a vertical splitter) or to the right of (for a horizontal splitter) the splitter
|
|
*p: linitialized && .T. after the control has been initialized
|
|
*p: ndots && Enter a value between 0 and 5 for the number of dots to be shown on the gripper. Enter 0 for none.
|
|
*p: nobject1minsize && The minimum height (for a vertical splitter) or width (for a horizontal splitter) of Object 1
|
|
*p: nobject2minsize && The minimum height (for a vertical splitter) or width (for a horizontal splitter) of Object 2
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackColor = 192,192,192
|
|
BackStyle = 1
|
|
BorderColor = 255,0,0
|
|
BorderWidth = 2
|
|
cobject1name =
|
|
cobject2name =
|
|
Height = 248
|
|
linitialized = .F.
|
|
Name = "sfsplitter"
|
|
ndots = 5
|
|
nobject1minsize = 150
|
|
nobject2minsize = 150
|
|
Width = 25
|
|
_memberdata = <VFPData>
|
|
<memberdata name="getobjectnames" type="method" display="GetObjectNames"/>
|
|
<memberdata name="movesplittertoposition" type="method" display="MoveSplitterToPosition"/>
|
|
<memberdata name="linitialized" type="property" display="lInitialized"/>
|
|
<memberdata name="cobject1name" type="property" display="cObject1Name"/>
|
|
<memberdata name="cobject2name" type="property" display="cObject2Name"/>
|
|
<memberdata name="nobject1minsize" type="property" display="nObject1MinSize"/>
|
|
<memberdata name="nobject2minsize" type="property" display="nObject2MinSize"/>
|
|
<memberdata name="getobject1size" type="method" display="GetObject1Size"/>
|
|
<memberdata name="getobject2size" type="method" display="GetObject2Size"/>
|
|
<memberdata name="setposition" type="method" display="SetPosition"/>
|
|
<memberdata name="moveobject1" type="method" display="MoveObject1"/>
|
|
<memberdata name="moveobject2" type="method" display="MoveObject2"/>
|
|
<memberdata name="getposition" type="method" display="GetPosition"/>
|
|
<memberdata name="splittermoved" type="method" display="SplitterMoved"/>
|
|
<memberdata name="lshowgripper" type="property" display="lShowGripper"/>
|
|
<memberdata name="showballoontip" type="method" display="ShowBalloonTip"/>
|
|
<memberdata name="setupgripper" type="method" display="SetupGripper"/>
|
|
<memberdata name="ndots" type="property" display="nDots"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'Gripper' AS gripper WITH ;
|
|
Height = 12, ;
|
|
Left = 1, ;
|
|
Name = "Gripper", ;
|
|
Top = -1, ;
|
|
Width = 20, ;
|
|
Gripperdot1.Name = "Gripperdot1", ;
|
|
Gripperdot1.ShapeDark.Name = "ShapeDark", ;
|
|
Gripperdot1.ShapeLight.Name = "ShapeLight", ;
|
|
Gripperdot1.ShapeMiddle.Name = "ShapeMiddle", ;
|
|
Gripperdot2.Name = "Gripperdot2", ;
|
|
Gripperdot2.ShapeDark.Name = "ShapeDark", ;
|
|
Gripperdot2.ShapeLight.Name = "ShapeLight", ;
|
|
Gripperdot2.ShapeMiddle.Name = "ShapeMiddle", ;
|
|
Gripperdot3.Name = "Gripperdot3", ;
|
|
Gripperdot3.ShapeDark.Name = "ShapeDark", ;
|
|
Gripperdot3.ShapeLight.Name = "ShapeLight", ;
|
|
Gripperdot3.ShapeMiddle.Name = "ShapeMiddle", ;
|
|
Gripperdot4.Name = "Gripperdot4", ;
|
|
Gripperdot4.ShapeDark.Name = "ShapeDark", ;
|
|
Gripperdot4.ShapeLight.Name = "ShapeLight", ;
|
|
Gripperdot4.ShapeMiddle.Name = "ShapeMiddle", ;
|
|
Gripperdot5.Name = "Gripperdot5", ;
|
|
Gripperdot5.ShapeDark.Name = "ShapeDark", ;
|
|
Gripperdot5.ShapeLight.Name = "ShapeLight", ;
|
|
Gripperdot5.ShapeMiddle.Name = "ShapeMiddle"
|
|
*< END OBJECT: ClassLib="sfsplitter.vcx" BaseClass="container" />
|
|
|
|
PROTECTED PROCEDURE getobject1size && Gets the size for Object 1
|
|
* Abstract method.
|
|
|
|
lparameters toObject
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE getobject2size && Gets the size for Object 2
|
|
* Abstract method.
|
|
|
|
lparameters toObject
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE getobjectnames && Populates an array from a comma-delimited list
|
|
lparameters tcList, ;
|
|
taArray
|
|
local lnOccurs, ;
|
|
lnStart, ;
|
|
lnI, ;
|
|
lnPos
|
|
lnOccurs = occurs(',', tcList) + 1
|
|
dimension taArray[lnOccurs]
|
|
lnStart = 1
|
|
for lnI = 1 to lnOccurs
|
|
if lnI = lnOccurs
|
|
lnPos = len(tcList) + 1
|
|
else
|
|
lnPos = at(',', tcList, lnI)
|
|
endif lnI = lnOccurs
|
|
taArray[lnI] = alltrim(substr(tcList, lnStart, lnPos - lnStart))
|
|
lnStart = lnPos + 1
|
|
next lnI
|
|
return lnOccurs
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE getposition && Returns the new position: X for a horizontal splitter and Y for a vertical splitter
|
|
* Abstract method.
|
|
|
|
lparameters tnXCoord, ;
|
|
tnYCoord
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
* Make the border invisible and flag that Init has fired.
|
|
|
|
with This
|
|
.BorderWidth = 0
|
|
.lInitialized = .T.
|
|
.setupgripper()&& 2008-12-31 By Matt Slay
|
|
endwith
|
|
|
|
dodefault()
|
|
|
|
*--- Changes by Matt Slay to use Gripper control 2008-12-31 ----
|
|
* Added a Gripper container class to the VCX. A container consisting of (5) GripperDots.
|
|
* Added a GripprDot container class to the VCX. A container with a single "Dot" comprised of (3) VFP Shape objects with color, size, and position to make a cool shaded "dot".
|
|
* Added an instance of the Gripper object to the Splitter base control.
|
|
* Added nDots property to the Splitter base control.
|
|
* Added the SetupGripper() method to the Splitter base control.
|
|
* Added .SetupGripper() call in the Splitter base control Init() method.
|
|
* Added this.Gripper.RepositionOnResize() call on the Splitter base control Resize() method to keep the Gripper centered when hosting form or container is resized.
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE MouseMove
|
|
lparameters tnButton, ;
|
|
tnShift, ;
|
|
tnXCoord, ;
|
|
tnYCoord
|
|
local lnPosition
|
|
with This
|
|
if tnButton = 1 and .Enabled
|
|
lnPosition = .GetPosition(tnXCoord, tnYCoord)
|
|
.MoveSplitterToPosition(lnPosition)
|
|
endif tnButton = 1 ...
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE moveobject1 && Moves Object 1 to the new position
|
|
* Abstract method.
|
|
|
|
lparameters toObject
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE moveobject2 && Moves Object 2 to the new position
|
|
* Abstract method.
|
|
|
|
lparameters toObject
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE movesplittertoposition && Moves the splitter to the specified position
|
|
* Move the splitter to the specified position. Ensure it doesn't go too far,
|
|
* based on the nObject1MinSize and nObject2MinSize settings.
|
|
|
|
lparameters tnPosition
|
|
local lnPosition, ;
|
|
laObjects[1], ;
|
|
lnObjects, ;
|
|
lnI, ;
|
|
loObject, ;
|
|
lnAnchor
|
|
with This
|
|
lnPosition = tnPosition
|
|
lnObjects = .GetObjectNames(.cObject1Name, @laObjects)
|
|
for lnI = 1 to lnObjects
|
|
loObject = evaluate('.Parent.' + laObjects[lnI])
|
|
lnPosition = max(lnPosition, .GetObject1Size(loObject))
|
|
next lnI
|
|
lnObjects = .GetObjectNames(.cObject2Name, @laObjects)
|
|
for lnI = 1 to lnObjects
|
|
loObject = evaluate('.Parent.' + laObjects[lnI])
|
|
lnPosition = min(lnPosition, .GetObject2Size(loObject))
|
|
next lnI
|
|
lnAnchor = .Anchor
|
|
.Anchor = 0
|
|
.SetPosition(lnPosition)
|
|
.Anchor = lnAnchor
|
|
|
|
* Now move the left and right objects as well.
|
|
|
|
lnObjects = .GetObjectNames(.cObject1Name, @laObjects)
|
|
for lnI = 1 to lnObjects
|
|
loObject = evaluate('.Parent.' + laObjects[lnI])
|
|
with loObject
|
|
lnAnchor = .Anchor
|
|
.Anchor = 0
|
|
This.MoveObject1(loObject)
|
|
.Anchor = lnAnchor
|
|
endwith
|
|
next lnI
|
|
lnObjects = .GetObjectNames(.cObject2Name, @laObjects)
|
|
for lnI = 1 to lnObjects
|
|
loObject = evaluate('.Parent.' + laObjects[lnI])
|
|
with loObject
|
|
lnAnchor = .Anchor
|
|
.Anchor = 0
|
|
This.MoveObject2(loObject)
|
|
.Anchor = lnAnchor
|
|
endwith
|
|
next lnI
|
|
|
|
* Call a hook method.
|
|
|
|
.SplitterMoved()
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Resize
|
|
this.Gripper.RepositionOnResize() && 2008-12-31 Added by Matt Slay to keep Gripper centered when form is resized.
|
|
|
|
Dodefault()
|
|
|
|
ENDPROC
|
|
|
|
PROTECTED PROCEDURE setposition && Sets the new position for the splitter
|
|
* Abstract method.
|
|
|
|
lparameters tnPosition
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setupgripper && A method to setup various properties on the gripper to visually configure it for Vertical or Horizontal configuration.
|
|
*-- Method added by Matt Slay - 2009-01-04
|
|
|
|
this.Gripper.nDots=this.nDots
|
|
this.Gripper.SetupGripper()
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE splittermoved && Called after the splitter is moved
|
|
* Abstract method.
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS sfsplitterh AS sfsplitter OF "sfsplitter.vcx"
|
|
*< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<PropValue>
|
|
Anchor = 13
|
|
MousePointer = 9
|
|
Name = "sfsplitterh"
|
|
gripper.Gripperdot1.Name = "Gripperdot1"
|
|
gripper.Gripperdot1.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot1.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot1.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot2.Name = "Gripperdot2"
|
|
gripper.Gripperdot2.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot2.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot2.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot3.Name = "Gripperdot3"
|
|
gripper.Gripperdot3.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot3.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot3.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot4.Name = "Gripperdot4"
|
|
gripper.Gripperdot4.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot4.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot4.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot5.Name = "Gripperdot5"
|
|
gripper.Gripperdot5.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot5.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot5.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Name = "gripper"
|
|
*</PropValue>
|
|
|
|
PROCEDURE getobject1size && Gets the size for Object 1
|
|
lparameters toObject
|
|
return toObject.Left + This.nObject1MinSize
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE getobject2size && Gets the size for Object 2
|
|
lparameters toObject
|
|
return toObject.Left + toObject.Width - This.nObject2MinSize - This.Width
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE getposition && Returns the new position: X for a horizontal splitter and Y for a vertical splitter
|
|
lparameters tnXCoord, ;
|
|
tnYCoord
|
|
return tnXCoord + This.Left - Objtoclient(this,2)
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE moveobject1 && Moves Object 1 to the new position
|
|
lparameters toObject
|
|
with toObject
|
|
.Move(.Left, .Top, This.Left - .Left, .Height)
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE moveobject2 && Moves Object 2 to the new position
|
|
lparameters toObject
|
|
with toObject
|
|
.Move(This.Left + This.Width, .Top, max(.Width + .Left - This.Left - ;
|
|
This.Width, 0), .Height)
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setposition && Sets the new position for the splitter
|
|
lparameters tnPosition
|
|
This.Left = tnPosition
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS sfsplitterv AS sfsplitter OF "sfsplitter.vcx"
|
|
*< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<PropValue>
|
|
Anchor = 14
|
|
Height = 10
|
|
MousePointer = 7
|
|
Name = "sfsplitterv"
|
|
Width = 200
|
|
gripper.Gripperdot1.Name = "Gripperdot1"
|
|
gripper.Gripperdot1.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot1.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot1.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot2.Name = "Gripperdot2"
|
|
gripper.Gripperdot2.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot2.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot2.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot3.Name = "Gripperdot3"
|
|
gripper.Gripperdot3.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot3.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot3.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot4.Name = "Gripperdot4"
|
|
gripper.Gripperdot4.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot4.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot4.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Gripperdot5.Name = "Gripperdot5"
|
|
gripper.Gripperdot5.ShapeDark.Name = "ShapeDark"
|
|
gripper.Gripperdot5.ShapeLight.Name = "ShapeLight"
|
|
gripper.Gripperdot5.ShapeMiddle.Name = "ShapeMiddle"
|
|
gripper.Name = "gripper"
|
|
*</PropValue>
|
|
|
|
PROCEDURE getobject1size && Gets the size for Object 1
|
|
lparameters toObject
|
|
return toObject.Top + This.nObject1MinSize
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE getobject2size && Gets the size for Object 2
|
|
lparameters toObject
|
|
return toObject.Top + toObject.Height - This.nObject2MinSize - This.Height
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE getposition && Returns the new position: X for a horizontal splitter and Y for a vertical splitter
|
|
lparameters tnXCoord, ;
|
|
tnYCoord
|
|
return tnYCoord + This.Top - Objtoclient(this,1)
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE moveobject1 && Moves Object 1 to the new position
|
|
lparameters toObject
|
|
with toObject
|
|
.Move(.Left, .Top, .Width, This.Top - .Top)
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE moveobject2 && Moves Object 2 to the new position
|
|
lparameters toObject
|
|
with toObject
|
|
.Move(.Left, This.Top + This.Height, .Width, max(.Height + .Top - This.Top - ;
|
|
This.Height, 0))
|
|
endwith
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE setposition && Sets the new position for the splitter
|
|
lparameters tnPosition
|
|
This.Top = tnPosition
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|