883 lines
31 KiB
Plaintext
883 lines
31 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
|
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
*< FOXBIN2PRG: Version="1.21" SourceFile="zoomnavbar.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
|
*
|
|
*
|
|
DEFINE CLASS reflectedimage AS image
|
|
*< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: enabled_assign
|
|
*p: deletedisabledpicture && Internal to the class. Specify if disabled picture must be deleted when control is destroyed.
|
|
*p: deletepicture && Internal to the class. Specify if picture must be deleted when control is destroyed.
|
|
*p: disabledpicture && Internal to the class. Specifies the graphic to display when the control is disabled.
|
|
*p: enabledpicture && Internal to the class. Specifies the graphic to display when the control is enabled.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
deletedisabledpicture = .F.
|
|
deletepicture = .F.
|
|
disabledpicture = ("")
|
|
enabledpicture = ("")
|
|
Height = 48
|
|
Name = "reflectedimage"
|
|
Stretch = 2
|
|
Themes = .F.
|
|
Width = 48
|
|
_memberdata = <VFPData>
|
|
<memberdata name="enabled_assign" type="method" display="Enabled_Assign"/>
|
|
<memberdata name="disabledpicture" type="property" display="DisabledPicture"/>
|
|
<memberdata name="enabledpicture" type="property" display="EnabledPicture"/>
|
|
<memberdata name="deletedisabledpicture" type="property" display="DeleteDisabledPicture"/>
|
|
<memberdata name="deletepicture" type="property" display="DeletePicture"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
PROCEDURE Destroy
|
|
* Change this method for builder version
|
|
|
|
* Set picture property to a non existant image to avoid
|
|
* errors while deleting temporary reflected image.
|
|
This.Picture = "ZoomNavBarFake.bmp"
|
|
*
|
|
If This.DeleteDisabledPicture
|
|
If File(This.DisabledPicture)
|
|
Clear Resources (This.DisabledPicture)
|
|
Delete File (This.DisabledPicture)
|
|
Endif
|
|
Endif
|
|
If This.DeletePicture
|
|
If File(This.EnabledPicture)
|
|
Clear Resources (This.EnabledPicture)
|
|
Delete File (This.EnabledPicture)
|
|
Endif
|
|
Endif
|
|
DoDefault()
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE enabled_assign
|
|
Lparameters vNewVal
|
|
With This
|
|
If m.vNewVal
|
|
.Picture = .EnabledPicture
|
|
Else
|
|
.Picture = .DisabledPicture
|
|
Endif
|
|
.Enabled = m.vNewVal
|
|
Endwith
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS separatorimage AS image
|
|
*< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: changetheme
|
|
*m: initthemedcontrol
|
|
*p: imageid && Internal to the class. Unique identifier.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
Height = 48
|
|
imageid = 0
|
|
Name = "separatorimage"
|
|
Stretch = 2
|
|
Themes = .F.
|
|
Width = 48
|
|
_memberdata = <VFPData>
|
|
<memberdata name="imageid" type="property" display="ImageID"/>
|
|
<memberdata name="changetheme" type="method" display="ChangeTheme"/>
|
|
<memberdata name="initthemedcontrol" type="method" display="InitThemedControl"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
PROCEDURE changetheme
|
|
With This
|
|
Local lcMemberName
|
|
lcMemberName = ""
|
|
If Upper(.Parent.Name)=="CNTREFLECTED"
|
|
lcMemberName = "Reflected"
|
|
Endif
|
|
.Picture = _Screen.ThemesManager.GetMember("ZoomNavBar."+lcMemberName+"Separator.Picture")
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
* Change this method for builder version
|
|
With This
|
|
.Top = 0
|
|
.InitThemedControl()
|
|
.Visible = .T.
|
|
Endwith
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE initthemedcontrol
|
|
If Not Vartype(_Screen.ThemesManager)=="O"
|
|
_Screen.Newobject("ThemesManager","ThemesManager","ThemedControls.vcx")
|
|
Endif
|
|
This.ChangeTheme()
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS stackbutton 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="imgBackground" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="lblCaption" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="imgPicture" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: changetheme && Internal to the class. Occurs when theme change.
|
|
*m: enabled_assign
|
|
*m: initthemedcontrol && Internal to the class.
|
|
*p: deletedisabledpicture && Internal to the class. Specify if disabled picture must be deleted when control is destroyed.
|
|
*p: disabledpicture && Internal to the class. Specifies the graphic to display when the control is disabled.
|
|
*p: enabledpicture && Internal to the class. Specifies the graphic to display when the control is enabled.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
deletedisabledpicture = .F.
|
|
disabledpicture = ("")
|
|
enabledpicture = ("")
|
|
Height = 36
|
|
Name = "stackbutton"
|
|
Width = 192
|
|
_memberdata = <VFPData>
|
|
<memberdata name="changetheme" type="method" display="ChangeTheme"/>
|
|
<memberdata name="initthemedcontrol" type="method" display="InitThemedControl"/>
|
|
<memberdata name="enabled_assign" type="method" display="Enabled_Assign"/>
|
|
<memberdata name="deletedisabledpicture" type="property" display="DeleteDisabledPicture"/>
|
|
<memberdata name="disabledpicture" type="property" display="DisabledPicture"/>
|
|
<memberdata name="enabledpicture" type="property" display="EnabledPicture"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'imgBackground' AS image WITH ;
|
|
BackStyle = 0, ;
|
|
Height = 24, ;
|
|
Name = "imgBackground", ;
|
|
Stretch = 2, ;
|
|
Top = 6, ;
|
|
Width = 155
|
|
*< END OBJECT: BaseClass="image" />
|
|
|
|
ADD OBJECT 'imgPicture' AS image WITH ;
|
|
BackStyle = 0, ;
|
|
Height = 32, ;
|
|
Left = 157, ;
|
|
Name = "imgPicture", ;
|
|
Stretch = 2, ;
|
|
Top = 2, ;
|
|
Width = 32
|
|
*< END OBJECT: BaseClass="image" />
|
|
|
|
ADD OBJECT 'lblCaption' AS label WITH ;
|
|
Alignment = 1, ;
|
|
BackStyle = 0, ;
|
|
Caption = "Label1", ;
|
|
FontBold = .T., ;
|
|
FontSize = 8, ;
|
|
ForeColor = 255,255,255, ;
|
|
Height = 16, ;
|
|
Left = 5, ;
|
|
Name = "lblCaption", ;
|
|
Top = 10, ;
|
|
Width = 145
|
|
*< END OBJECT: BaseClass="label" />
|
|
|
|
PROCEDURE changetheme && Internal to the class. Occurs when theme change.
|
|
This.imgBackground.Picture = _Screen.ThemesManager.GetMember("ZoomNavBar.StackButton.Picture")
|
|
ENDPROC
|
|
|
|
PROCEDURE Destroy
|
|
* Change this method for builder version
|
|
|
|
* Set picture property to a non existant image to avoid
|
|
* errors while deleting temporary reflected image.
|
|
This.imgPicture.Picture = "ZoomNavBarFake.bmp"
|
|
*
|
|
If This.DeleteDisabledPicture
|
|
If File(This.DisabledPicture)
|
|
Clear Resources (This.DisabledPicture)
|
|
Delete File (This.DisabledPicture)
|
|
Endif
|
|
Endif
|
|
DoDefault()
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE enabled_assign
|
|
Lparameters vNewVal
|
|
With This
|
|
If m.vNewVal
|
|
.imgPicture.Picture = .EnabledPicture
|
|
Else
|
|
.imgPicture.Picture = .DisabledPicture
|
|
Endif
|
|
.Enabled = m.vNewVal
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
Lparameters lcCaption, lcPicture, lcDisabledPicture, ;
|
|
llDeleteDisabledPicture, llEnabled, lnTop
|
|
With This
|
|
With .lblCaption
|
|
.Caption = lcCaption
|
|
.Width = Txtwidth(lcCaption,.FontName,.FontSize,"B")*;
|
|
Fontmetric(6,.FontName,.FontSize,"B")
|
|
Endwith
|
|
.DeleteDisabledPicture = llDeleteDisabledPicture
|
|
.DisabledPicture = lcDisabledPicture
|
|
.EnabledPicture = lcPicture
|
|
.Enabled = llEnabled
|
|
.imgBackground.Width = .lblCaption.Width + 10
|
|
.Top = lnTop
|
|
.Width = .imgBackground.Width + ;
|
|
5 + .imgPicture.Width
|
|
.imgPicture.Left = .Width - 2 - .imgPicture.Width
|
|
If .Width > .Parent.Width
|
|
.Parent.Width = .Width
|
|
Endif
|
|
.InitThemedControl()
|
|
.Visible = .T.
|
|
Endwith
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE initthemedcontrol && Internal to the class.
|
|
If Not Vartype(_Screen.ThemesManager)=="O"
|
|
_Screen.Newobject("ThemesManager","ThemesManager","ThemedControls.vcx")
|
|
Endif
|
|
This.ChangeTheme()
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS stackcontainer 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="shpMouseHandler" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: buttonclicked && Occurs when a button is clicked.
|
|
*m: reposition && Move the stack to the current parent button coordinates.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
Name = "stackcontainer"
|
|
Visible = .F.
|
|
_memberdata = <VFPData>
|
|
<memberdata name="reposition" type="method" display="Reposition"/>
|
|
<memberdata name="buttonclicked" type="method" display="ButtonClicked"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'shpMouseHandler' AS shape WITH ;
|
|
Anchor = 15, ;
|
|
BackStyle = 0, ;
|
|
BorderStyle = 0, ;
|
|
Height = 75, ;
|
|
Name = "shpMouseHandler", ;
|
|
Width = 75
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
PROCEDURE buttonclicked && Occurs when a button is clicked.
|
|
ENDPROC
|
|
|
|
PROCEDURE reposition && Move the stack to the current parent button coordinates.
|
|
Lparameters lnRight, lnTop
|
|
With This
|
|
.Left = lnRight - .Width
|
|
.Top = lnTop - .Height
|
|
.shpMouseHandler.ZOrder(0)
|
|
.Visible = .T.
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE shpMouseHandler.Click
|
|
This.Visible = .F.
|
|
Local loObject, lcButton, llEnabled
|
|
loObject = Sys(1270)
|
|
llEnabled = .T.
|
|
Do Case
|
|
Case Upper(loObject.Class)=="STACKBUTTON"
|
|
lcButton = loObject.Name
|
|
llEnabled = loObject.Enabled
|
|
Case Upper(loObject.Parent.Class)=="STACKBUTTON"
|
|
lcButton = loObject.Parent.Name
|
|
llEnabled = loObject.Parent.Enabled
|
|
Endcase
|
|
loObject = Null
|
|
This.Visible = .T.
|
|
If llEnabled
|
|
This.Parent.Visible = .F.
|
|
If Not Empty(lcButton)
|
|
This.Parent.ButtonClicked(lcButton)
|
|
Endif
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE shpMouseHandler.MouseLeave
|
|
Lparameters nButton, nShift, nXCoord, nYCoord
|
|
This.Parent.Visible = .F.
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS zoomimage AS image
|
|
*< CLASSDATA: Baseclass="image" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: enabled_assign
|
|
*p: deletedisabledpicture && Internal to the class. Specify if disabled picture must be deleted when control is destroyed.
|
|
*p: description && Button's function description.
|
|
*p: disabledpicture && Internal to the class. Specifies the graphic to display when the control is disabled.
|
|
*p: enabledpicture && Internal to the class. Specifies the graphic to display when the control is enabled.
|
|
*p: imageid && Internal to the class. Unique identifier.
|
|
*p: stack && Internal to the class. A pointer to an StackContainer object.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
BackStyle = 0
|
|
deletedisabledpicture = .F.
|
|
disabledpicture = ("")
|
|
enabledpicture = ("")
|
|
Height = 48
|
|
imageid = 0
|
|
Name = "zoomimage"
|
|
stack = .F.
|
|
Stretch = 2
|
|
Themes = .F.
|
|
Width = 48
|
|
_memberdata = <VFPData>
|
|
<memberdata name="description" type="property" display="Description"/>
|
|
<memberdata name="imageid" type="property" display="ImageID"/>
|
|
<memberdata name="stack" type="property" display="Stack"/>
|
|
<memberdata name="enabled_assign" type="method" display="Enabled_Assign"/>
|
|
<memberdata name="deletedisabledpicture" type="property" display="DeleteDisabledPicture"/>
|
|
<memberdata name="disabledpicture" type="property" display="DisabledPicture"/>
|
|
<memberdata name="enabledpicture" type="property" display="EnabledPicture"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
PROCEDURE Click
|
|
With This.Parent.Parent
|
|
If Vartype(This.Stack)=="O"
|
|
Bindevent(This.Stack,"ButtonClicked",This.Parent.Parent,"StackButtonClicked",1)
|
|
Bindevent(This.Stack.shpMouseHandler,"MouseLeave",This,"MouseLeave",1)
|
|
This.Stack.RePosition(.Left+This.Left+This.Width,.Top+3)
|
|
Else
|
|
.ButtonClicked(.ActiveButtonName)
|
|
Endif
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE Destroy
|
|
This.Stack = Null
|
|
|
|
* Change this method for builder version
|
|
|
|
* Set picture property to a non existant image to avoid
|
|
* errors while deleting temporary reflected image.
|
|
This.Picture = "ZoomNavBarFake.bmp"
|
|
*
|
|
If This.DeleteDisabledPicture
|
|
If File(This.DisabledPicture)
|
|
Clear Resources (This.DisabledPicture)
|
|
Delete File (This.DisabledPicture)
|
|
Endif
|
|
Endif
|
|
DoDefault()
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE enabled_assign
|
|
Lparameters vNewVal
|
|
With This
|
|
If m.vNewVal
|
|
.Picture = .EnabledPicture
|
|
Else
|
|
.Picture = .DisabledPicture
|
|
Endif
|
|
.Enabled = m.vNewVal
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE MouseEnter
|
|
Lparameters nButton, nShift, nXCoord, nYCoord
|
|
This.Parent.Parent.ActiveButtonName = This.Name
|
|
This.Parent.Parent.ActiveButtonNumber = This.ImageID
|
|
This.Parent.Parent.RearrangeButtons()
|
|
*
|
|
With This.Parent.Parent
|
|
With .Ctl32_BalloonTip
|
|
.ctlVisible = .F.
|
|
.ctlFadeIn = .T.
|
|
.ctlFadeOut = .T.
|
|
.ctlOffsetY = 1
|
|
.ctlAlignment = 6
|
|
.ctlPosition = 6
|
|
.ctlPositionStyle = 4
|
|
.ctlHideDelay = 10000
|
|
.ctlCapsLockStyle = 0
|
|
.ctlText = This.Description
|
|
.ctlVisible = .T.
|
|
Endwith
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE MouseLeave
|
|
Lparameters nButton, nShift, nXCoord, nYCoord
|
|
*
|
|
With This.Parent.Parent
|
|
With .Ctl32_BalloonTip
|
|
If .ctlVisible
|
|
.ctlVisible = .F.
|
|
Endif
|
|
Endwith
|
|
Endwith
|
|
*
|
|
Local llStack
|
|
llStack = (Vartype(This.Stack)=="O")
|
|
If Not (llStack And This.Stack.Visible)
|
|
If llStack
|
|
Unbindevents(This.Stack,"ButtonClicked",This.Parent.Parent,"StackButtonClicked")
|
|
Unbindevents(This.Stack.shpMouseHandler,"MouseLeave",This,"MouseLeave")
|
|
Endif
|
|
This.Parent.Parent.Parent.Refresh()
|
|
This.Parent.Parent.ActiveButtonName = "None"
|
|
This.Parent.Parent.ActiveButtonNumber = 0
|
|
This.Parent.Parent.RearrangeButtons()
|
|
Endif
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS zoomnavbar 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="imgBackground" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="shpMouseHandler" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="Ctl32_BalloonTip" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="cntZoom" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="cntReflected" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: addbutton && Add a new button.
|
|
*m: addstackbutton && Add a new stack button.
|
|
*m: buttonclicked && Occurs when a button is clicked.
|
|
*m: changetheme && Internal to the class. Occurs when theme change.
|
|
*m: createadditionalimages && Internal to the class. Create necessary images to achieve the effects.
|
|
*m: initthemedcontrol && Internal to the class.
|
|
*m: rearrangebuttons && Internal to the class. Rearrange buttons to show in correctly position.
|
|
*m: setbuttonstate && Set the button state: enabled or disabled.
|
|
*m: setstackbuttonstate && Set the stack button state: enabled or disabled.
|
|
*m: stackbuttonclicked && Occurs when a stack button is clicked.
|
|
*p: activebuttonname && Internal to the class. Contain the name of the active (zoomed) button.
|
|
*p: activebuttonnumber && Internal to the class. Contain the number of the active (zoomed) button.
|
|
*p: custombuilder
|
|
*p: stretch && Specify if the bar is stretched or not.
|
|
*p: version && ZoomNavBar version.
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
PROTECTED version
|
|
*<PropValue>
|
|
activebuttonname = ("None")
|
|
activebuttonnumber = 0
|
|
Anchor = 14
|
|
BackStyle = 0
|
|
BorderWidth = 0
|
|
custombuilder = Double click here to open Builder
|
|
Height = 125
|
|
Name = "zoomnavbar"
|
|
version = 3.5.0
|
|
Width = 200
|
|
_memberdata = <VFPData>
|
|
<memberdata name="addbutton" type="method" display="AddButton"/>
|
|
<memberdata name="buttonclicked" type="method" display="ButtonClicked"/>
|
|
<memberdata name="rearrange" type="method" display="ReArrange"/>
|
|
<memberdata name="rearrangebuttons" type="method" display="ReArrangeButtons"/>
|
|
<memberdata name="version" type="property" display="Version"/>
|
|
<memberdata name="transparentimage" type="property" display="TransparentImage"/>
|
|
<memberdata name="activebuttonname" type="property" display="ActiveButtonName"/>
|
|
<memberdata name="activebuttonnumber" type="property" display="ActiveButtonNumber"/>
|
|
<memberdata name="tempfolder" type="property" display="TempFolder"/>
|
|
<memberdata name="stretch" type="property" display="Stretch"/>
|
|
<memberdata name="addstackbutton" type="method" display="AddStackButton"/>
|
|
<memberdata name="stackbuttonclicked" type="method" display="StackButtonClicked"/>
|
|
<memberdata name="changetheme" type="method" display="ChangeTheme"/>
|
|
<memberdata name="custombuilder" type="property" display="CustomBuilder" script="Local lnControls, laObjects[1]
m.lnControls = Aselobj(m.laObjects)
If m.lnControls # 0
 Local loObject, lcClassLib, loBuilder
 m.loObject = m.laObjects[1]
 m.lcClassLib = Addbs(Justpath(m.loObject.ClassLibrary))+"ThemedControlsBuilders.vcx"
 Set Classlib To (m.lcClassLib) Additive
 m.loBuilder = Createobject("ZoomNavBarBuilder", m.loObject)
 m.loBuilder.Show()
