*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (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="" /> * *m: caption_assign *p: _memberdata && XML Metadata for customizable properties * PROTECTED Destroy,Init * BackColor = 255,255,255 Caption = "Page1" Height = 156 Name = "pane" Width = 156 _memberdata = * 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="" /> * *m: pagecount_assign *p: _memberdata && XML Metadata for customizable properties * * 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 = * 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="" /> * *m: changetheme *m: initthemedcontrol *p: titleid && Title ID. *p: _memberdata && XML Metadata for customizable properties * * BackStyle = 0 Height = 19 Name = "title" titleid = 0 Width = 200 _memberdata = * 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="" /> * *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 * PROTECTED Init,Resize,version * Anchor = 15 BackColor = 255,255,255 Height = 400 Name = "toolbox" version = 3.5.0 Width = 200 wrap = .T. _memberdata = * 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