Enkele properties/methods die belangrijk zijn voor spy-forms: AssocNode FCurrentClass (FCurrentORef) OnActivateMDI OnCloseMDI SetFormCaption FTriggerEvent objCLOSE(ReleaseProperties) objDELETE objDELETEme objNEW objOPEN(OpenFirstInMe) objSAVE serial CacheObjectSpyCNTs Default %Library.TMFormClass %Library.TMForm %TMMenuItem %TMPanel %TMSplitter %Library.String 1 UI.Utils.Spy5.dlgClassBrowser %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMImageList %Library.TMImageList %TMImageList %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMenuItem %TMMainMenu %TMPopupMenu %TMPopupMenu %TMStatusBar %Library.TMStatusPanel %Library.TMStatusPanel %TMTreeView initvalue:%String cache 0 %Status document literal Args:%String cache 0 document literal Node:%Library.TMTreeNode cache 0 document literal 1 Do Quit . Do Node.Delete() New PreviousParentNode For Quit:((+ParentNode=0) || (ParentNode.Count>1)) Do . Set PreviousParentNode=ParentNode . Kill ..aClasses(..dCOMPREADClass(PreviousParentNode)) . Set ParentNode=ParentNode.ParentNode Do PreviousParentNode.Delete() Quit ]]> cache 0 document literal ; SimplePanel = False ; end ; object Panel1: CPanel ; Left = 0 ; Top = 0 ; Width = 185 ; Height = 478 ; Align = alLeft ; Caption = 'Panel1' ; TabOrder = 0 ; object tvClasses: CTreeView ; Left = 1 ; Top = 1 ; Width = 183 ; Height = 476 ; Align = alClient ; Font.Charset = DEFAULT_CHARSET ; Font.Color = clWindowText ; Font.Height = -9 ; Font.Name = 'MS Sans Serif' ; Font.Style = [] ; HideSelection = False ; Images = ilTree ; Indent = 19 ; ParentFont = False ; ReadOnly = True ; TabOrder = 0 ; OnChange = tvClassesChange ; OnMouseUp = tvClassesMouseUp ; end ; end ; object mmMain: CMainMenu ; Images = ilMain ; Left = 336 ; Top = 24 ; object hmiClass: TMenuItem ; Caption = '&Class' ; object miAddClass: TMenuItem ; Caption = '&Add...' ; ImageIndex = 0 ; ShortCut = 16449 ; OnClick = miAddClassClick ; end ; object miSepA1: TMenuItem ; Caption = '-' ; end ; object miRemove: TMenuItem ; Caption = 'Remove' ; OnClick = miRemoveClick ; end ; object miRemovePackage: TMenuItem ; Caption = 'Remove package...' ; OnClick = miRemovePackageClick ; end ; object miRemoveAll: TMenuItem ; Caption = 'Remove all...' ; OnClick = miRemoveAllClick ; end ; object miSepA3: TMenuItem ; Caption = '-' ; end ; object miExit: TMenuItem ; Caption = 'E&xit' ; OnClick = miExitClick ; end ; end ; object hmiObject: TMenuItem ; Caption = '&Object' ; object miNewObjectInSelected: TMenuItem ; Caption = '&New in selected' ; ImageIndex = 1 ; OnClick = miNewObjectInSelectedClick ; end ; object miNewObject: TMenuItem ; Caption = 'New' ; ShortCut = 16462 ; OnClick = miNewObjectClick ; end ; object miSepB2: TMenuItem ; Caption = '-' ; end ; object miOpenObjectInSelected: TMenuItem ; Caption = '&Open in selected' ; ImageIndex = 3 ; ShortCut = 16463 ; OnClick = miOpenObjectInSelectedClick ; end ; object miOpenObject: TMenuItem ; Caption = 'Open' ; OnClick = miOpenObjectClick ; end ; object miSepB3: TMenuItem ; Caption = '-' ; end ; object miDeleteSelectedObject: TMenuItem ; Caption = '&Delete selected' ; ImageIndex = 5 ; OnClick = miDeleteSelectedObjectClick ; end ; object miDeleteObject: TMenuItem ; Caption = '&Delete' ; OnClick = miDeleteObjectClick ; end ; object miSepB1: TMenuItem ; Caption = '-' ; end ; object miCloseObject: TMenuItem ; Caption = '&Close' ; OnClick = miCloseObjectClick ; end ; end ; object hmiProject: TMenuItem ; Caption = '&Project' ; object MenuItem2: TMenuItem ; Caption = '&Open...' ; end ; object miSepD2: TMenuItem ; Caption = '-' ; end ; object miProjectSaveAsNew: TMenuItem ; Caption = '&Save as new' ; end ; object miProjectSaveAs: TMenuItem ; Caption = 'Save &as...' ; end ; object miSepD1: TMenuItem ; Caption = '-' ; end ; object miProjectDelete: TMenuItem ; Caption = '&Delete...' ; end ; end ; object hmiWindow: TMenuItem ; Caption = '&Window' ; object miExpandToPackages: TMenuItem ; Caption = '&Expand to packages' ; ShortCut = 16453 ; OnClick = miExpandToPackagesClick ; end ; object miSepC1: TMenuItem ; Caption = '-' ; end ; object miTileHorizontally: TMenuItem ; Caption = 'Tile &horizontally' ; OnClick = miTileHorizontallyClick ; end ; end ; end ; object pmClasses: CPopupMenu ; Images = ilMain ; Left = 94 ; Top = 448 ; end ; object ilMain: CImageList ; Left = 364 ; Top = 24 ; Bitmap = ; 'ObjectClass.ico,FileNew4.bmp,FileNewAdd4.bmp,FileOpen.bmp,Search' + ; 'Find2.bmp,Error.bmp' ; end ; object ilTree: CImageList ; Left = 150 ; Top = 448 ; Bitmap = ; 'BlueFolderClosed.bmp,ObjectClass.ico,ObjectClassArray.ico,Stream' + ; '.bmp,MultiDimensional.bmp,ObjectList.ico,ObjectArray.ico' ; end ; object pmPackages: CPopupMenu ; Images = ilMain ; Left = 122 ; Top = 448 ; end ;end ]]> Args:%String cache 0 document literal cache 0 document literal ClassName:%Library.String cache 0 document literal initvalue:%String cache 0 MApplication document literal Args:%Library.List cache 0 document literal Args:%Library.List,Parameter,Parameter2:%Library.String cache 0 document literal Args:%Library.List cache 0 document literal initvalue:%String cache 0 %Library.Status document literal Args:%Library.List cache 0 document literal cache 0 document literal Package:%Library.String cache 0 document literal Args:%String cache 0 document literal ClassName:%String,DirectLoad:%Library.Boolean=0,InsBeforeNode:%Library.TMTreeNode=0,FormType:%Library.Integer=$$$spyMini cache 0 %Library.String document literal Node:%Library.TMTreeNode,ImageIndex cache 0 document literal Node:%Library.TMTreeNode cache 0 document literal Indien deze Node -> Starten van ParentNode, overige vanaf Node (*) + RTNFIND + ... + DEBUG + ... */ Set Node=$G(Node,..tvClasses.Selected) Quit:(+Node=0) "" New tmpItem,tmpStr Set tmpItem=$S(Node.HasChildren="True":Node,1:Node.ParentNode) ;(*) Set tmpStr=tmpItem.Text For Quit:('tmpItem.ParentNode) Do . Set tmpItem=tmpItem.ParentNode . Set tmpStr=tmpItem.Text_"."_tmpStr Quit tmpStr ]]> cache 0 document literal cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal Args:%String cache 0 document literal 2 3 1 4 6 5 %Library.CacheSerialState "%Library.TMFormClass" Address Form Dock1 SpeedButton1 SpeedButton2 SpeedButton3 Toolbar1 hmiObject mmMain dckTop miNew miOpen sbStatus tbObject MenuItem1 miExit miSepA1 miSepA2 pnlLeft Splitter1 TreeView1 MenuItem2 miAdd hmiClass miAddClass frmClassBrowser miSepB1 miDelete sbpnlText sbpnlProgressBar ilMenu ToolbarSep1 btnAddClass tbClass tvClasses miClearClassList tbClasses dckLeft miRemoveClass miRemoveAll miLoadAllClasses miLoadClass miSepA3 miDeleteObject miNewObject miOpenObject miExploreObject miNewObjectInSelected miSepB2 pmClasses PopupMenu1 ilMain ilTree miRemove hmiWindow miTileHorizontally miOpenObjectInSelected miSepB3 miCloseObject miRemovePackage miExploreObjectInSelected miDeleteSelectedObject pmPackages miExpandToPackages miSepC1 hmiProject miProjectDelete miProjectSaveAs miProjectSaveAsNew miSepD1 miSepD2 Button1 Panel1