Endif"/>
|
|
<memberdata name="initthemedcontrol" type="method" display="InitThemedControl"/>
|
|
<memberdata name="createadditionalimages" type="method" display="CreateAdditionalImages"/>
|
|
<memberdata name="setbuttonstate" type="method" display="SetButtonState"/>
|
|
<memberdata name="setstackbuttonstate" type="method" display="SetStackButtonState"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'cntReflected' AS container WITH ;
|
|
BackStyle = 0, ;
|
|
BorderWidth = 0, ;
|
|
Height = 24, ;
|
|
Left = 0, ;
|
|
Name = "cntReflected", ;
|
|
Top = 99, ;
|
|
Width = 200
|
|
*< END OBJECT: BaseClass="container" />
|
|
|
|
ADD OBJECT 'cntZoom' AS container WITH ;
|
|
BackStyle = 0, ;
|
|
BorderWidth = 0, ;
|
|
Height = 96, ;
|
|
Left = 0, ;
|
|
Name = "cntZoom", ;
|
|
Top = 3, ;
|
|
Width = 200
|
|
*< END OBJECT: BaseClass="container" />
|
|
|
|
ADD OBJECT 'Ctl32_BalloonTip' AS ctl32_balloontip WITH ;
|
|
Height = 0, ;
|
|
Name = "Ctl32_BalloonTip", ;
|
|
Width = 0, ;
|
|
tmrHide.Name = "tmrHide", ;
|
|
lblname.Name = "lblname", ;
|
|
tmrShow.Name = "tmrShow"
|
|
*< END OBJECT: ClassLib="ctl32.vcx" BaseClass="container" />
|
|
|
|
ADD OBJECT 'imgBackground' AS image WITH ;
|
|
BackStyle = 0, ;
|
|
BorderStyle = 1, ;
|
|
Height = 0, ;
|
|
Left = 0, ;
|
|
Name = "imgBackground", ;
|
|
Stretch = 2, ;
|
|
Themes = .F., ;
|
|
Top = 75, ;
|
|
Width = 0
|
|
*< END OBJECT: BaseClass="image" />
|
|
|
|
ADD OBJECT 'shpMouseHandler' AS shape WITH ;
|
|
BackStyle = 0, ;
|
|
BorderStyle = 0, ;
|
|
Height = 3, ;
|
|
Name = "shpMouseHandler", ;
|
|
Width = 200
|
|
*< END OBJECT: BaseClass="shape" />
|
|
|
|
PROCEDURE addbutton && Add a new button.
|
|
Lparameters lcName, lcDescription, ;
|
|
lcPicture, lcReflectedPicture, ;
|
|
lcDisabledPicture, lcDisabledReflectedPicture, ;
|
|
llEnabled
|
|
If Pcount()<7
|
|
* To avoid changes to this method call when upgrading from previous versions
|
|
llEnabled = .T.
|
|
Endif
|
|
With This
|
|
Local lcClassLibrary, lnControlCount
|
|
lcClassLibrary = "ZoomNavBar.vcx"
|
|
lnControlCount = .cntZoom.ControlCount+1
|
|
If Upper(lcName)=="SEPARATOR"
|
|
lcName = lcName + Alltrim(Transform(lnControlCount))
|
|
.cntZoom.Newobject( lcName,"SeparatorImage",lcClassLibrary )
|
|
.cntReflected.Newobject( lcName,"SeparatorImage",lcClassLibrary )
|
|
Else
|
|
Local llCreateReflectedPicture, llCreateDisabledPicture, llCreateDisabledReflectedPicture
|
|
lcPicture = Fullpath(lcPicture)
|
|
*
|
|
If Empty(lcReflectedPicture)
|
|
lcReflectedPicture = Addbs(_Screen.ThemesManager.TempFolder) + ;
|
|
Juststem(lcPicture) + "_Reflected." + Justext(lcPicture)
|
|
Endif
|
|
llCreateReflectedPicture = Not File(lcReflectedPicture)
|
|
If Empty(lcDisabledPicture)
|
|
lcDisabledPicture = Addbs(_Screen.ThemesManager.TempFolder) + ;
|
|
Juststem(lcPicture) + "_Disabled." + Justext(lcPicture)
|
|
Endif
|
|
llCreateDisabledPicture = Not File(lcDisabledPicture)
|
|
If Empty(lcDisabledReflectedPicture)
|
|
lcDisabledReflectedPicture = Addbs(_Screen.ThemesManager.TempFolder) + ;
|
|
Juststem(lcPicture) + "_DisabledReflected." + Justext(lcPicture)
|
|
Endif
|
|
llCreateDisabledReflectedPicture = Not File(lcDisabledReflectedPicture)
|
|
*
|
|
If llCreateReflectedPicture Or llCreateDisabledPicture Or llCreateDisabledReflectedPicture
|
|
.CreateAdditionalImages(lcPicture,;
|
|
Iif(llCreateReflectedPicture,lcReflectedPicture,""),;
|
|
Iif(llCreateDisabledPicture,lcDisabledPicture,""),;
|
|
Iif(llCreateDisabledReflectedPicture,lcDisabledReflectedPicture,""))
|
|
Endif
|
|
*
|
|
.cntZoom.Newobject( lcName,"ZoomImage",lcClassLibrary )
|
|
With .cntZoom.Controls(lnControlCount)
|
|
.DeleteDisabledPicture = llCreateDisabledPicture
|
|
.Description = lcDescription
|
|
.DisabledPicture = lcDisabledPicture
|
|
.EnabledPicture = lcPicture
|
|
.ImageID = lnControlCount
|
|
.Top = 48
|
|
.Visible = .T.
|
|
Endwith
|
|
*
|
|
.cntReflected.Newobject( lcName,"ReflectedImage",lcClassLibrary )
|
|
With .cntReflected.Controls(lnControlCount)
|
|
.DeleteDisabledPicture = llCreateDisabledReflectedPicture
|
|
.DeletePicture = llCreateReflectedPicture
|
|
.DisabledPicture = lcDisabledReflectedPicture
|
|
.EnabledPicture = lcReflectedPicture
|
|
.Top = 0
|
|
.Visible = .T.
|
|
Endwith
|
|
*
|
|
.SetButtonState(lcName,llEnabled)
|
|
Endif
|
|
If Upper(Thisform.BaseClass)=="TOOLBAR"
|
|
This.Width = (lnControlCount*48)+48+24+24+12
|
|
Endif
|
|
.ReArrangeButtons()
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE addstackbutton && Add a new stack button.
|
|
Lparameters lcParent, lcName, lcCaption, ;
|
|
lcPicture, lcDisabledPicture, llEnabled
|
|
If Pcount()<6
|
|
* To avoid changes to this method call when upgrading from previous versions
|
|
llEnabled = .T.
|
|
Endif
|
|
If Not Upper(Thisform.BaseClass)=="TOOLBAR"
|
|
If Pemstatus(This.cntZoom,lcParent,5)
|
|
*
|
|
Local llCreateDisabledPicture
|
|
lcPicture = Fullpath(lcPicture)
|
|
If Empty(lcDisabledPicture)
|
|
lcDisabledPicture = Addbs(_Screen.ThemesManager.TempFolder) + ;
|
|
Juststem(lcPicture) + "_Disabled." + Justext(lcPicture)
|
|
Endif
|
|
llCreateDisabledPicture = Not File(lcDisabledPicture)
|
|
If llCreateDisabledPicture
|
|
.CreateAdditionalImages(lcPicture,"",;
|
|
Iif(llCreateDisabledPicture,lcDisabledPicture,""),;
|
|
"")
|
|
Endif
|
|
*
|
|
Local lcClassLibrary, loParent, lnTop
|
|
lcClassLibrary = "ZoomNavBar.vcx"
|
|
loParent = Evaluate("This.cntZoom."+lcParent)
|
|
If Not Vartype(loParent.Stack)=="O"
|
|
Local lcStackName
|
|
lcStackName = "Stack_"+loParent.Name
|
|
Thisform.Newobject(lcStackName,"StackContainer",lcClassLibrary)
|
|
loParent.Stack = Evaluate("Thisform."+lcStackName)
|
|
Endif
|
|
lnTop = ((loParent.Stack.ControlCount-1)*36)
|
|
loParent.Stack.Newobject(lcName,"StackButton",lcClassLibrary,,;
|
|
lcCaption,lcPicture,lcDisabledPicture,llCreateDisabledPicture,llEnabled,lnTop)
|
|
loParent.Stack.Controls(loParent.Stack.ControlCount).ChangeTheme()
|
|
*
|
|
Local lnHeight, loStackButton
|
|
lnHeight = 0
|
|
For Each loStackButton In loParent.Stack.Controls
|
|
With loStackButton
|
|
If Upper(loStackButton.Class)=="STACKBUTTON"
|
|
lnHeight = lnHeight + .Height
|
|
.Left = loParent.Stack.Width - .Width
|
|
Endif
|
|
Endwith
|
|
Endfor
|
|
loParent.Stack.Height = lnHeight
|
|
*
|
|
Store Null To loStackButton, loParent
|
|
Endif
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE buttonclicked && Occurs when a button is clicked.
|
|
Lparameters lcName
|
|
ENDPROC
|
|
|
|
PROCEDURE changetheme && Internal to the class. Occurs when theme change.
|
|
With This.imgBackground
|
|
.BorderColor = _Screen.ThemesManager.GetMember("Container.BorderColor")
|
|
.Picture = _Screen.ThemesManager.GetMember("ZoomNavBar.Bar.Picture")
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE createadditionalimages && Internal to the class. Create necessary images to achieve the effects.
|
|
Lparameters lcPicture, lcReflectedPicture, ;
|
|
lcDisabledPicture, lcDisabledReflectedPicture
|
|
If Not Vartype(_Screen.System)=="O"
|
|
Do System.App && Init GDIPlusX
|
|
Endif
|
|
Local loBitmap As xfcBitmap, loClrMatrix As xfcColorMatrix
|
|
With _Screen.System.Drawing
|
|
If Not Empty(lcReflectedPicture) Or Not Empty(lcDisabledReflectedPicture)
|
|
loBitmap = .Bitmap.New(lcPicture)
|
|
loBitmap.RotateFlip(.RotateFlipType.Rotate180FlipX)
|
|
loClrMatrix = .Imaging.ColorMatrix.New()
|
|
loClrMatrix.Matrix33 = 0.3
|
|
loBitmap.ApplyColorMatrix(loClrMatrix)
|
|
If Not Empty(lcReflectedPicture)
|
|
loBitmap.Save(lcReflectedPicture,.Imaging.ImageFormat.Png)
|
|
Endif
|
|
If Not Empty(lcDisabledReflectedPicture)
|
|
loClrMatrix = _Screen.System.Drawing.Imaging.ColorMatrix.New( ;
|
|
.299, .299, .299, 0, 0, ;
|
|
.587, .587, .587, 0, 0, ;
|
|
.114, .114, .114, 0, 0, ;
|
|
0 , 0, 0, 1, 0, ;
|
|
0 , 0, 0, 0, 1)
|
|
loBitmap.ApplyColorMatrix(loClrMatrix)
|
|
loBitmap.Save(lcDisabledReflectedPicture,.Imaging.ImageFormat.Png)
|
|
Endif
|
|
Endif
|
|
*
|
|
If Not Empty(lcDisabledPicture)
|
|
loBitmap = .Bitmap.New(lcPicture)
|
|
loClrMatrix = _Screen.System.Drawing.Imaging.ColorMatrix.New( ;
|
|
.299, .299, .299, 0, 0, ;
|
|
.587, .587, .587, 0, 0, ;
|
|
.114, .114, .114, 0, 0, ;
|
|
0 , 0, 0, 1, 0, ;
|
|
0 , 0, 0, 0, 1)
|
|
loBitmap.ApplyColorMatrix(loClrMatrix)
|
|
loBitmap.Save(lcDisabledPicture,.Imaging.ImageFormat.Png)
|
|
Endif
|
|
*
|
|
Endwith
|
|
Store Null To loBitmap, loClrMatrix
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
Thisform.ShowTips = .T.
|
|
This.InitThemedControl()
|
|
ENDPROC
|
|
|
|
HIDDEN PROCEDURE initthemedcontrol && Internal to the class.
|
|
If Not Vartype(_Screen.ThemesManager)=="O"
|
|
_Screen.Newobject("ThemesManager","ThemesManager","ThemedControls.vcx")
|
|
Endif
|
|
This.ChangeTheme()
|
|
ENDPROC
|
|
|
|
PROCEDURE rearrangebuttons && Internal to the class. Rearrange buttons to show in correctly position.
|
|
Local lnActiveButton
|
|
lnActiveButton = This.ActiveButtonNumber
|
|
With This.cntZoom
|
|
Local lnControlCount, lnZoomOffset, lnLeft, lnButton, lnWidth
|
|
lnControlCount = .ControlCount
|
|
If lnActiveButton==0
|
|
lnZoomOffset = 0
|
|
Else
|
|
lnZoomOffset = 48
|
|
If lnActiveButton>1 And Not ;
|
|
Upper(.Controls(lnActiveButton-1).Class)=="SEPARATORIMAGE"
|
|
lnZoomOffset = lnZoomOffset + 24
|
|
Endif
|
|
If lnActiveButton<lnControlCount And Not ;
|
|
Upper(.Controls(lnActiveButton+1).Class)=="SEPARATORIMAGE"
|
|
lnZoomOffset = lnZoomOffset + 24
|
|
Endif
|
|
Endif
|
|
lnLeft = Max(0,Int((.Width - (lnControlCount*48) - lnZoomOffset)/2))
|
|
For lnButton = 1 To lnControlCount
|
|
With .Controls(lnButton)
|
|
If Vartype(.Stack)=="O"
|
|
.Stack.Visible = .F.
|
|
Endif
|
|
Store lnLeft To .Left, ;
|
|
This.cntReflected.Controls(lnButton).Left
|
|
If lnActiveButton>0 And ;
|
|
lnActiveButton==.ImageID
|
|
.Top = 0
|
|
lnWidth = 96
|
|
Else
|
|
If Not Upper(.Class)=="SEPARATORIMAGE" And ;
|
|
lnActiveButton>0 And ;
|
|
Inlist(.ImageID,lnActiveButton-1,;
|
|
lnActiveButton+1)
|
|
.Top = 24
|
|
lnWidth = 72
|
|
Else
|
|
.Top = 48
|
|
lnWidth = 48
|
|
Endif
|
|
Endif
|
|
Store lnWidth To .Height, .Width, ;
|
|
This.cntReflected.Controls(lnButton).Height, ;
|
|
This.cntReflected.Controls(lnButton).Width
|
|
lnLeft = lnLeft + lnWidth
|
|
Endwith
|
|
Next
|
|
*
|
|
If Not This.Stretch And lnControlCount>0
|
|
With This.cntZoom
|
|
This.imgBackground.Left = .Controls(1).Left - 6
|
|
This.imgBackground.Width = (.Controls(lnControlCount).Left + ;
|
|
.Controls(lnControlCount).Width) - This.imgBackground.Left + 6
|
|
Endwith
|
|
Endif
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE Resize
|
|
DoDefault()
|
|
With This
|
|
.shpMouseHandler.Width = .Width
|
|
.cntZoom.Width = .Width
|
|
.cntReflected.Width = .Width
|
|
If .Stretch
|
|
.imgBackground.Width = .Width
|
|
Endif
|
|
.ReArrangeButtons()
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE setbuttonstate && Set the button state: enabled or disabled.
|
|
Lparameters lcButton, llEnabled
|
|
Store llEnabled To ;
|
|
This.cntZoom.&lcButton..Enabled, ;
|
|
This.cntReflected.&lcButton..Enabled
|
|
ENDPROC
|
|
|
|
PROCEDURE setstackbuttonstate && Set the stack button state: enabled or disabled.
|
|
Lparameters lcButton, lcStackButton, llEnabled
|
|
This.cntZoom.&lcButton..Stack.&lcStackButton..Enabled = llEnabled
|
|
ENDPROC
|
|
|
|
PROCEDURE stackbuttonclicked && Occurs when a stack button is clicked.
|
|
Lparameters lcName
|
|
ENDPROC
|
|
|
|
PROCEDURE imgBackground.Init
|
|
This.Height = 50
|
|
ENDPROC
|
|
|
|
PROCEDURE shpMouseHandler.MouseEnter
|
|
Lparameters nButton, nShift, nXCoord, nYCoord
|
|
With This.Parent
|
|
If Not .ActiveButtonName = "None"
|
|
.ActiveButtonName = "None"
|
|
.ActiveButtonNumber = 0
|
|
.RearrangeButtons()
|
|
Endif
|
|
Endwith
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|