Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
751
clase/sfsplitter.vc2
Normal file
751
clase/sfsplitter.vc2
Normal file
@@ -0,0 +1,751 @@
|
||||
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
* (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
|
||||
Reference in New Issue
Block a user