Files
comun/utile/ctl32/toolbox.vc2

374 lines
11 KiB
Plaintext

*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="toolbox.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS pane AS page
*< CLASSDATA: Baseclass="page" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod>
*m: caption_assign
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
PROTECTED Destroy,Init
*<PropValue>
BackColor = 255,255,255
Caption = "Page1"
Height = 156
Name = "pane"
Width = 156
_memberdata = <VFPData>
<memberdata name="caption_assign" type="method" display="Caption_Assign"/>
</VFPData>
*</PropValue>
PROCEDURE Activate
With This.Parent.Parent
.TitleClicked(.Controls(This.PageOrder+1).Name)
Endwith
ENDPROC
HIDDEN PROCEDURE caption_assign
Lparameters vNewVal
Store m.vNewVal To This.Caption, ;
This.Parent.Parent.Controls(This.PageOrder+1).lblCaption.Caption
ENDPROC
PROTECTED PROCEDURE Destroy
Try
With This.Parent.Parent
* Remove all titles
Local lnTitle
m.lnTitle = "TITLE"+Transform(This.PageOrder)
.RemoveObject(m.lnTitle)
Endwith
Catch
Endtry
ENDPROC
PROTECTED PROCEDURE Init
With This
.Parent.Parent.Newobject("Title"+Alltrim(Transform(.PageOrder)),;
"Title","ToolBox",,.PageOrder,.Caption)
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS panes AS pageframe
*< CLASSDATA: Baseclass="pageframe" Timestamp="" Scale="Pixels" Uniqueid="" />
*<DefinedPropArrayMethod>
*m: pagecount_assign
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
*<PropValue>
ActivePage = 0
BorderWidth = 0
ErasePage = .T.
Height = 398
MemberClass = "pane"
MemberClassLibrary = toolbox.vcx
Name = "panes"
PageCount = 0
SpecialEffect = 2
Tabs = .F.
Themes = .F.
Width = 198
_memberdata = <VFPData>
<memberdata name="pagecount_assign" type="method" display="PageCount_Assign"/>
</VFPData>
*</PropValue>
HIDDEN PROCEDURE pagecount_assign
Lparameters vNewVal
With This
Local lnActivePage
lnActivePage = .ActivePage
.PageCount = m.vNewVal
*
Do Case
Case .PageCount==0
.ActivePage = 0
Case lnActivePage > .PageCount
.ActivePage = 1
Otherwise
.ActivePage = .ActivePage
Endcase
.Parent.ReArrangeTitles()
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS title 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="imgPicture" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblCaption" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdFocus" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="shpClickHandler" UniqueID="" Timestamp="" />
*<DefinedPropArrayMethod>
*m: changetheme
*m: initthemedcontrol
*p: titleid && Title ID.
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
*<PropValue>
BackStyle = 0
Height = 19
Name = "title"
titleid = 0
Width = 200
_memberdata = <VFPData>
<memberdata name="titleid" type="property" display="TitleID"/>
<memberdata name="changetheme" type="method" display="ChangeTheme"/>
</VFPData>
*</PropValue>
ADD OBJECT 'cmdFocus' AS commandbutton WITH ;
Anchor = 10, ;
Caption = "", ;
Height = 15, ;
Left = 2, ;
Name = "cmdFocus", ;
Style = 1, ;
TabIndex = 1, ;
Themes = .F., ;
Top = 2, ;
Width = 196
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'imgBackground' AS image WITH ;
Anchor = 15, ;
Height = 17, ;
Left = 1, ;
Name = "imgBackground", ;
Stretch = 2, ;
Top = 1, ;
Width = 198
*< END OBJECT: BaseClass="image" />
ADD OBJECT 'imgPicture' AS image WITH ;
Anchor = 2, ;
Height = 9, ;
Left = 6, ;
Name = "imgPicture", ;
Top = 5, ;
Width = 9
*< END OBJECT: BaseClass="image" />
ADD OBJECT 'lblCaption' AS label WITH ;
Anchor = 10, ;
BackStyle = 0, ;
Caption = "", ;
FontSize = 8, ;
Height = 17, ;
Left = 26, ;
Name = "lblCaption", ;
TabIndex = 2, ;
Top = 2, ;
Width = 168
*< END OBJECT: BaseClass="label" />
ADD OBJECT 'shpClickHandler' AS shape WITH ;
BackStyle = 0, ;
BorderStyle = 0, ;
Height = 19, ;
Name = "shpClickHandler", ;
Width = 200
*< END OBJECT: BaseClass="shape" />
PROCEDURE changetheme
With _Screen.ThemesManager
This.BorderColor = .GetMember("Title.BorderColor")
This.imgBackground.Left = .GetMember("Title.Background.Left")
This.imgBackground.Width = This.Width - This.imgBackground.Left - 1
This.imgBackground.Picture = .GetMember("ToolTitle.Background.Picture")
This.imgBackground.Anchor = 0
This.imgBackground.Anchor = 15
This.lblCaption.ForeColor = .GetMember("ToolTitle.FontColor")
Endwith
ENDPROC
PROCEDURE Init
Lparameters liID, lcCaption
With This
.TitleID = liID
.lblCaption.Caption = lcCaption
.InitThemedControl()
.Visible = .T.
Endwith
ENDPROC
HIDDEN PROCEDURE initthemedcontrol
If Not Vartype(_Screen.ThemesManager)=="O"
_Screen.Newobject("ThemesManager","ThemesManager","ThemedControls.vcx")
Endif
This.ChangeTheme()
ENDPROC
PROCEDURE cmdFocus.KeyPress
Lparameters nKeyCode, nShiftAltCtrl
Do Case
Case nKeyCode==13
Nodefault
Case Inlist(nKeyCode,43,45)
With This.Parent
Local lnActivePage
lnActivePage = .Parent.Panes.ActivePage
If (nKeyCode==43 And Not .TitleID==lnActivePage) Or ;
(nKeyCode==45 And .TitleID==lnActivePage)
.shpClickHandler.Click()
Endif
Endwith
Endcase
ENDPROC
PROCEDURE shpClickHandler.Click
With This.Parent
If .Parent.Panes.ActivePage==.TitleID
If .Parent.Wrap
.Parent.Panes.ActivePage = Iif(.Parent.Panes.PageCount==.TitleID,1,.TitleID+1)
Else
.Parent.Panes.ActivePage = .TitleID + Iif(.Parent.Panes.PageCount==.TitleID,-1,1)
Endif
Else
.Parent.Panes.ActivePage = .TitleID
Endif
.Parent.ReArrangeTitles()
* Needed to show focus rectangle
Local loTitle
If Upper(Thisform.BaseClass)=="TOOLBAR"
loTitle = This.Parent
Else
loTitle = .Parent.Controls(.Parent.Panes.ActivePage+1)
Endif
With loTitle
.cmdFocus.Visible = .F.
.cmdFocus.Visible = .T.
.SetFocus()
Endwith
loTitle = Null
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS toolbox 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="Panes" UniqueID="" Timestamp="" />
*<DefinedPropArrayMethod>
*m: changetheme && Occurs when theme change.
*m: initthemedcontrol
*m: rearrangetitles && Internal to the class. Rearrange title to show in correctly and position.
*m: titleclicked && Occurs when a title is clicked.
*p: version && ToolBox version.
*p: wrap && Specify if the focus goes to the first Title (.T.) or to the previous Title (.F.) when the last Title is collapsed.
*p: _memberdata && XML Metadata for customizable properties
*</DefinedPropArrayMethod>
PROTECTED Init,Resize,version
*<PropValue>
Anchor = 15
BackColor = 255,255,255
Height = 400
Name = "toolbox"
version = 3.5.0
Width = 200
wrap = .T.
_memberdata = <VFPData>
<memberdata name="changetheme" type="method" display="ChangeTheme"/>
<memberdata name="rearrangetitles" type="method" display="ReArrangeTitles"/>
<memberdata name="titleclicked" type="method" display="TitleClicked"/>
<memberdata name="version" type="property" display="Version"/>
<memberdata name="wrap" type="property" display="Wrap"/>
<memberdata name="initthemedcontrol" type="method" display="InitThemedControl"/>
</VFPData>
*</PropValue>
ADD OBJECT 'Panes' AS panes WITH ;
ErasePage = .T., ;
Height = 398, ;
Left = 1, ;
Name = "Panes", ;
Top = 1
*< END OBJECT: ClassLib="toolbox.vcx" BaseClass="pageframe" />
PROCEDURE changetheme && Occurs when theme change.
This.BorderColor = _Screen.ThemesManager.GetMember("Container.BorderColor")
ENDPROC
PROTECTED PROCEDURE Init
This.Panes.ActivePage = 1
This.InitThemedControl()
This.ReArrangeTitles()
ENDPROC
HIDDEN PROCEDURE initthemedcontrol
If Not Vartype(_Screen.ThemesManager)=="O"
_Screen.Newobject("ThemesManager","ThemesManager","ThemedControls.vcx")
Endif
This.ChangeTheme()
ENDPROC
PROCEDURE rearrangetitles && Internal to the class. Rearrange title to show in correctly and position.
Local lnTop, lnTitles, lnHeight, lnTabIndex, loControl, llBottom
lnTop = 0
lnTitles = (This.ControlCount-1)
lnHeight = This.Height
lnTabIndex = 1
For Each loControl In This.Controls
loControl.TabIndex = lnTabIndex
lnTabIndex = lnTabIndex + 1
If Upper(loControl.Class)==Upper("Title")
loControl.Width = This.Width
loControl.Top = lnTop
If (loControl.TitleID)==This.Panes.ActivePage
loControl.imgPicture.Picture = _Screen.ThemesManager.GetMember("Signs.Minus.Picture")
llBottom = .T.
With This.Panes
.Top = loControl.Top + loControl.Height
.TabIndex = lnTabIndex
Endwith
lnTabIndex = lnTabIndex + 1
Else
loControl.imgPicture.Picture = _Screen.ThemesManager.GetMember("Signs.Plus.Picture")
Endif
lnTitles = lnTitles - 1
If Not llBottom
lnTop = lnTop + (loControl.Height-1)
Else
lnTop = This.Height - (lnTitles*(loControl.Height-1)) - 1
lnHeight = Min(lnHeight,lnTop - This.Panes.Top)
Endif
Else
loControl.Width = This.Width - 2
Endif
Endfor
loControl = Null
This.Panes.Height = lnHeight
ENDPROC
PROTECTED PROCEDURE Resize
If This.ControlCount>1 && Execute only after all titles was added
This.ReArrangeTitles()
Endif
ENDPROC
PROCEDURE titleclicked && Occurs when a title is clicked.
Lparameters lcTitle
ENDPROC
ENDDEFINE