├── .gitignore ├── CHANGES.txt ├── Contributions └── GenericWrapper │ └── VirtualTreeWrapper.pas ├── Delphinus.Info.json ├── Delphinus.Install.json ├── Demos ├── Advanced │ ├── Advanced.dpr │ ├── Advanced.dproj │ ├── AlignDemo.dfm │ ├── AlignDemo.pas │ ├── DrawTreeDemo.dfm │ ├── DrawTreeDemo.pas │ ├── Editors.pas │ ├── ExtraRes.rc │ ├── GeneralAbilitiesDemo.dfm │ ├── GeneralAbilitiesDemo.pas │ ├── GridDemo.dfm │ ├── GridDemo.pas │ ├── HeaderCustomDrawDemo.dfm │ ├── HeaderCustomDrawDemo.pas │ ├── Main.dfm │ ├── Main.pas │ ├── MultilineDemo.dfm │ ├── MultilineDemo.pas │ ├── PropertiesDemo.dfm │ ├── PropertiesDemo.pas │ ├── Res │ │ ├── Arabic.uni │ │ ├── Background.bmp │ │ ├── Background2.bmp │ │ ├── Book.bmp │ │ ├── Chart.bmp │ │ ├── Chinese.bmp │ │ ├── Clipboard.bmp │ │ ├── Cyrillic.bmp │ │ ├── Earth.bmp │ │ ├── Exit.bmp │ │ ├── Eye.bmp │ │ ├── Fist.bmp │ │ ├── ForeignStrings.rc │ │ ├── Greek.uni │ │ ├── Header.bmp │ │ ├── Hebrew.uni │ │ ├── Image list 24x24.bmp │ │ ├── Image list 32x32.bmp │ │ ├── Lorem ipsum.uni │ │ ├── Multiline.bmp │ │ ├── Omega.bmp │ │ ├── Paintbrush.bmp │ │ ├── Sheets.bmp │ │ ├── Transcriptions.bmp │ │ └── XP.bmp │ ├── SpeedDemo.dfm │ ├── SpeedDemo.pas │ ├── States.dfm │ ├── States.pas │ ├── VisibilityDemo.dfm │ ├── VisibilityDemo.pas │ ├── WindowsXPStyleDemo.dfm │ ├── WindowsXPStyleDemo.pas │ └── mainicon.ico ├── CBuilderMinimal │ ├── CBMinimal.cbproj │ ├── CBMinimal.cpp │ ├── CBMinimalPCH1.h │ ├── main.cpp │ ├── main.dfm │ └── main.h ├── FMX │ └── Minimal │ │ ├── Main.fmx │ │ ├── Main.pas │ │ ├── Minimal.dpr │ │ └── Minimal.dproj ├── Interfaces │ ├── charityevents.dpr │ ├── charityevents.dproj │ ├── modelviewform.dfm │ ├── modelviewform.pas │ ├── myeventdata.pas │ └── myevents.pas ├── Minimal │ ├── Main.dfm │ ├── Main.pas │ ├── Minimal.dpr │ └── Minimal.dproj ├── OLE │ ├── Main.dfm │ ├── Main.pas │ ├── OLE.dpr │ ├── OLE.dproj │ └── Res │ │ ├── Extra.res │ │ └── Text.rtf ├── Objects │ ├── MVCDemo.dpr │ ├── MVCDemo.dproj │ ├── MVCDemoMain.dfm │ ├── MVCDemoMain.pas │ ├── MVCPanel.pas │ └── MVCTypes.pas ├── VirtualTreeview.bdsgroup └── VirtualTreeview.bpg ├── Design ├── VirtualTrees.dcr └── VirtualTreesReg.pas ├── Help ├── Source │ ├── Images │ │ ├── Background.bmp │ │ ├── Background.jpg │ │ ├── Big folder.bmp │ │ ├── Big folder.jpg │ │ ├── Blue star.bmp │ │ ├── Blue star.jpg │ │ ├── ButtonFillModes.bmp │ │ ├── ButtonFillModes.jpg │ │ ├── Check images overview.bmp │ │ ├── Check images overview.jpg │ │ ├── CheckDark.bmp │ │ ├── CheckDark.jpg │ │ ├── CheckLight.bmp │ │ ├── CheckLight.jpg │ │ ├── Checker150.bmp │ │ ├── Checker150.jpg │ │ ├── Class 2.bmp │ │ ├── Class 2.jpg │ │ ├── Clock.bmp │ │ ├── Clock.jpg │ │ ├── Constant 2.bmp │ │ ├── Constant 2.jpg │ │ ├── Document.bmp │ │ ├── Document.jpg │ │ ├── Event 2.bmp │ │ ├── Event 2.jpg │ │ ├── Field 2.bmp │ │ ├── Field 2.jpg │ │ ├── Folder.bmp │ │ ├── Folder.jpg │ │ ├── GenericXP.bmp │ │ ├── GenericXP.jpg │ │ ├── Help+Support.bmp │ │ ├── Help+Support.jpg │ │ ├── Hierarchy.bmp │ │ ├── Hierarchy.jpg │ │ ├── Hot.bmp │ │ ├── Hot.jpg │ │ ├── Info.bmp │ │ ├── Info.jpg │ │ ├── Library.bmp │ │ ├── Library.jpg │ │ ├── License.bmp │ │ ├── License.jpg │ │ ├── LineModes.bmp │ │ ├── LineModes.jpg │ │ ├── Link new.bmp │ │ ├── Link new.jpg │ │ ├── Mail.bmp │ │ ├── Mail.jpg │ │ ├── Method 2.bmp │ │ ├── Method 2.jpg │ │ ├── Overview.bmp │ │ ├── Overview.jpg │ │ ├── Property 2.bmp │ │ ├── Property 2.jpg │ │ ├── Read only 3.bmp │ │ ├── Read only 3.jpg │ │ ├── Selection mode.bmp │ │ ├── Selection mode.jpg │ │ ├── Snow earth.bmp │ │ ├── Snow earth.jpg │ │ ├── Source code.bmp │ │ ├── Source code.jpg │ │ ├── Space100.bmp │ │ ├── Space100.jpg │ │ ├── StripeDark.bmp │ │ ├── StripeDark.jpg │ │ ├── StripeLight.bmp │ │ ├── StripeLight.jpg │ │ ├── Struct 2.bmp │ │ ├── Struct 2.jpg │ │ ├── TickDark.bmp │ │ ├── TickDark.jpg │ │ ├── TickLight.bmp │ │ ├── TickLight.jpg │ │ ├── Titel.jpg │ │ ├── Topaz.bmp │ │ ├── Topaz.jpg │ │ ├── TreeWindow.bmp │ │ ├── TreeWindow.jpg │ │ ├── Type 2.bmp │ │ ├── Type 2.jpg │ │ ├── Variable 2.bmp │ │ ├── Variable 2.jpg │ │ ├── abstract 2.bmp │ │ ├── abstract 2.jpg │ │ ├── private 2.bmp │ │ ├── private 2.jpg │ │ ├── private DG.bmp │ │ ├── private DG.jpg │ │ ├── protect DG.bmp │ │ ├── protect DG.jpg │ │ ├── protected 2.bmp │ │ ├── protected 2.jpg │ │ ├── public 2.bmp │ │ ├── public 2.jpg │ │ ├── public DG.bmp │ │ ├── public DG.jpg │ │ ├── published 2.bmp │ │ ├── published 2.jpg │ │ ├── read only 2.bmp │ │ ├── read only 2.jpg │ │ ├── readonly DG.bmp │ │ ├── readonly DG.jpg │ │ ├── virtual 2.bmp │ │ └── virtual 2.jpg │ ├── Include │ │ ├── AdditionalInfo.dtx │ │ ├── DataHandling.dtx │ │ ├── DragDrop.dtx │ │ ├── Editing.dtx │ │ ├── Features.dtx │ │ ├── GettingStartedE.RTF │ │ ├── GettingStartedE.dtx │ │ ├── GettingStartedG.RTF │ │ ├── History.dtx │ │ ├── Installation.dtx │ │ ├── KeyHandling.dtx │ │ ├── Licensing.dtx │ │ ├── Overview.dtx │ │ ├── PaintCycles.dtx │ │ ├── Paradigm.dtx │ │ ├── QA.dtx │ │ ├── Repositiory.dtx │ │ ├── TreeImage.dtx │ │ └── specialtopics.dtx │ ├── VirtualTreeview.dox │ ├── VirtualTreeview.doxdb │ └── VirtualTreeview.ldb └── VirtualTreeview.chm ├── INSTALL.txt ├── MAKEFILE ├── MakeRelease.Bat ├── Packages ├── CBuilder 10.1 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── CBuilder 10.2 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── CBuilder 10 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── CBuilder XE5 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── CBuilder XE7 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── CBuilder XE8 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesCD.cbproj │ ├── VirtualTreesCD.cpp │ ├── VirtualTreesCR.cbproj │ └── VirtualTreesCR.cpp ├── RAD Studio 10.1 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── RAD Studio 10.2 FMX │ ├── AndroidManifest.template.xml │ ├── VirtualTreeViewFMX.groupproj │ ├── VirtualTreesD_FMX.dpk │ ├── VirtualTreesD_FMX.dproj │ ├── VirtualTreesR_FMX.dpk │ └── VirtualTreesR_FMX.dproj ├── RAD Studio 10.2 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── RAD Studio 10.3 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── RAD Studio 10 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── RAD Studio XE3 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesD.res │ ├── VirtualTreesR.dpk │ ├── VirtualTreesR.dproj │ └── VirtualTreesR.res ├── RAD Studio XE4 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesD.res │ ├── VirtualTreesR.dpk │ ├── VirtualTreesR.dproj │ └── VirtualTreesR.res ├── RAD Studio XE5 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.cpp │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesD.res │ ├── VirtualTreesR.cpp │ ├── VirtualTreesR.dpk │ ├── VirtualTreesR.dproj │ └── VirtualTreesR.res ├── RAD Studio XE6 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── RAD Studio XE7 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj └── RAD Studio XE8 │ ├── VirtualTreeView.groupproj │ ├── VirtualTreesD.dpk │ ├── VirtualTreesD.dproj │ ├── VirtualTreesR.dpk │ └── VirtualTreesR.dproj ├── README.md ├── Resources ├── VT XP button minus.bmp ├── VT XP button plus.bmp ├── VT XP.bmp ├── VT check dark.bmp ├── VT check light.bmp ├── VT flat.bmp ├── VT header split.cur ├── VT move all.bmp ├── VT move all.cur ├── VT move east-west.bmp ├── VT move east-west.cur ├── VT move east.cur ├── VT move north-east.cur ├── VT move north-south.bmp ├── VT move north-south.cur ├── VT move north-west.cur ├── VT move north.cur ├── VT move south-east.cur ├── VT move south-west.cur ├── VT move south.cur ├── VT move west.cur ├── VT tick dark.bmp ├── VT tick light.bmp ├── VT utilities.bmp ├── VT vertical split.cur ├── VirtualTreeview-Icon.ico └── VirtualTreeview-Icon.png ├── ScreenShots └── VT_Android_8_0.jpg ├── Source ├── VirtualTrees.Accessibility.pas ├── VirtualTrees.AccessibilityFactory.pas ├── VirtualTrees.Actions.pas ├── VirtualTrees.AncestorFMX.pas ├── VirtualTrees.AncestorVcl.pas ├── VirtualTrees.BaseAncestorFMX.pas ├── VirtualTrees.BaseAncestorVcl.pas ├── VirtualTrees.BaseTree.pas ├── VirtualTrees.Classes.pas ├── VirtualTrees.ClipBoard.pas ├── VirtualTrees.Colors.pas ├── VirtualTrees.DataObject.pas ├── VirtualTrees.DragImage.pas ├── VirtualTrees.DragnDrop.pas ├── VirtualTrees.DrawTree.pas ├── VirtualTrees.EditLink.pas ├── VirtualTrees.Export.pas ├── VirtualTrees.FMX.pas ├── VirtualTrees.Header.pas ├── VirtualTrees.HeaderPopup.dtx ├── VirtualTrees.HeaderPopup.pas ├── VirtualTrees.StyleHooks.pas ├── VirtualTrees.Types.pas ├── VirtualTrees.Utils.pas ├── VirtualTrees.WorkerThread.pas ├── VirtualTrees.dtx ├── VirtualTrees.pas └── VirtualTrees.res └── Tests ├── Tests.dpr ├── Tests.dproj ├── VirtualStringTreeTests.pas └── VirtualTreeTests.pas /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.dcu 4 | *.obj 5 | *.exe 6 | *.bpl 7 | *.bpi 8 | *.dcp 9 | *.rsm 10 | *.stat 11 | *.map 12 | 13 | # Generated source # 14 | ################### 15 | *.hpp 16 | 17 | # Backup files # 18 | ################### 19 | *.~* 20 | 21 | # IDE Files # 22 | ################### 23 | *.dproj.local 24 | *.groupproj.local 25 | *.identcache 26 | *.dsk 27 | *.tvsconfig 28 | *.otares 29 | *.drc 30 | *.rc 31 | *.res 32 | *.local 33 | 34 | # Output Folders # 35 | ################### 36 | /Win32 37 | /Win64 38 | /OSX32 39 | /__history 40 | *.bak 41 | *.Patch 42 | *.o 43 | VirtualTreeView.zip 44 | *.#00 45 | *.pch 46 | -------------------------------------------------------------------------------- /Delphinus.Info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "{A34BA07B-19B6-4C21-9DEE-65FCA52D00AB}", 3 | "name": "Virtual Treeview", 4 | "picture": "Resources\\VirtualTreeview-Icon.png", 5 | "license_type": "MPL-1.1", 6 | "platforms": "Win32;Win64", 7 | "first_version": "6.2.0", 8 | "package_compiler_min": 24, 9 | "compiler_min": 24 10 | } -------------------------------------------------------------------------------- /Delphinus.Install.json: -------------------------------------------------------------------------------- 1 | { 2 | "search_pathes": 3 | [ 4 | { 5 | "pathes": "Source", 6 | "platforms": "Win32;Win64" 7 | } 8 | ], 9 | 10 | "browsing_pathes": 11 | [ 12 | { 13 | "pathes": "Source", 14 | "platforms": "Win32;Win64" 15 | } 16 | ], 17 | 18 | "source_folders": 19 | [ 20 | { 21 | "folder": "source", 22 | "base": "", 23 | "recursive": true, 24 | "filter": "*;*.*" 25 | }, 26 | { 27 | "folder": "Packages", 28 | "base": "", 29 | "recursive": true, 30 | "filter": "*;*.*" 31 | }, 32 | { 33 | "folder": "Design", 34 | "base": "", 35 | "recursive": true, 36 | "filter": "*;*.*" 37 | } 38 | ], 39 | 40 | "projects": 41 | [ 42 | { 43 | "project": "Packages\\RAD Studio XE3\\VirtualTreeView.groupproj" 44 | "compiler_max": 26 45 | }, 46 | { 47 | "project": "Packages\\RAD Studio XE6\\VirtualTreeView.groupproj" 48 | "compiler": 27 49 | }, 50 | { 51 | "project": "Packages\\RAD Studio XE7\\VirtualTreeView.groupproj" 52 | "compiler": 28 53 | }, 54 | { 55 | "project": "Packages\\RAD Studio XE8\\VirtualTreeView.groupproj" 56 | "compiler": 29 57 | }, 58 | { 59 | "project": "Packages\\RAD Studio 10\\VirtualTreeView.groupproj" 60 | "compiler_min": 30 61 | } 62 | ] 63 | } -------------------------------------------------------------------------------- /Demos/Advanced/Advanced.dpr: -------------------------------------------------------------------------------- 1 | program Advanced; 2 | 3 | {$R 'ExtraRes.res' 'ExtraRes.rc'} 4 | 5 | uses 6 | Forms, 7 | SpeedDemo in 'SpeedDemo.pas' {SpeedForm}, 8 | DrawTreeDemo in 'DrawTreeDemo.pas' {DrawTreeForm}, 9 | GeneralAbilitiesDemo in 'GeneralAbilitiesDemo.pas' {frmGeneralAbilities}, 10 | PropertiesDemo in 'PropertiesDemo.pas' {PropertiesForm}, 11 | GridDemo in 'GridDemo.pas' {GridForm}, 12 | Editors in 'Editors.pas', 13 | VisibilityDemo in 'VisibilityDemo.pas' {VisibilityForm}, 14 | AlignDemo in 'AlignDemo.pas' {AlignForm}, 15 | Main in 'Main.pas' {MainForm}, 16 | WindowsXPStyleDemo in 'WindowsXPStyleDemo.pas' {WindowsXPForm}, 17 | MultilineDemo in 'MultilineDemo.pas' {NodeForm}, 18 | HeaderCustomDrawDemo in 'HeaderCustomDrawDemo.pas' {HeaderOwnerDrawForm}, 19 | States in 'States.pas' {StateForm}; 20 | 21 | {$R *.RES} 22 | 23 | begin 24 | ReportMemoryLeaksOnShutdown := True; 25 | Application.Initialize; 26 | Application.CreateForm(TMainForm, MainForm); 27 | Application.CreateForm(TStateForm, StateForm); 28 | Application.Run; 29 | end. 30 | -------------------------------------------------------------------------------- /Demos/Advanced/DrawTreeDemo.dfm: -------------------------------------------------------------------------------- 1 | object DrawTreeForm: TDrawTreeForm 2 | Left = 544 3 | Top = 320 4 | Width = 726 5 | Height = 513 6 | Color = clBtnFace 7 | Font.Charset = ANSI_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -13 10 | Font.Name = 'Trebuchet MS' 11 | Font.Style = [] 12 | OldCreateOrder = False 13 | OnCreate = FormCreate 14 | DesignSize = ( 15 | 710 16 | 475) 17 | PixelsPerInch = 96 18 | TextHeight = 18 19 | object Label7: TLabel 20 | Left = 0 21 | Top = 0 22 | Width = 710 23 | Height = 61 24 | Align = alTop 25 | AutoSize = False 26 | Caption = 27 | 'A sample for a draw tree, which shows images of all known types ' + 28 | 'as thumbnails. By default this tree uses the image loader librar' + 29 | 'y GraphicEx to support many common image formats like png, gif ' + 30 | 'etc. (see www.delphi-gems.com for more infos and download).' 31 | WordWrap = True 32 | end 33 | object Label1: TLabel 34 | Left = 4 35 | Top = 381 36 | Width = 247 37 | Height = 18 38 | Anchors = [akLeft, akBottom] 39 | Caption = 'Adjust vertical image alignment of nodes:' 40 | end 41 | object Label3: TLabel 42 | Left = 424 43 | Top = 381 44 | Width = 22 45 | Height = 18 46 | Anchors = [akLeft, akBottom] 47 | Caption = '50%' 48 | end 49 | object VDT1: TVirtualDrawTree 50 | Left = 10 51 | Top = 84 52 | Width = 684 53 | Height = 278 54 | Anchors = [akLeft, akTop, akRight, akBottom] 55 | AutoExpandDelay = 200 56 | AutoScrollDelay = 200 57 | BevelInner = bvNone 58 | BevelKind = bkTile 59 | BorderStyle = bsNone 60 | ClipboardFormats.Strings = ( 61 | 'Virtual Tree Data') 62 | Colors.BorderColor = clWindowText 63 | Colors.HotColor = clBlack 64 | Colors.TreeLineColor = clBtnFace 65 | DefaultNodeHeight = 32 66 | Header.AutoSizeIndex = -1 67 | Header.Background = clBtnHighlight 68 | Header.Height = 22 69 | Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoRestrictDrag, hoShowSortGlyphs, hoVisible] 70 | Header.ParentFont = True 71 | Header.Style = hsPlates 72 | HintAnimation = hatNone 73 | HintMode = hmHint 74 | Images = SystemImages 75 | IncrementalSearch = isAll 76 | Indent = 20 77 | LineMode = lmBands 78 | ParentShowHint = False 79 | RootNodeCount = 10 80 | ScrollBarOptions.VerticalIncrement = 32 81 | ShowHint = True 82 | TabOrder = 0 83 | TreeOptions.AnimationOptions = [toAnimatedToggle] 84 | TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoScrollOnExpand, toAutoTristateTracking, toAutoDeleteMovedNodes] 85 | TreeOptions.PaintOptions = [toShowBackground, toShowButtons, toShowDropmark, toShowHorzGridLines, toShowRoot, toShowTreeLines, toShowVertGridLines, toThemeAware] 86 | TreeOptions.SelectionOptions = [toFullRowSelect] 87 | OnCompareNodes = VDT1CompareNodes 88 | OnDrawHint = VDT1DrawHint 89 | OnDrawNode = VDT1DrawNode 90 | OnFreeNode = VDT1FreeNode 91 | OnGetHintSize = VDT1GetHintSize 92 | OnGetImageIndex = VDT1GetImageIndex 93 | OnGetNodeWidth = VDT1GetNodeWidth 94 | OnHeaderClick = VDT1HeaderClick 95 | OnInitChildren = VDT1InitChildren 96 | OnInitNode = VDT1InitNode 97 | OnStateChange = VDT1StateChange 98 | Columns = < 99 | item 100 | BiDiMode = bdLeftToRight 101 | Options = [coAllowClick, coEnabled, coParentColor, coResizable, coShowDropMark, coVisible] 102 | Position = 0 103 | Width = 217 104 | WideText = 'Image file name' 105 | end 106 | item 107 | Position = 1 108 | Width = 200 109 | WideText = 'Thumbnail' 110 | end 111 | item 112 | Position = 2 113 | Width = 160 114 | WideText = 'Properties' 115 | end> 116 | end 117 | object TrackBar1: TTrackBar 118 | Left = 264 119 | Top = 379 120 | Width = 157 121 | Height = 21 122 | Anchors = [akLeft, akBottom] 123 | Max = 100 124 | Position = 50 125 | TabOrder = 1 126 | ThumbLength = 15 127 | TickStyle = tsNone 128 | OnChange = TrackBar1Change 129 | end 130 | object SystemImages: TImageList 131 | Left = 668 132 | Top = 404 133 | end 134 | end 135 | -------------------------------------------------------------------------------- /Demos/Advanced/ExtraRes.rc: -------------------------------------------------------------------------------- 1 | Arabic Unicode "Res\Arabic.uni" 2 | Hebrew Unicode "Res\Hebrew.uni" 3 | Greek Unicode "Res\Greek.uni" 4 | 5 | LoremIpsum Unicode "Res\Lorem ipsum.uni" 6 | 7 | Transcriptions Bitmap "Res\Transcriptions.bmp" 8 | 9 | -------------------------------------------------------------------------------- /Demos/Advanced/GeneralAbilitiesDemo.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/GeneralAbilitiesDemo.pas -------------------------------------------------------------------------------- /Demos/Advanced/HeaderCustomDrawDemo.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/HeaderCustomDrawDemo.pas -------------------------------------------------------------------------------- /Demos/Advanced/MultilineDemo.dfm: -------------------------------------------------------------------------------- 1 | object NodeForm: TNodeForm 2 | Left = 573 3 | Top = 332 4 | Caption = 'NodeForm' 5 | ClientHeight = 504 6 | ClientWidth = 757 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -13 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | DesignSize = ( 16 | 757 17 | 504) 18 | PixelsPerInch = 96 19 | TextHeight = 16 20 | object Label8: TLabel 21 | Left = 12 22 | Top = 393 23 | Width = 716 24 | Height = 72 25 | Anchors = [akLeft, akRight, akBottom] 26 | AutoSize = False 27 | Caption = 28 | 'Since Virtual Treeview uses Unicode for text display it is not e' + 29 | 'asy to provide multiline support on Windows 9x/Me systems. Under' + 30 | ' Windows NT (4.0, 2000, XP) there is support by the operation sy' + 31 | 'stem and so full word breaking is possible there. Otherwise you ' + 32 | 'have to insert line breaks manually to have multiline captions. ' + 33 | 'Of course there is no difference in handling between multiline a' + 34 | 'nd single line nodes (except for the vertical alignment of the l' + 35 | 'atter).' 36 | ShowAccelChar = False 37 | WordWrap = True 38 | end 39 | object Panel1: TPanel 40 | Left = 12 41 | Top = 4 42 | Width = 716 43 | Height = 357 44 | Anchors = [akLeft, akTop, akRight, akBottom] 45 | Color = clAppWorkSpace 46 | ParentBackground = False 47 | TabOrder = 0 48 | DesignSize = ( 49 | 716 50 | 357) 51 | object MLTree: TVirtualStringTree 52 | Left = 96 53 | Top = 8 54 | Width = 533 55 | Height = 337 56 | Anchors = [akLeft, akTop, akRight, akBottom] 57 | BorderStyle = bsNone 58 | ClipboardFormats.Strings = ( 59 | 'CSV' 60 | 'HTML Format' 61 | 'Plain text' 62 | 'Rich Text Format' 63 | 'Rich Text Format Without Objects' 64 | 'Unicode text' 65 | 'Virtual Tree Data') 66 | Colors.SelectionRectangleBlendColor = 10539203 67 | DefaultNodeHeight = 130 68 | DragMode = dmAutomatic 69 | Header.AutoSizeIndex = 0 70 | Header.Font.Charset = DEFAULT_CHARSET 71 | Header.Font.Color = clWindowText 72 | Header.Font.Height = -11 73 | Header.Font.Name = 'Tahoma' 74 | Header.Font.Style = [] 75 | Header.Options = [hoAutoResize, hoColumnResize, hoDrag] 76 | HintAnimation = hatNone 77 | HintMode = hmTooltip 78 | LineMode = lmBands 79 | NodeAlignment = naFromTop 80 | NodeDataSize = 4 81 | ParentShowHint = False 82 | RootNodeCount = 30 83 | SelectionCurveRadius = 10 84 | ShowHint = True 85 | TabOrder = 0 86 | TextMargin = 5 87 | TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoScrollOnExpand, toAutoSpanColumns, toAutoTristateTracking, toAutoDeleteMovedNodes] 88 | TreeOptions.MiscOptions = [toEditable, toInitOnSave, toReportMode, toToggleOnDblClick, toWheelPanning] 89 | TreeOptions.PaintOptions = [toHideFocusRect, toShowDropmark, toShowTreeLines, toThemeAware, toUseBlendedImages] 90 | TreeOptions.SelectionOptions = [toMultiSelect] 91 | OnEditing = MLTreeEditing 92 | OnGetText = MLTreeGetText 93 | OnPaintText = MLTreePaintText 94 | OnInitNode = MLTreeInitNode 95 | OnMeasureItem = MLTreeMeasureItem 96 | OnStateChange = MLTreeStateChange 97 | Columns = < 98 | item 99 | Position = 1 100 | Width = 466 101 | end 102 | item 103 | Position = 0 104 | end> 105 | end 106 | end 107 | object AutoAdjustCheckBox: TCheckBox 108 | Left = 12 109 | Top = 368 110 | Width = 329 111 | Height = 17 112 | Anchors = [akLeft, akBottom] 113 | Caption = 'Automatically adjust node height to node text.' 114 | TabOrder = 1 115 | OnClick = AutoAdjustCheckBoxClick 116 | end 117 | end 118 | -------------------------------------------------------------------------------- /Demos/Advanced/Res/Arabic.uni: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Arabic.uni -------------------------------------------------------------------------------- /Demos/Advanced/Res/Background.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Background.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Background2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Background2.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Book.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Book.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Chart.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Chart.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Chinese.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Chinese.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Clipboard.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Clipboard.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Cyrillic.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Cyrillic.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Earth.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Earth.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Exit.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Exit.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Eye.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Eye.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Fist.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Fist.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/ForeignStrings.rc: -------------------------------------------------------------------------------- 1 | Arabic Unicode "Arabic.uni" 2 | Hebrew Unicode "Hebrew.uni" 3 | Greek Unicode "Greek.uni" 4 | 5 | LoremIpsum Unicode "Lorem ipsum.uni" 6 | -------------------------------------------------------------------------------- /Demos/Advanced/Res/Greek.uni: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Greek.uni -------------------------------------------------------------------------------- /Demos/Advanced/Res/Header.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Header.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Hebrew.uni: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Hebrew.uni -------------------------------------------------------------------------------- /Demos/Advanced/Res/Image list 24x24.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Image list 24x24.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Image list 32x32.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Image list 32x32.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Lorem ipsum.uni: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Lorem ipsum.uni -------------------------------------------------------------------------------- /Demos/Advanced/Res/Multiline.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Multiline.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Omega.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Omega.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Paintbrush.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Paintbrush.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Sheets.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Sheets.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/Transcriptions.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/Transcriptions.bmp -------------------------------------------------------------------------------- /Demos/Advanced/Res/XP.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/Res/XP.bmp -------------------------------------------------------------------------------- /Demos/Advanced/mainicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Advanced/mainicon.ico -------------------------------------------------------------------------------- /Demos/CBuilderMinimal/CBMinimal.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #include 6 | //--------------------------------------------------------------------------- 7 | USEFORM("main.cpp", MainForm); 8 | //--------------------------------------------------------------------------- 9 | int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) 10 | { 11 | try 12 | { 13 | Application->Initialize(); 14 | Application->MainFormOnTaskBar = true; 15 | Application->CreateForm(__classid(TMainForm), &MainForm); 16 | Application->Run(); 17 | } 18 | catch (Exception &exception) 19 | { 20 | Application->ShowException(&exception); 21 | } 22 | catch (...) 23 | { 24 | try 25 | { 26 | throw Exception(""); 27 | } 28 | catch (Exception &exception) 29 | { 30 | Application->ShowException(&exception); 31 | } 32 | } 33 | return 0; 34 | } 35 | //--------------------------------------------------------------------------- 36 | -------------------------------------------------------------------------------- /Demos/CBuilderMinimal/CBMinimalPCH1.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | -------------------------------------------------------------------------------- /Demos/CBuilderMinimal/main.cpp: -------------------------------------------------------------------------------- 1 | // This project is recoded in C++ Builder in order to diagnose bugs related to 2 | // C++ Builder building and linking. 3 | // Demonstration project for TVirtualStringTree to generally show how to get started. 4 | 5 | //--------------------------------------------------------------------------- 6 | 7 | #include 8 | #pragma hdrstop 9 | 10 | #include "main.h" 11 | //--------------------------------------------------------------------------- 12 | #pragma package(smart_init) 13 | #pragma link "VirtualTrees" 14 | #pragma resource "*.dfm" 15 | TMainForm *MainForm; 16 | 17 | // This is a very simple record we use to store data in the nodes. 18 | // Since the application is responsible to manage all data including the node's caption 19 | // this record can be considered as minimal requirement in all VT applications. 20 | // Extend it to whatever your application needs. 21 | typedef struct tagTMyRec { 22 | UnicodeString Caption; 23 | } TMyRec, *PMyRec; 24 | 25 | 26 | //--------------------------------------------------------------------------- 27 | 28 | void __fastcall TMainForm::FormCreate(TObject *Sender) 29 | { 30 | // Let the tree know how much data space we need. 31 | VST->NodeDataSize = sizeof(TMyRec); 32 | 33 | // Set an initial number of nodes. 34 | VST->RootNodeCount = 20; 35 | } 36 | 37 | //--------------------------------------------------------------------------- 38 | 39 | void __fastcall TMainForm::ClearButtonClick(TObject *Sender) 40 | { 41 | 42 | Cardinal Start; 43 | Screen->Cursor = crHourGlass; 44 | 45 | try { 46 | Start = GetTickCount(); 47 | VST->Clear(); 48 | Label1->Caption = Format("Last operation duration: %d ms", ARRAYOFCONST((GetTickCount() - Start))); 49 | } 50 | __finally { 51 | Screen->Cursor = crDefault; 52 | } 53 | } 54 | 55 | //--------------------------------------------------------------------------- 56 | __fastcall TMainForm::TMainForm(TComponent* Owner) 57 | : TForm(Owner) 58 | { 59 | } 60 | //--------------------------------------------------------------------------- 61 | 62 | 63 | void __fastcall TMainForm::AddButtonClick(TObject *Sender) 64 | { 65 | 66 | Cardinal Count, Start; 67 | 68 | // Add some nodes to the treeview. 69 | Screen->Cursor = crHourGlass; 70 | try { 71 | Start = GetTickCount(); 72 | switch (((TButton *)Sender)->Tag) { 73 | case 0: // add to root 74 | Count = StrToInt(Edit1->Text); 75 | VST->RootNodeCount = VST->RootNodeCount + Count; 76 | break; 77 | case 1: // add as child 78 | if (VST->FocusedNode != NULL) { 79 | Count = StrToInt(Edit1->Text); 80 | VST->ChildCount[VST->FocusedNode] = VST->ChildCount[VST->FocusedNode] + Count; 81 | VST->Expanded[VST->FocusedNode] = True; 82 | VST->InvalidateToBottom(VST->FocusedNode); 83 | } 84 | break; 85 | } 86 | Label1->Caption = Format("Last operation duration: %d ms", ARRAYOFCONST((GetTickCount() - Start))); 87 | } 88 | __finally { 89 | Screen->Cursor = crDefault; 90 | } 91 | 92 | } 93 | 94 | //--------------------------------------------------------------------------- 95 | 96 | void __fastcall TMainForm::VSTGetText(TBaseVirtualTree *Sender, PVirtualNode Node, 97 | TColumnIndex Column, TVSTTextType TextType, UnicodeString &Text) 98 | 99 | { 100 | PMyRec Data; 101 | Data = (PMyRec) Sender->GetNodeData(Node); 102 | if (Data != NULL) 103 | Text = Data->Caption; 104 | } 105 | 106 | //--------------------------------------------------------------------------- 107 | 108 | void __fastcall TMainForm::VSTFreeNode(TBaseVirtualTree *Sender, PVirtualNode Node) 109 | 110 | { 111 | PMyRec Data; 112 | Data = (PMyRec) Sender->GetNodeData(Node); 113 | 114 | // If your Data contains fields, they must be freed as necessary. 115 | // If the Data contains strings, they must be set to empty strings. 116 | // In Delphi, we took help of Finalize(Data^) to do that in one call. 117 | // But there is no such thing in C++ Builder. However there is a trick 118 | // as shown below. 119 | Data->~tagTMyRec(); //equivalent of Finalize in C++ Builder 120 | } 121 | 122 | //--------------------------------------------------------------------------- 123 | 124 | void __fastcall TMainForm::VSTInitNode(TBaseVirtualTree *Sender, PVirtualNode ParentNode, 125 | PVirtualNode Node, TVirtualNodeInitStates &InitialStates) 126 | 127 | { 128 | PMyRec Data; 129 | Data = (PMyRec) Sender->GetNodeData(Node); 130 | // Construct a node caption. This event is triggered once for each node but 131 | // appears asynchronously, which means when the node is displayed not when it is added. 132 | Data->Caption = Format("Level %d, Index %d", ARRAYOFCONST((VST->GetNodeLevel(Node), Node->Index))); 133 | } 134 | 135 | //--------------------------------------------------------------------------- 136 | 137 | void __fastcall TMainForm::CloseButtonClick(TObject *Sender) 138 | { 139 | Close(); 140 | } 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /Demos/CBuilderMinimal/main.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 732 3 | Top = 219 4 | BiDiMode = bdLeftToRight 5 | Caption = 'Simple Virtual Treeview demo' 6 | ClientHeight = 443 7 | ClientWidth = 409 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | ParentBiDiMode = False 16 | Position = poDesigned 17 | OnCreate = FormCreate 18 | DesignSize = ( 19 | 409 20 | 443) 21 | PixelsPerInch = 96 22 | TextHeight = 13 23 | object Label1: TLabel 24 | Left = 10 25 | Top = 280 26 | Width = 116 27 | Height = 13 28 | Caption = 'Last operation duration:' 29 | end 30 | object VST: TVirtualStringTree 31 | AlignWithMargins = True 32 | Left = 8 33 | Top = 8 34 | Width = 393 35 | Height = 262 36 | Margins.Left = 8 37 | Margins.Top = 8 38 | Margins.Right = 8 39 | Margins.Bottom = 8 40 | Align = alTop 41 | BiDiMode = bdLeftToRight 42 | Colors.BorderColor = clWindowText 43 | Colors.HotColor = clBlack 44 | DragMode = dmAutomatic 45 | DragType = dtVCL 46 | Header.AutoSizeIndex = -1 47 | Header.Font.Charset = DEFAULT_CHARSET 48 | Header.Font.Color = clWindowText 49 | Header.Font.Height = -11 50 | Header.Font.Name = 'Tahoma' 51 | Header.Font.Style = [] 52 | Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible] 53 | HintAnimation = hatNone 54 | IncrementalSearch = isAll 55 | ParentBiDiMode = False 56 | TabOrder = 0 57 | TreeOptions.AnimationOptions = [toAnimatedToggle] 58 | TreeOptions.MiscOptions = [toEditable, toInitOnSave, toToggleOnDblClick, toWheelPanning] 59 | TreeOptions.PaintOptions = [toShowButtons, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages] 60 | TreeOptions.SelectionOptions = [toMultiSelect] 61 | OnFreeNode = VSTFreeNode 62 | OnGetText = VSTGetText 63 | OnInitNode = VSTInitNode 64 | Columns = < 65 | item 66 | Position = 0 67 | Width = 300 68 | WideText = 'Name' 69 | end> 70 | end 71 | object ClearButton: TButton 72 | Left = 97 73 | Top = 410 74 | Width = 129 75 | Height = 25 76 | Anchors = [akLeft, akBottom] 77 | Caption = 'Clear tree' 78 | TabOrder = 1 79 | OnClick = ClearButtonClick 80 | end 81 | object AddOneButton: TButton 82 | Left = 96 83 | Top = 350 84 | Width = 130 85 | Height = 25 86 | Anchors = [akLeft, akBottom] 87 | Caption = 'Add node(s) to root' 88 | TabOrder = 2 89 | OnClick = AddButtonClick 90 | end 91 | object Edit1: TEdit 92 | Left = 8 93 | Top = 366 94 | Width = 81 95 | Height = 21 96 | Anchors = [akLeft, akBottom] 97 | TabOrder = 3 98 | Text = '1' 99 | end 100 | object Button1: TButton 101 | Tag = 1 102 | Left = 96 103 | Top = 378 104 | Width = 130 105 | Height = 25 106 | Anchors = [akLeft, akBottom] 107 | Caption = 'Add node(s) as children' 108 | TabOrder = 4 109 | OnClick = AddButtonClick 110 | end 111 | object CloseButton: TButton 112 | Left = 330 113 | Top = 410 114 | Width = 75 115 | Height = 25 116 | Anchors = [akRight, akBottom] 117 | Caption = 'Close' 118 | TabOrder = 5 119 | OnClick = CloseButtonClick 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /Demos/CBuilderMinimal/main.h: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #ifndef mainH 4 | #define mainH 5 | //--------------------------------------------------------------------------- 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "VirtualTrees.hpp" 11 | //--------------------------------------------------------------------------- 12 | class TMainForm : public TForm 13 | { 14 | __published: // IDE-managed Components 15 | TVirtualStringTree *VST; 16 | TButton *ClearButton; 17 | TButton *CloseButton; 18 | TButton *Button1; 19 | TButton *AddOneButton; 20 | TEdit *Edit1; 21 | TLabel *Label1; 22 | void __fastcall AddButtonClick(TObject *Sender); 23 | void __fastcall ClearButtonClick(TObject *Sender); 24 | void __fastcall CloseButtonClick(TObject *Sender); 25 | void __fastcall VSTFreeNode(TBaseVirtualTree *Sender, PVirtualNode Node); 26 | void __fastcall VSTInitNode(TBaseVirtualTree *Sender, PVirtualNode ParentNode, PVirtualNode Node, 27 | TVirtualNodeInitStates &InitialStates); 28 | void __fastcall FormCreate(TObject *Sender); 29 | void __fastcall VSTGetText(TBaseVirtualTree *Sender, PVirtualNode Node, TColumnIndex Column, 30 | TVSTTextType TextType, UnicodeString &Text); 31 | 32 | private: // User declarations 33 | public: // User declarations 34 | __fastcall TMainForm(TComponent* Owner); 35 | }; 36 | //--------------------------------------------------------------------------- 37 | extern PACKAGE TMainForm *MainForm; 38 | //--------------------------------------------------------------------------- 39 | #endif 40 | -------------------------------------------------------------------------------- /Demos/FMX/Minimal/Main.fmx: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'Simple Virtual Treeview demo' 5 | ClientHeight = 443 6 | ClientWidth = 409 7 | FormFactor.Width = 320 8 | FormFactor.Height = 480 9 | FormFactor.Devices = [Desktop] 10 | OnCreate = FormCreate 11 | DesignerMasterStyle = 0 12 | object AddOneButton: TButton 13 | Anchors = [akLeft, akBottom] 14 | Position.X = 128.000000000000000000 15 | Position.Y = 352.000000000000000000 16 | Size.Width = 130.000000000000000000 17 | Size.Height = 25.000000000000000000 18 | Size.PlatformDefault = False 19 | TabOrder = 2 20 | Text = 'Add node(s) to root' 21 | OnClick = AddOneButtonClick 22 | Left = 96 23 | Top = 350 24 | end 25 | object Button1: TButton 26 | Tag = 1 27 | Anchors = [akLeft, akBottom] 28 | Position.X = 128.000000000000000000 29 | Position.Y = 384.000000000000000000 30 | Size.Width = 130.000000000000000000 31 | Size.Height = 25.000000000000000000 32 | Size.PlatformDefault = False 33 | TabOrder = 5 34 | Text = 'Add node(s) as children' 35 | OnClick = AddOneButtonClick 36 | Left = 96 37 | Top = 378 38 | end 39 | object ClearButton: TButton 40 | Anchors = [akLeft, akBottom] 41 | Position.X = 128.000000000000000000 42 | Position.Y = 416.000000000000000000 43 | Size.Width = 129.000000000000000000 44 | Size.Height = 25.000000000000000000 45 | Size.PlatformDefault = False 46 | TabOrder = 0 47 | Text = 'Clear tree' 48 | OnClick = ClearButtonClick 49 | Left = 97 50 | Top = 410 51 | end 52 | object CloseButton: TButton 53 | Anchors = [akRight, akBottom] 54 | Position.X = 328.000000000000000000 55 | Position.Y = 416.000000000000000000 56 | Size.Width = 75.000000000000000000 57 | Size.Height = 25.000000000000000000 58 | Size.PlatformDefault = False 59 | TabOrder = 4 60 | Text = 'Close' 61 | OnClick = CloseButtonClick 62 | Left = 330 63 | Top = 410 64 | end 65 | object Edit1: TEdit 66 | Touch.InteractiveGestures = [LongTap, DoubleTap] 67 | Anchors = [akLeft, akBottom] 68 | TabOrder = 1 69 | Text = '3' 70 | Position.X = 24.000000000000000000 71 | Position.Y = 352.000000000000000000 72 | Size.Width = 81.000000000000000000 73 | Size.Height = 21.000000000000000000 74 | Size.PlatformDefault = False 75 | Left = 8 76 | Top = 366 77 | end 78 | object Label1: TLabel 79 | Position.X = 8.000000000000000000 80 | Position.Y = 320.000000000000000000 81 | Size.Width = 116.000000000000000000 82 | Size.Height = 13.000000000000000000 83 | Size.PlatformDefault = False 84 | Text = 'Last operation duration:' 85 | TabOrder = 6 86 | Left = 10 87 | Top = 280 88 | end 89 | end 90 | -------------------------------------------------------------------------------- /Demos/FMX/Minimal/Minimal.dpr: -------------------------------------------------------------------------------- 1 | program Minimal; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | Main in 'Main.pas' {MainForm}, 7 | VirtualTrees in '..\..\..\..\Source\VirtualTrees.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TMainForm, MainForm); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Demos/Interfaces/charityevents.dpr: -------------------------------------------------------------------------------- 1 | program charityevents; 2 | 3 | uses 4 | Vcl.Forms, 5 | modelviewform in 'modelviewform.pas' {FormModelView}, 6 | myeventdata in 'myeventdata.pas', 7 | myevents in 'myevents.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | ReportMemoryLeaksOnShutdown := True; 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TFormModelView, FormModelView); 16 | Application.Run; 17 | end. 18 | -------------------------------------------------------------------------------- /Demos/Interfaces/modelviewform.pas: -------------------------------------------------------------------------------- 1 | unit modelviewform; 2 | 3 | { Demo showing the use of Interfaces for: 4 | -- Data of each node 5 | -- A presenter object that sets up and encapsulates the Virtual Tree View logic 6 | 7 | Application overview: 8 | -- Displays a list of charity events (randomly generated). 9 | -- Each row displays a date, event name and the amount collected. 10 | -- Any event collecting more than 300,000 is marked as a Star event, 11 | shown in the first column. 12 | -- Click on the buttons to show All or Only Starred events. 13 | -- Click on column headers to sort on that column. 14 | 15 | Advantage of using Interface for node data object: 16 | -- One big advantage of interfaces is that you don't have to worry about 17 | the freeing of objects (automatic garbage collection), especially 18 | of the node data objects. See unit myevents.pas that creates those 19 | node objects. 20 | -- Another advantage is the better extensibility provided by interfaces 21 | (recall COM objects). 22 | 23 | Uses a presenter Interface object IEventPresenter (unit myevents) that: 24 | -- deals with the creation of Node Data objects IMyEventData (unit myeventdata) 25 | -- sets up the proper tree options 26 | -- handles Virtual Tree events inside it including the call backs for sorting 27 | 28 | This demo serves as an example of Model-View-Presenter where the Presenter 29 | object is also an interface that can be reused by any form to show the 30 | same Tree View. 31 | Note: Such a Presenter can also be made by making a derived component 32 | based on Virtual Tree View. This is just an alternate example of reuse 33 | by making the Presenter an interface that is a sort of code-first 34 | approach. 35 | 36 | Advantage of a Presenter object: 37 | -- Simplifies the code of the application form where the form 38 | does not need to handle events. The form simply sets up the 39 | presenter object IEventPresenter that encapsulates the showing of 40 | the view (Tree View). 41 | -- Application also does not have to deal with tree options needed 42 | as they are handled by the presenter. For example, we deliberately 43 | set a larger font for this form. The presenter takes care to 44 | use the same font for the header otherwise it will look odd. 45 | -- Custom application methods can be implemented in the presenter 46 | that change the behavior of the view in a model-view paradigm. 47 | For example, see the use of method displayOnlyStarEvents. 48 | -- The presenter object IEventPresenter can be reused easily in another 49 | form that needs to show the same kind of Tree View. This is 50 | an alternative way of reuse as compared to making a derived 51 | Virtual Tree View component. 52 | 53 | Written by Joachim Marder, Sanjay Kanade 54 | 55 | } 56 | 57 | interface 58 | 59 | uses 60 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 61 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees, Vcl.StdCtrls, Vcl.ImgList, myevents; 62 | 63 | type 64 | TFormModelView = class(TForm) 65 | ImageList1: TImageList; 66 | btDisplayStars: TButton; 67 | btDisplayAll: TButton; 68 | VST: TVirtualStringTree; 69 | Label1: TLabel; 70 | procedure FormCreate(Sender: TObject); 71 | procedure btDisplayStarsClick(Sender: TObject); 72 | procedure btDisplayAllClick(Sender: TObject); 73 | private 74 | myEvents: IEventPresenter; 75 | public 76 | { Public declarations } 77 | end; 78 | 79 | var 80 | FormModelView: TFormModelView; 81 | 82 | implementation 83 | 84 | {$R *.dfm} 85 | 86 | uses System.DateUtils; 87 | 88 | //---------------------------------------------------------------------------------------------------------------------- 89 | procedure TFormModelView.FormCreate(Sender: TObject); 90 | begin 91 | //set up the presenter object 92 | myEvents := TEventPresenter.Create(VST, imageList1); 93 | end; 94 | 95 | //---------------------------------------------------------------------------------------------------------------------- 96 | procedure TFormModelView.btDisplayStarsClick(Sender: TObject); 97 | begin 98 | //display only star charity events that collected more than 99 | //a minimum amount 100 | myEvents.displayOnlyStarEvents(True); 101 | end; 102 | 103 | //---------------------------------------------------------------------------------------------------------------------- 104 | procedure TFormModelView.btDisplayAllClick(Sender: TObject); 105 | begin 106 | //display all charity events 107 | myEvents.displayOnlyStarEvents(False); 108 | end; 109 | 110 | 111 | end. 112 | -------------------------------------------------------------------------------- /Demos/Interfaces/myeventdata.pas: -------------------------------------------------------------------------------- 1 | unit myeventdata; 2 | 3 | { 4 | IMyEventData: 5 | The data object for each event. For this particular demo, it also 6 | includes the method to generate a random event for creating test data. 7 | 8 | Written by Joachim Marder, Sanjay Kanade 9 | } 10 | interface 11 | 12 | type 13 | IMyEventData = interface 14 | ['{0CDF0FE6-6B98-4541-B644-729513B41044}'] 15 | procedure SetDate(adate: TDateTime); stdcall; 16 | procedure SetName(aName: string); stdcall; 17 | procedure SetAmount(anAmount: currency); stdcall; 18 | function GetDate: TDateTime; stdcall; 19 | function GetName: string; stdcall; 20 | function GetAmount: currency; stdcall; 21 | 22 | //Generates a fictitious event for the demo 23 | procedure initializeRandom; stdcall; 24 | 25 | //properties for raw data 26 | //date of event 27 | property date: TDateTime read GetDate write SetDate; 28 | //name of event 29 | property name: string read GetName write SetName; 30 | //amount collected in the event 31 | property amount: currency read GetAmount write SetAmount; 32 | 33 | function isStarEvent: boolean; stdcall; 34 | end; 35 | 36 | TMyEventData = class(TInterfacedObject, IMyEventData) 37 | private 38 | fdate: TDateTime; 39 | fname: string; 40 | famount: currency; 41 | protected 42 | procedure SetDate(adate: TDateTime); stdcall; 43 | procedure SetName(aName: string); stdcall; 44 | procedure SetAmount(anAmount: currency); stdcall; 45 | function GetDate: TDateTime; stdcall; 46 | function GetName: string; stdcall; 47 | function GetAmount: currency; stdcall; 48 | 49 | public 50 | constructor Create; virtual; 51 | destructor Destroy; override; 52 | 53 | procedure initializeRandom; virtual; stdcall; 54 | 55 | property date: TDateTime read GetDate write SetDate; 56 | property name: string read GetName write SetName; 57 | property amount: currency read GetAmount write SetAmount; 58 | 59 | function isStarEvent: boolean; virtual; stdcall; 60 | end; 61 | 62 | implementation 63 | 64 | uses System.DateUtils, System.SysUtils; 65 | 66 | //---------------------------------------------------------------------------------------------------------------------- 67 | constructor TMyEventData.Create; 68 | begin 69 | inherited; 70 | //initialize 71 | famount := -1; 72 | end; 73 | 74 | //---------------------------------------------------------------------------------------------------------------------- 75 | destructor TMyEventData.Destroy; 76 | begin 77 | //do cleanup 78 | //To test whether auto cleanup is done 79 | //showmessage('Cleaning up '+fname); 80 | inherited; 81 | end; 82 | 83 | //---------------------------------------------------------------------------------------------------------------------- 84 | procedure TMyEventData.SetDate(adate: TDateTime); stdcall; 85 | begin 86 | fdate := adate; 87 | end; 88 | 89 | //---------------------------------------------------------------------------------------------------------------------- 90 | function TMyEventData.GetDate: TDateTime; stdcall; 91 | begin 92 | result := fdate; 93 | end; 94 | 95 | //---------------------------------------------------------------------------------------------------------------------- 96 | procedure TMyEventData.SetName(aName: string); stdcall; 97 | begin 98 | fname := aName; 99 | end; 100 | 101 | //---------------------------------------------------------------------------------------------------------------------- 102 | function TMyEventData.GetName: string; stdcall; 103 | begin 104 | result := fname; 105 | end; 106 | 107 | //---------------------------------------------------------------------------------------------------------------------- 108 | procedure TMyEventData.SetAmount(anAmount: currency); stdcall; 109 | begin 110 | famount := anAmount; 111 | end; 112 | 113 | //---------------------------------------------------------------------------------------------------------------------- 114 | function TMyEventData.GetAmount: currency; stdcall; 115 | begin 116 | result := famount; 117 | end; 118 | 119 | //---------------------------------------------------------------------------------------------------------------------- 120 | function getRandomDate: TDateTime; 121 | begin 122 | result := Today; 123 | result := IncDay(result, -random(365)); 124 | end; 125 | 126 | //---------------------------------------------------------------------------------------------------------------------- 127 | procedure TMyEventData.initializeRandom; 128 | begin 129 | fdate := getRandomDate; 130 | fname := Format('Charity event %d', [random(9999)+1]); 131 | famount := random(500000); 132 | while famount < 50000 do 133 | famount := random(500000); 134 | end; 135 | 136 | //---------------------------------------------------------------------------------------------------------------------- 137 | //An event is a star event if it collected an amount > 300,000. 138 | function TMyEventData.isStarEvent: boolean; 139 | begin 140 | result := famount > 300000; 141 | end; 142 | 143 | end. 144 | -------------------------------------------------------------------------------- /Demos/Minimal/Main.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 717 3 | Top = 268 4 | BiDiMode = bdLeftToRight 5 | Caption = 'Simple Virtual Treeview demo' 6 | ClientHeight = 443 7 | ClientWidth = 409 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | OldCreateOrder = False 15 | ParentBiDiMode = False 16 | OnCreate = FormCreate 17 | DesignSize = ( 18 | 409 19 | 443) 20 | PixelsPerInch = 96 21 | TextHeight = 13 22 | object Label1: TLabel 23 | Left = 10 24 | Top = 280 25 | Width = 116 26 | Height = 13 27 | Caption = 'Last operation duration:' 28 | end 29 | object VST: TVirtualStringTree 30 | AlignWithMargins = True 31 | Left = 8 32 | Top = 8 33 | Width = 393 34 | Height = 262 35 | Margins.Left = 8 36 | Margins.Top = 8 37 | Margins.Right = 8 38 | Margins.Bottom = 8 39 | Align = alTop 40 | BiDiMode = bdLeftToRight 41 | Colors.BorderColor = clWindowText 42 | Colors.HotColor = clBlack 43 | DragMode = dmAutomatic 44 | DragType = dtVCL 45 | Header.AutoSizeIndex = -1 46 | Header.Font.Charset = DEFAULT_CHARSET 47 | Header.Font.Color = clWindowText 48 | Header.Font.Height = -11 49 | Header.Font.Name = 'Tahoma' 50 | Header.Font.Style = [] 51 | Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible] 52 | HintAnimation = hatNone 53 | IncrementalSearch = isAll 54 | ParentBiDiMode = False 55 | TabOrder = 0 56 | TreeOptions.AnimationOptions = [toAnimatedToggle] 57 | TreeOptions.MiscOptions = [toEditable, toInitOnSave, toToggleOnDblClick, toWheelPanning] 58 | TreeOptions.PaintOptions = [toShowButtons, toShowRoot, toShowTreeLines, toThemeAware, toUseBlendedImages] 59 | TreeOptions.SelectionOptions = [toMultiSelect] 60 | OnFreeNode = VSTFreeNode 61 | OnGetText = VSTGetText 62 | OnInitNode = VSTInitNode 63 | Columns = < 64 | item 65 | Position = 0 66 | Width = 300 67 | WideText = 'Name' 68 | end> 69 | end 70 | object ClearButton: TButton 71 | Left = 97 72 | Top = 410 73 | Width = 129 74 | Height = 25 75 | Anchors = [akLeft, akBottom] 76 | Caption = 'Clear tree' 77 | TabOrder = 1 78 | OnClick = ClearButtonClick 79 | end 80 | object AddOneButton: TButton 81 | Left = 96 82 | Top = 350 83 | Width = 130 84 | Height = 25 85 | Anchors = [akLeft, akBottom] 86 | Caption = 'Add node(s) to root' 87 | TabOrder = 2 88 | OnClick = AddButtonClick 89 | end 90 | object Edit1: TEdit 91 | Left = 8 92 | Top = 366 93 | Width = 81 94 | Height = 21 95 | Anchors = [akLeft, akBottom] 96 | TabOrder = 3 97 | Text = '3' 98 | end 99 | object Button1: TButton 100 | Tag = 1 101 | Left = 96 102 | Top = 378 103 | Width = 130 104 | Height = 25 105 | Anchors = [akLeft, akBottom] 106 | Caption = 'Add node(s) as children' 107 | TabOrder = 4 108 | OnClick = AddButtonClick 109 | end 110 | object CloseButton: TButton 111 | Left = 330 112 | Top = 410 113 | Width = 75 114 | Height = 25 115 | Anchors = [akRight, akBottom] 116 | Caption = 'Close' 117 | TabOrder = 5 118 | OnClick = CloseButtonClick 119 | end 120 | end 121 | -------------------------------------------------------------------------------- /Demos/Minimal/Minimal.dpr: -------------------------------------------------------------------------------- 1 | program Minimal; 2 | 3 | uses 4 | Forms, 5 | Main in 'Main.pas' {MainForm}; 6 | 7 | {$R *.RES} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TMainForm, MainForm); 12 | Application.Run; 13 | end. 14 | 15 | -------------------------------------------------------------------------------- /Demos/OLE/OLE.dpr: -------------------------------------------------------------------------------- 1 | program OLE; 2 | 3 | uses 4 | Forms, 5 | Main in 'Main.pas' {MainForm}; 6 | 7 | {$R *.RES} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.Title := 'OLE Drag''n drop and cut''n paste demo'; 12 | Application.CreateForm(TMainForm, MainForm); 13 | Application.Run; 14 | end. 15 | -------------------------------------------------------------------------------- /Demos/OLE/Res/Extra.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/OLE/Res/Extra.res -------------------------------------------------------------------------------- /Demos/OLE/Res/Text.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}{\f2\froman\fprq2\fcharset128 MS PMincho;}{\f3\froman\fprq2\fcharset0 MS PMincho;}{\f4\fswiss\fprq2\fcharset178 Arial;}} 2 | {\colortbl ;\red0\green0\blue255;\red255\green0\blue0;} 3 | {\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}{\s3 heading 3;}{\s4 heading 4;}} 4 | \viewkind4\uc1\pard\ltrpar\s1\sb100\sa100\lang2057\kerning36\b\f0\fs24 Execution\lang1024 \fs20 \lang2057\fs48\par 5 | \pard\ltrpar\lang1031\kerning0\b0\f1\fs20{\pict\wmetafile8\picw1764\pich882\picwgoal8160\pichgoal15 6 | 010009000003310000000000070000000000050000000b0200000000050000000c02f401e80307 7 | 0000001b04f401e8030000000005000000140200000000050000001302f401e803050000001402 8 | f40100000500000013020000e803030000000000 9 | }\f0\fs24\par 10 | \cf1\lang2057\b\i\fs15 Send feedback\cf0\b0 to MSDN.\i0\fs24 \cf1\b\i\fs15 Look here\cf0\b0\par 11 | \pard\ltrpar\sa240\i0\fs24\line\cf2\i\fs15 This is preliminary documentation and subject to change.\cf0\i0\fs24 \line\cf1\b\i\fs15 Send feedback\b0 \cf0 on this topic.\i0\fs24 \par 12 | \pard\ltrpar\fs20 The common language runtime provides the infrastructure that enables managed\line execution to take place as well as a variety of services that can be used during \line execution. Before a method can be executed, it must be compiled to processor-specific \line code. Each method for which Microsoft intermediate language (MSIL) has been \line generated is JIT-compiled when it is called for the first time, then executed. The next \line time the method is executed, the existing JIT-compiled native code is executed. \line The process of JIT compiling and then executing the code is repeated until execution \line is complete. During execution, managed code receives services such as automatic \line memory management, security, interoperability with unmanaged code, cross-language \line debugging support, and enhanced deployment and versioning support.\fs24\par 13 | \pard\ltrpar\s4\sb100\sa100\b See Also\par 14 | \pard\ltrpar\cf1\b0\fs20 Managed Execution Process\cf0 | \cf1 Securing Your Application\cf0 \cf1 | Interoperating with \line Unmanaged Code\cf0 | \cf1 Deploying .NET Framework Applications\cf0\fs24\par 15 | \par 16 | \par 17 | \fs20 Excerpt from the book "Analects":\par 18 | \fs24\par 19 | \lang1031\f2\'81\'77\lang2057\'82\'50\lang1031\'81\'78\'8e\'71\'9e\'48\lang2057\'81\'46\lang1031\'81\'75\'9b\'7b\'8e\'a7\'8e\'9e\'8f\'4b\'94\'56\lang2057\'81\'43\lang1031\'95\'73\'96\'92\u35498?\'8c\'c1\lang2057\'81\'48\lang1031\'97\'4c\'95\'fc\'8e\'a9\'89\'93\'95\'fb\'98\'d2\lang2057\'81\'43\lang1031\'95\'73\'96\'92\'9e\'d9\'8c\'c1\lang2057\'81\'48\lang1031\'90\'6c\'95\'73\'92\'6d\'8e\'a7\'95\'73\'9c\'b0\lang2057\'81\'43\lang1031\'95\'73\'96\'92\'8c\'4e\'8e\'71\'8c\'c1\lang2057\'81\'48\lang1031\'81\'76\lang2057\f3\u8233?\u8233?\f2\par 20 | \lang1031\'81\'77\lang2057\'82\'51\lang1031\'81\'78\'97\'4c\'8e\'71\'9e\'48\lang2057\'81\'46\lang1031\'81\'75\'91\'b4\'88\'d7\'90\'6c\'96\'e7\'8d\'46\'92\'ed\lang2057\'81\'43\lang1031\'8e\'a7\'8d\'44\'94\'c6\'8f\'e3\'8e\'d2\lang2057\'81\'43\lang1031\'91\'4e\'e1\'e1\lang2057\'81\'47\lang1031\'95\'73\'8d\'44\'94\'c6\'8f\'e3\lang2057\'81\'43\lang1031\'8e\'a7\'8d\'44\'8d\'ec\'98\'aa\'8e\'d2\lang2057\'81\'43\lang1031\'96\'a2\'94\'56\'97\'4c\'96\'e7\'81\'42\'8c\'4e\'8e\'71\'96\'b1\'96\'7b\'81\'43\'96\'7b\'97\'a7\'8e\'a7\'93\'b9\'90\'b6\'81\'42\'8d\'46\'92\'ed\'96\'e7\'8e\'d2\'81\'43\'91\'b4\'88\'d7\'90\'6d\'94\'56\'96\'7b\'e4\'6f\'81\'49\'81\'76\f3\u8233?\u8233?\f2\par 21 | \'81\'77\'82\'52\'81\'78\'8e\'71\'9e\'48\'81\'46\'81\'75\'8d\'49\'8c\'be\'97\'df\'90\'46\'81\'43\'91\'4e\'e1\'e1\'90\'6d\'81\'49\'81\'76\f3\u8233?\u8233?\f0\fs20\par 22 | \par 23 | Arabic text "Wisdom is simple, but hard to find.":\par 24 | \f4\rtlch\fs32\'c7\'e1\'cd\'df\'e3\'c9 \'c8\'d3\'ed\'d8\'c9 \'e6 \'d3\'e5\'e1\'c9\'a1\'c7\'e1\'d5\'da\'c8 \'e5\'e6 \'c7\'ed\'cc\'c7\'cf\'e5\'c7\f0\ltrch\fs20\par 25 | } 26 | -------------------------------------------------------------------------------- /Demos/Objects/MVCDemo.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Objects/MVCDemo.dpr -------------------------------------------------------------------------------- /Demos/Objects/MVCDemoMain.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Objects/MVCDemoMain.pas -------------------------------------------------------------------------------- /Demos/Objects/MVCPanel.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Objects/MVCPanel.pas -------------------------------------------------------------------------------- /Demos/Objects/MVCTypes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Demos/Objects/MVCTypes.pas -------------------------------------------------------------------------------- /Demos/VirtualTreeview.bdsgroup: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ..\..\Library\VirtualTreeview\Packages\BDS 2006\VirtualTreesR.bdsproj 13 | ..\..\Library\VirtualTreeview\Packages\BDS 2006\VirtualTreesD.bdsproj 14 | Advanced\Advanced.bdsproj 15 | VirtualTreesR.bpl VirtualTreesD.bpl Advanced.exe 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Demos/VirtualTreeview.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = VirtualTreesD7.bpl VirtualTreesD7D.bpl Minimal.exe MVCDemo.exe OLE.exe Advanced.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | Advanced.exe: Advanced\Advanced.dpr 18 | $(DCC) 19 | 20 | Minimal.exe: Minimal\Minimal.dpr 21 | $(DCC) 22 | 23 | MVCDemo.exe: Objects\MVCDemo.dpr 24 | $(DCC) 25 | 26 | VirtualTreesD7.bpl: ..\..\Library\VirtualTreeview\Delphi\VirtualTreesD7.dpk 27 | $(DCC) 28 | 29 | VirtualTreesD7D.bpl: ..\..\Library\VirtualTreeview\Delphi\VirtualTreesD7D.dpk 30 | $(DCC) 31 | 32 | OLE.exe: OLE\OLE.dpr 33 | $(DCC) 34 | 35 | 36 | -------------------------------------------------------------------------------- /Design/VirtualTrees.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Design/VirtualTrees.dcr -------------------------------------------------------------------------------- /Help/Source/Images/Background.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Background.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Background.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Big folder.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Big folder.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Big folder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Big folder.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Blue star.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Blue star.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Blue star.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Blue star.jpg -------------------------------------------------------------------------------- /Help/Source/Images/ButtonFillModes.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/ButtonFillModes.bmp -------------------------------------------------------------------------------- /Help/Source/Images/ButtonFillModes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/ButtonFillModes.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Check images overview.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Check images overview.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Check images overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Check images overview.jpg -------------------------------------------------------------------------------- /Help/Source/Images/CheckDark.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/CheckDark.bmp -------------------------------------------------------------------------------- /Help/Source/Images/CheckDark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/CheckDark.jpg -------------------------------------------------------------------------------- /Help/Source/Images/CheckLight.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/CheckLight.bmp -------------------------------------------------------------------------------- /Help/Source/Images/CheckLight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/CheckLight.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Checker150.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Checker150.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Checker150.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Checker150.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Class 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Class 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Class 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Class 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Clock.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Clock.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Clock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Clock.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Constant 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Constant 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Constant 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Constant 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Document.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Document.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Document.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Document.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Event 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Event 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Event 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Event 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Field 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Field 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Field 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Field 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Folder.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Folder.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Folder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Folder.jpg -------------------------------------------------------------------------------- /Help/Source/Images/GenericXP.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/GenericXP.bmp -------------------------------------------------------------------------------- /Help/Source/Images/GenericXP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/GenericXP.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Help+Support.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Help+Support.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Help+Support.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Help+Support.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Hierarchy.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Hierarchy.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Hierarchy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Hierarchy.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Hot.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Hot.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Hot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Hot.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Info.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Info.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Info.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Info.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Library.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Library.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Library.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Library.jpg -------------------------------------------------------------------------------- /Help/Source/Images/License.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/License.bmp -------------------------------------------------------------------------------- /Help/Source/Images/License.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/License.jpg -------------------------------------------------------------------------------- /Help/Source/Images/LineModes.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/LineModes.bmp -------------------------------------------------------------------------------- /Help/Source/Images/LineModes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/LineModes.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Link new.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Link new.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Link new.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Link new.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Mail.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Mail.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Mail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Mail.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Method 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Method 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Method 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Method 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Overview.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Overview.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Overview.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Property 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Property 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Property 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Property 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Read only 3.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Read only 3.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Read only 3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Read only 3.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Selection mode.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Selection mode.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Selection mode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Selection mode.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Snow earth.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Snow earth.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Snow earth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Snow earth.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Source code.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Source code.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Source code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Source code.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Space100.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Space100.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Space100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Space100.jpg -------------------------------------------------------------------------------- /Help/Source/Images/StripeDark.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/StripeDark.bmp -------------------------------------------------------------------------------- /Help/Source/Images/StripeDark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/StripeDark.jpg -------------------------------------------------------------------------------- /Help/Source/Images/StripeLight.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/StripeLight.bmp -------------------------------------------------------------------------------- /Help/Source/Images/StripeLight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/StripeLight.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Struct 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Struct 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Struct 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Struct 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/TickDark.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TickDark.bmp -------------------------------------------------------------------------------- /Help/Source/Images/TickDark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TickDark.jpg -------------------------------------------------------------------------------- /Help/Source/Images/TickLight.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TickLight.bmp -------------------------------------------------------------------------------- /Help/Source/Images/TickLight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TickLight.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Titel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Titel.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Topaz.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Topaz.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Topaz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Topaz.jpg -------------------------------------------------------------------------------- /Help/Source/Images/TreeWindow.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TreeWindow.bmp -------------------------------------------------------------------------------- /Help/Source/Images/TreeWindow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/TreeWindow.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Type 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Type 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Type 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Type 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/Variable 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Variable 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/Variable 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/Variable 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/abstract 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/abstract 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/abstract 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/abstract 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/private 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/private 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/private 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/private 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/private DG.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/private DG.bmp -------------------------------------------------------------------------------- /Help/Source/Images/private DG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/private DG.jpg -------------------------------------------------------------------------------- /Help/Source/Images/protect DG.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/protect DG.bmp -------------------------------------------------------------------------------- /Help/Source/Images/protect DG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/protect DG.jpg -------------------------------------------------------------------------------- /Help/Source/Images/protected 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/protected 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/protected 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/protected 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/public 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/public 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/public 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/public 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/public DG.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/public DG.bmp -------------------------------------------------------------------------------- /Help/Source/Images/public DG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/public DG.jpg -------------------------------------------------------------------------------- /Help/Source/Images/published 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/published 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/published 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/published 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/read only 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/read only 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/read only 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/read only 2.jpg -------------------------------------------------------------------------------- /Help/Source/Images/readonly DG.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/readonly DG.bmp -------------------------------------------------------------------------------- /Help/Source/Images/readonly DG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/readonly DG.jpg -------------------------------------------------------------------------------- /Help/Source/Images/virtual 2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/virtual 2.bmp -------------------------------------------------------------------------------- /Help/Source/Images/virtual 2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Images/virtual 2.jpg -------------------------------------------------------------------------------- /Help/Source/Include/AdditionalInfo.dtx: -------------------------------------------------------------------------------- 1 | @@AdditionalInfo.htm 2 | 3 | 4 | * Special care has been taken to wrap every event call by a DoXXX method (e.g. for OnBeforeItem paint there is a 5 | protected DoBeforeItemPaint method) which is always virtual to allow descendants to override it and intercept so calls to 6 | events regardless whether there is actually an event handler assigned or not. 7 | * During a locked update stage (entered by BeginUpdate) there will be <B>no</B> updates of the tree nor the 8 | selection. If you change the selection in such a stage then it is temporarily accumulated and applied if, during an 9 | EndUpdate call, the inner update counter reaches zero. 10 | 11 | 12 | 13 | <B>Borland C++ Builder:</B> 14 | 15 | * Define the constant NO_WIN32_LEAN_AND_MEAN in your environment/project options to avoid problems with undefined 16 | interfaces. 17 | * The automatic conversion process from Delphi source code to C++ code has unfortunately some bugs. Most of them 18 | could be solved by rearranging the Delphi code, but one problem still remains and must be solved manually. The translator 19 | does not automatically consider default parameters in functions. The parameters are correctly converted but without the 20 | default value. Usually the problem will appear when you try to compile and there is a call of the function with fewer 21 | than expected parameters. 22 | 23 | Summary 24 | This chapter collects everything else which is important or very helpful to know but which does not justify an own 25 | chapter. 26 | -------------------------------------------------------------------------------- /Help/Source/Include/DataHandling.dtx: -------------------------------------------------------------------------------- 1 | @@DataHandling.htm 2 | <TITLE Data handling> 3 | 4 | Usually single items (as in TTreeview and TListView) only have a simple data member which can take a pointer to the 5 | actual data an application maintains for this item in an external structure. This principle can be used with Virtual 6 | Treeview too. But the control goes a step further by letting the application decide how much data per node is needed and 7 | providing this space implicitly. This way the application is freed from maintaining an extra structure sometimes. 8 | 9 | 10 | 11 | * Application view * 12 | The core point behind this technique is that the tree has to allocate and deallocate memory for each node anyway. The 13 | amount to allocate does not matter with respect to node handling. So it is easy for the tree to allocate some more bytes 14 | for the application. To know how much memory is to be allocated there are several ways to tell. Firstly there is the 15 | property NodeDataSize which can be set already at design time and describes the required user memory per node in bytes. 16 | If you don't know this size (because it depends on a structure which you want to be examined by SizeOf) then simply 17 | assign your size in the form creation process to the tree via the NodeDataSize property. 18 | 19 | 20 | 21 | Secondly, use the event OnGetNodeDataSize. This event may occasionally be useful for values which are neither known at 22 | design time nor can they be determined at compile time (as the size of a record). The event is triggered when the 23 | NodeDataSize property is -1 (which is by default the case). This value will be replaced by the actual data size returned 24 | in the event. 25 | 26 | 27 | <TABLE> 28 | <B>Note: </B>If you want to store application data in a node (e.g. the caption) then you <B>must</B> allocate node data 29 | as outlined above. If you get an access violation in OLE32.dll then you have likely forgotten to allocate this node data 30 | and tried to assign a string. 31 | </TABLE> 32 | 33 | 34 | The allocated bytes per node are an inherent part of the node record and follow the last internal member in the 35 | TVirtualNode structure (symbolized by the Data member). In order for the application to access this memory it needs to 36 | map its node data structure to this tree internal memory. To simplify this task the application can use GetNodeData. This 37 | method returns the address of the data area in a node record. This address can then be assigned to a local pointer 38 | variable (or can be type casted) as shown in the chapter code repository. I strongly recommend that you always use the 39 | GetNodeData method to get the data address instead of simply using @Node.Data because a tree class may add internal data 40 | to this area which starts then at this address while the actual application data begins a few bytes later. 41 | 42 | 43 | 44 | * Tree Control view * 45 | Depending on its tasks a tree may need to store data on a per node basis (e.g. TCustomVirtualStringTree keeps the width 46 | \of a node to allow quick response on DoGetNodeWidth which is used for various tasks including draw selection). 47 | Particularly multi selection with the mouse (draw selection) depends on very quick width determination to allow 48 | interactivity even with 100,000 selected nodes. 49 | 50 | In order to avoid access conflicts between the tree and the application a simple mechanism has been implemented to allow 51 | flexible internal node data handling (in addition to the normal node record and application data handling). Following 52 | functions have been added to the base tree: 53 | 54 | * InternalData 55 | * AllocateInternalDataArea 56 | 57 | 58 | <TABLE> 59 | <B>Note: </B>A tree descendant which requires additional internal data <B>must</B> call AllocateInternalDataArea to 60 | register its need. 61 | </TABLE> 62 | 63 | 64 | <B>InternalData</B> is a virtual function which does nothing in the base tree class (returns nil). I recommend to 65 | \override this method in descendants however and return the address of the internal data for that tree. This address can 66 | easily be determined by adding the offset returned from AllocateInternalDataArea to the start of the node record. To make 67 | this work you have of course to keep the offset somewhere, just like TVirtualStringTree does. 68 | 69 | 70 | 71 | <B>AllocateInternalDataArea</B> is the function which sums up all requests for internal data and keeps this sum which 72 | must be added to each node data offset to return the correct address for user data. Note: call this method only once 73 | (e.g. during tree creation) to register the data area you need. 74 | 75 | Summary 76 | An important aspect of the tree is the handling of data for each node. Read here how Virtual Treeview manages your data. 77 | -------------------------------------------------------------------------------- /Help/Source/Include/Editing.dtx: -------------------------------------------------------------------------------- 1 | @@Editing.htm 2 | <TITLE Editors and editing> 3 | 4 | Generally it cannot be said what data a user will edit when he or she edits a node. In the case of the string tree it 5 | becomes a lot easier to decide because we have, as the name implies, strings and captions to edit. But this is only a 6 | special case and the underlaying edit principle must be flexible to allow editing various different data of a node, 7 | including several items instead of only single ones. 8 | 9 | 10 | 11 | Since you cannot generally tell what will be edited the used solution does not assume anything. Instead it delegates the 12 | entire process to the application or derived trees via the IVTEditLink class. This interface defines some necessary 13 | methods which allow interaction between the tree and the editor but the actual editor implementation is up to the edit 14 | link (which can of course delegate this task to even another instance like the application). The edit link is responsible 15 | for everything including to hide and show the editor, reading the old values of a node and setting the new values etc. 16 | The tree only signals some general states like the edit start, end or cancellation. 17 | 18 | 19 | 20 | Editing starts with the protected DoEdit method which may be triggered by the edit timer (which in turn is triggered by 21 | clicking again on the focused node), by pressing F2 or by calling EditNode. DoEdit creates an editor (actually only the 22 | edit link) via the virtual CreateEditor method which should be overridden by descendant trees to return a valid edit link 23 | (as TVirtualStringTree does). Otherwise the method will query the application for an editor link. Actual editing starts 24 | \only if CreateEditor returns a valid edit link. 25 | 26 | After the tree received a valid edit link it initiates communication by calling PrepareEdit which can be used by the link 27 | to retrieve the values to be edited using the given node and column. If the edit link returns True in this call another 28 | call is initiated by the tree telling the link where to place the editor using the SetBounds method. Finally the tree 29 | calls BeginEdit to actually start the edit operation. From now on the edit link is responsible for any further action 30 | including passing on key presses like VK_UP and VK_DOWN to select a new node to edit etc. The link must also be aware 31 | that editing might be stopped at any time by EndEdit or CancelEdit. Otherwise however the edit link (and its editor(s)) 32 | is completely autonomous and can use whatever it considers as being appropriate for the editing task. It isn't even 33 | limited to use an in-place editor. 34 | 35 | 36 | 37 | With the class TStringEditLink you will find a sample implementation used in the string tree to edit single node 38 | captions. By examining the used editor (a normal TEdit control) you will find some things which should be handled the 39 | same or in a similar way to make editing smooth. 40 | 41 | 42 | 43 | Starting with version 3.8 Virtual Treeview allows to use the TNT controls suite from Troy Wolbrink, which allow to edit 44 | node captions with Unicode content. Download the latest package and add its path after installation to your project. 45 | Enable the TntSupport compiler switch by changing it from <B>{.$define TntSupport}</B> to <B>{$define TntSupport}</B> and 46 | recompile. 47 | 48 | Summary 49 | Because of the virtual nature of Virtual Treeview editing becomes a difficult issue. Read here what needs to be 50 | considered and where you can hook in to allow any editor for a node. 51 | -------------------------------------------------------------------------------- /Help/Source/Include/GettingStartedE.dtx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/Include/GettingStartedE.dtx -------------------------------------------------------------------------------- /Help/Source/Include/Installation.dtx: -------------------------------------------------------------------------------- 1 | @@Installation.htm 2 | <title Installation> 3 | 4 | Virtual Treeview is designed for Delphi 7 and higher and can also be used with Borland C++ Builder 2006 and up. It is 5 | however not designed to work directly with Kylix, Lazarus, Free Pascal or Delphi for .NET. 6 | 7 | 8 | 9 | The initial core source files are: 10 | 11 | <image Document><b>Compilers.inc</b> 12 | 13 | Include file which contains various compiler switches which determine the target compiler and the target operating 14 | system. 15 | 16 | <image Document><b>VTConfig.inc</b> 17 | 18 | Include file which contains version neutral compiler switches which control certain things that can be compiled into the 19 | tree view (e.g. Windows XP theme support, Unicode controls, a specialized node memory manager etc.). 20 | 21 | <image Document><b>VirtualTrees.pas</b> 22 | 23 | The actual implementation of Virtual Treeview and its descendants and support classes. 24 | 25 | <image Document><b>VirtualTrees.res</b> 26 | 27 | Resource file containing some check and miscellaneous images used for all Virtual Treeviews. 28 | 29 | <image Document><b>VTHeaderPopup.pas</b> 30 | 31 | Unit containing a TPopupMenu descendant which provides a convenient way to implement a header popup used to switch 32 | visibility of columns. 33 | 34 | * Installation * 35 | Please have a look at the file INSTALL.txt for installation instructions. the installer which was formerly available is 36 | no longer maintained. 37 | -------------------------------------------------------------------------------- /Help/Source/Include/Licensing.dtx: -------------------------------------------------------------------------------- 1 | @@Licensing.htm 2 | <title Licensing> 3 | 4 | Virtual Treeview License Agreement 5 | 6 | 7 | 8 | The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this 9 | \file except in compliance with the License. You may obtain a copy of the License at <extlink http://www.mozilla.org/MPL>www.mozilla.org/MPL</extlink>. 10 | 11 | 12 | 13 | Alternatively, you may redistribute this library, use and/or modify it under the terms of the GNU Lesser General Public 14 | License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later 15 | \version. You may obtain a copy of the LGPL at <extlink http://www.gnu.org/copyleft>www.gnu.org/copyleft</extlink>. 16 | 17 | 18 | 19 | Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express 20 | \or implied. See the License for the specific language governing rights and limitations under the License. 21 | 22 | 23 | 24 | The original code is VirtualTrees.pas, released September 30, 2000. 25 | 26 | 27 | 28 | The initial developer of the original code is digital publishing AG (www.digitalpublishing.de). 29 | 30 | 31 | 32 | Virtual Treeview is written, published and maintaned by 33 | 34 | 35 | 36 | Mike Lischke (public@soft-gems.net, www.soft-gems.net). 37 | 38 | Joachim Marder (joachim.marder@gmail.com) 39 | 40 | and many more 41 | -------------------------------------------------------------------------------- /Help/Source/Include/Overview.dtx: -------------------------------------------------------------------------------- 1 | @@Overview.htm 2 | <title Introduction> 3 | 4 | Virtual Treeview is a tree view control built from ground up. More than 3 years of development made it one of the most 5 | flexible and advanced tree controls available today. Virtual Treeview starts off with the claim to improve many aspects 6 | \of existing solutions and introduces some new technologies and principles which were not available before. 7 | 8 | As the name already indicates, this control uses a different paradigm for tree management than other controls of this 9 | kind. It does not know anything about the data it manages (except its size), not even the captions of a node. Everything 10 | is retrieved from the application via events (or descendants via overridden methods). 11 | 12 | Virtual Treeview has been carefully designed and thoroughly tested. The control proved its concept as well as everyday 13 | fitness already in many commercial products and freeware projects. 14 | 15 | <table noborder> 16 | <image Overview.bmp> 17 | </table> 18 | Virtual Treeview can be characterized by the following core capabilities: 19 | 20 | 21 | 22 | * <b>Extremely fast</b> and designed for <b>high speed access</b>. 23 | * <b>Memory sparing</b> which is the premise for speed and capacity. 24 | * A <b>high capacity</b> control. 25 | * <b>Highly customizable</b>. 26 | * Designed for <b>professionals</b>, implements a <b>virtual paradigm</b> with a <b>new serialization concept</b>. 27 | * <b>Newest technologies and platforms</b> are supported (e.g. Windows XP). 28 | * Unique features like <b>Unicode</b>, <b>right-to-left</b> directionality and layout, <b>alpha blending</b> 29 | and <b>OLE</b> drag'n drop and clipboard operations. 30 | 31 | <table noborder> 32 | <image GenericXP.bmp> 33 | </table> 34 | 35 | <b>Homepage:</b> <extlink http://www.soft-gems.net>www.soft-gems.net</extlink> 36 | 37 | <b>E-Mail:</b> <extlink mailto:support@soft-gems.net>support@soft-gems.net</extlink> 38 | 39 | <b>Support center:</b> <extlink http://support.soft-gems.net>support.soft-gems.net</extlink> 40 | 41 | <b>News group: </b><extlink news://news.soft-gems.net/delphi-gems.support.virtualtreeview>delphi-gems.support.virtualtreeview</extlink> 42 | 43 | <b>Web based forums: </b><extlink http://support.soft-gems.net/forums>support.soft-gems.net/forums</extlink> 44 | 45 | <b>Issue Tracker: </b><extlink http://support.soft-gems.net/mantis>support.soft-gems.net/mantis</extlink> 46 | -------------------------------------------------------------------------------- /Help/Source/Include/TreeImage.dtx: -------------------------------------------------------------------------------- 1 | @@TreeImage.htm 2 | <TITLE Tree image and tree window> 3 | 4 | Some methods in Virtual Treeview work with an internal tree image, e.g. painting or hit determination. This tree image 5 | does not really exist but is rather an imagination of the entire tree drawn to an infinitely sized sheet. In this picture 6 | the tree is always drawn at position (0, 0) and advances to positive horizontal and vertical values which reach out to 7 | the right and down, respectively. This also means that coordinates given in this fictional image are always positive. 8 | 9 | 10 | 11 | A display function like the WM_PAINT handler can now take a rectangle of this full image (in PaintTree this is called the 12 | <U>window</U>) and let it draw to any location in a target canvas. This allows to draw a part of the entire image even if 13 | the tree window is scrolled or needs otherwise to be moved (e.g. when dragging or printing). In order to get the full 14 | dimension of the tree image call GetTreeRect, which returns a rectangle always starting at (0, 0) and extending at least 15 | to client area size but usually much further (determined by the private variables FRangeX and FRangeY which also 16 | determine the scroll bar values). 17 | 18 | 19 | 20 | In order to maintain the visual portion of the tree image two offset values are maintained which specify the horizontal 21 | and vertical distance relative to the client area of the tree control. These offsets (OffsetX, OffsetY and OffsetXY) are 22 | therefore negative. This means 0 means no offset at all and -100 means the tree is scrolled by 100 pixels. Values \> 0 23 | are always made to 0. 24 | 25 | 26 | 27 | How does this now fit together when you want, say, to print a part of the tree to a memory or printer canvas? Have a look 28 | at the image below: 29 | 30 | <IMAGE TreeWindow> 31 | 32 | On the left pane you can see a typical tree view of which only a specific part is visible. This situation is visualized 33 | by the non-shaded rectangular region. The right pane shows the reproduction of the visible part to different locations. 34 | The entire tree image size corresponds to the internal FRangeX and FRangeY variables of the tree view. When drawing a 35 | part of the window the method PaintTree needs to know the size and position of the part to draw. This is given by a TRect 36 | structure passed in the <B>Window</B> parameter. For normal screen display this rectangle structure consists of the 37 | current scroll offsets (properties OffsetX and OffsetY or OffsetXY for both together given as TPoint) and the size of the 38 | client area of the tree control. This rectangle is usually also intersected with the current clipping region to avoid 39 | painting parts of the tree which are not invalid. 40 | 41 | 42 | 43 | The place where the image is to be painted is given in the parameter <B>Target</B>. This point specifies the physical 44 | location in the target canvas where to draw the content of the region specified by <B>Window</B>. Note that these 45 | coordinates are usually (but wrongly) considered as being physical pixels. This might be true for screen or bitmap output 46 | but is not for the printer where a single pixel would be much too small. Hence another term is used here: logical 47 | coordinates. The actual size of one unit of these coordinates can either be a single pixel but also a millimeter, inch or 48 | even some other odd size. The interpretation is determined by the mapping mode of the target canvas (device context, DC) 49 | and its window and viewport extents. For more information about mapping modes see the online help or MSDN under <I>SetMapMode</I> 50 | and for DC extents under <I>SetWindowExtEx</I> as well as <I>SetViewportExtEx</I>. With the help of mapping modes and 51 | window/viewport extents you can greatly customize the outcome of PaintTree. These APIs are usually also used to provide a 52 | print preview. 53 | 54 | Summary 55 | If you are one of those developers who want to create tree descendants, which perhaps involve visual changes in Virtual 56 | Treeview then you need to know how the control paints itself (as outlined in <LINK PaintCycles.htm, Paint cycles and stages>). 57 | What happens with the resulting image and how it can be used for certain tasks like printing? Some answers are in this 58 | topic. 59 | -------------------------------------------------------------------------------- /Help/Source/Include/specialtopics.dtx: -------------------------------------------------------------------------------- 1 | The topics defined in this file are special topics. 2 | Special topics are used by the filters for certain 3 | defined parts of the output. 4 | A special topic should contain of one standard 5 | section of text (usually the predefined "Description" 6 | section. The welcome topic should have a description 7 | (standard section type) and a summary (summary section 8 | type section). 9 | 10 | This file can be used as a template for new files or 11 | directly. We recommend to make a copy of that file if 12 | you want to use it in your project. 13 | 14 | Special Topic Used For 15 | -------------------- ----------------------------------- 16 | !!INDEX a brief description which appears 17 | on the index of an index page 18 | (if generated by the filter) 19 | !!SYMREF a brief description which appears 20 | on the symbol reference page (if 21 | generated by the filter) 22 | !!CONTENTS a brief description which appears 23 | on the content page (if 24 | generated by the filter) 25 | !!COPYRIGHT a brief copyright notice which 26 | appears on the bottom if each 27 | generated page or file. 28 | !!ABOUT an abstract description of the 29 | generated documentation and/or the 30 | author/company of the documentation 31 | !!WELCOME The <Title> is used as the primary 32 | title of the documentation. 33 | The summary (if available) is used 34 | as a sub-title of the documentation 35 | The description (if available) is 36 | used for describing the content 37 | of the documentation. 38 | !!GLOSSARY a brief introduction to the generated 39 | glossary topic. 40 | 41 | !!CLASSES 42 | !!FUNCTIONS 43 | !!RECORDS 44 | !!TYPES 45 | !!VARIABLES 46 | !!CONSTANTS 47 | !!MACROS 48 | !!FILES 49 | 50 | 51 | @@$Main 52 | <TITLE %PROJECTTITLE%> 53 | 54 | @@$Inner fundamentals 55 | <TITLE Inner fundamentals> 56 | <AUTOLINK ON> 57 | 58 | If you would like to understand certain things going on in Virtual Treeview you should read on in this chapter. Herein I 59 | will explain what was my motiviation to create Virtual Treeview, why I based everything on the design you see now, how 60 | painting in the tree is organized and can be customized, what are the key navigation commands in the control and many 61 | more things. Particularly if you want to derive your own descendant from Virtual Treeview you should read everything 62 | here. 63 | 64 | @@!!INDEX 65 | <TITLE Index> 66 | 67 | These are all topics and symbols available in this documentation. 68 | 69 | @@!!SYMREF 70 | <TITLE Symbol Reference> 71 | 72 | These are all symbols available in this documentation. 73 | 74 | @@!!CONTENTS 75 | <TITLE Contents> 76 | 77 | This is the table of contents of this documentation. 78 | 79 | @@!!GLOSSARY 80 | <TITLE %PROJECTTITLE% Glossary> 81 | <TITLEIMG Checker150> 82 | 83 | This is the %PROJECTTITLE% glossary. It contains brief descriptions of important terms and topics. 84 | 85 | @@!!CLASSES 86 | <TITLE Classes> 87 | 88 | These are all classes that are contained in this documentation. 89 | 90 | @@!!FUNCTIONS 91 | <TITLE Functions> 92 | 93 | These are all functions that are contained in this documentation. 94 | 95 | @@!!RECORDS 96 | <TITLE Structs and Records> 97 | 98 | These are all structs and records that are contained in this documentation. 99 | 100 | @@!!TYPES 101 | <TITLE Types> 102 | 103 | These are all types that are contained in this documentation. 104 | 105 | @@!!VARIABLES 106 | <TITLE Variables> 107 | 108 | These are all variables that are contained in this documentation. 109 | 110 | @@!!CONSTANTS 111 | <TITLE Constants> 112 | 113 | These are all constants that are contained in this documentation. 114 | 115 | @@!!COPYRIGHT 116 | <title Copyright> 117 | 118 | (c) 1999-2012 Mike Lischke, <extlink http://www.soft-gems.net>Soft Gems software solutions</extlink>, All rights 119 | reserved. 120 | -------------------------------------------------------------------------------- /Help/Source/VirtualTreeview.ldb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/Source/VirtualTreeview.ldb -------------------------------------------------------------------------------- /Help/VirtualTreeview.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Help/VirtualTreeview.chm -------------------------------------------------------------------------------- /INSTALL.txt: -------------------------------------------------------------------------------- 1 | Supported Delphi version: RAD Studio XE3 and higher 2 | Supported Windows Versions: Windows XP and higher 3 | 4 | 5 | The former installer of V4 is no longer maintained, but installation is quite easy: 6 | Extract the entire(!) ZIP file and follow the instructions below. 7 | 8 | 9 | Delphi / RAD Studio XE3 and higher Installation 10 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 | 1. Open the project group "Packages\RAD Studio XE*\VirtualTreeView.groupproj" 12 | 2. Right click on "VirtualTreesD*.bpl" and click "Install" 13 | 3. Go to "Tools > Options > Environment Options > Delphi Options > Library > Library Path > [...]" 14 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK" 15 | 4. C++ Builder users only: 16 | Go to "Tools > Options > Environment Options > C++ Options > Paths and Directories" 17 | a) Click "Library Path > [...]" 18 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK" 19 | b) Click "System Include path > [...]" 20 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK"" 21 | 22 | 23 | Troubleshooting 24 | ~~~~~~~~~~~~~~~ 25 | In case you experience any problems, try to delete all these files from your disk and then start over: 26 | - Virtualtrees.* 27 | - VTAccessibility.* 28 | - VTHeaderPopup.* 29 | - VirtualTreesD.* 30 | - VirtualTreesR.* 31 | I recommand using UltraSearch for this task: http://www.jam-software.de/ultrasearch/ 32 | 33 | 34 | Please send comments and suggestions regarding the packages and the install 35 | instructions to joachim.marder@gmail.com or open an issue. 36 | 37 | C++ Builder XE3 and higher Installation 38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 | 1. Open the project group "Packages\CBullder XE*\VirtualTreeView.groupproj" 40 | that is closest to your version. 41 | 2. Right click on "VirtualTreesR*.bpl" and click "Build" 42 | 3. Right click on "VirtualTreesD*.bpl" and click "Install" 43 | 4. Go to "Tools > Options > Environment Options > Delphi Options > Library > Library Path > [...]" 44 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK" 45 | 5. Go to "Tools > Options > Environment Options > C++ Options > Paths and Directories" 46 | a) Click "Library Path > [...]" 47 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK" 48 | b) Click "System Include path > [...]" 49 | Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK"" 50 | 6. If you target Win64 you need to build VirtualTreesR*.bpl also for the platform "Win64" 51 | -------------------------------------------------------------------------------- /MAKEFILE: -------------------------------------------------------------------------------- 1 | PROJECT = VirtualTrees 2 | EMBARCADERO = $(PROGRAMFILES)\Embarcadero\RAD Studio 3 | STUDIO = $(PROGRAMFILES)\Embarcadero\Studio 4 | BDSCOMMONDIRMAIN = %PUBLIC%\Documents\Embarcadero\Studio 5 | BUILDEXE = "$(PROGRAMFILES)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" 6 | BUILD = $(BUILDEXE) /t:Rebuild 7 | 8 | clean: 9 | ECHO Project: $(PROJECT) $(EMBARCADERO) 10 | DEL /S /Q .\*.HPP 11 | DEL /S /Q .\*.DCU 12 | #TODO: Add demos and package folders 13 | 14 | _XE8: Lib\*.pas "Package\RAD Studio XE8\$(PROJECT)R.dpk" "Package\RAD Studio XE8\$(PROJECT)R.dproj" "Package\RAD Studio XE8\$(PROJECT)D.dpk" "Package\RAD Studio XE8\$(PROJECT)D.dproj" 15 | SET BDS=$(STUDIO)\16.0 16 | $(BUILD) "Package\RAD Studio XE8\$(PROJECT)R.dproj" 17 | $(BUILD) "Package\RAD Studio XE8\$(PROJECT)D.dproj" 18 | $(BUILD) /property:Platform=Win64 "Package\RAD Studio XE8\$(PROJECT)R.dproj" 19 | $(MAKE) _samples 20 | 21 | # build all packahes for Delphi 10.2 22 | 10_2: Source\*.pas "Packages\RAD Studio 10.2\$(PROJECT)R.dpk" "Packages\RAD Studio 10.2\$(PROJECT)R.dproj" "Packages\RAD Studio 10.2\$(PROJECT)D.dpk" "Packages\RAD Studio 10.2\$(PROJECT)D.dproj" 23 | SET BDS=$(STUDIO)\19.0 24 | $(BUILD) "Packages\RAD Studio 10.2\$(PROJECT)R.dproj" 25 | $(BUILD) "Packages\RAD Studio 10.2\$(PROJECT)D.dproj" 26 | $(BUILD) /property:Platform=Win64 "Packages\RAD Studio 10.2\$(PROJECT)R.dproj" 27 | $(MAKE) _samples 28 | 29 | "Demos\Advanced\Advanced.exe": "Demos\Advanced\*.dproj" "Demos\Advanced\*.dpr" "Demos\Advanced\*.pas" 30 | $(BUILD) "Demos\Advanced\Advanced.dproj" 31 | 32 | "Demos\Minimal\Minimal.exe": "Demos\Minimal\*.dproj" "Demos\Minimal\*.dpr" "Demos\Minimal\*.pas" 33 | $(BUILD) "Demos\Minimal\Minimal.dproj" 34 | 35 | "Demos\Objects\Objects.exe": "Demos\Objects\*.dproj" "Demos\Objects\*.dpr" "Demos\Objects\*.pas" 36 | $(BUILD) "Demos\Objects\MVCDemo.dproj" 37 | 38 | "Demos\OLE\OLE.exe": "Demos\OLE\*.dproj" "Demos\OLE\*.dpr" "Demos\OLE\*.pas" 39 | $(BUILD) "Demos\OLE\OLE.dproj" 40 | 41 | _samples: "Demos\Advanced\Advanced.exe" "Demos\Minimal\Minimal.exe" "Demos\Objects\Objects.exe" "Demos\OLE\OLE.exe" 42 | 43 | _continuousbuilds: clean 10_2 44 | 45 | _release: 46 | #This small batch file is intended to create a source code release file of the VirtualTreeView as ZIP archive 47 | #It expects the ZIP.EXE from the InfoZip project V3.0 or higher to be in the system's search path 48 | #Download e.g. from: ftp://ftp.info-zip.org/pub/infozip/win32/ 49 | ZIP -9 -r .\VirtualTreeView.zip INSTALL.txt Changes.txt Source Design Packages Demos Contributions Help\VirtualTreeview.chm -i *.pas -i *.dpk -i *.groupproj -i *.dproj -i *.cbproj -i *.hlp -i *.rc -i *.res -i *.cfg -i *.dpr -i *.dof -i *.bpr -i *.dfm -i *.cpp -i *.inc -i *.dcr -i *.chm -i *.png -i *.js -i *.txt -i *.bmp -i *.uni 50 | ECHO Source code zip archive "VirtualTreeView.zip" created. 51 | ECHO !!!Please ensure that the const TVTVersion is correct!!! 52 | ECHO !!!Please add version number to ZIP file name!!! 53 | ECHO !!!Please create release at: https://github.com/Virtual-TreeView/Virtual-TreeView/releases 54 | -------------------------------------------------------------------------------- /MakeRelease.Bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | nmake _release 3 | pause -------------------------------------------------------------------------------- /Packages/CBuilder 10.1/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{85AC5363-0DD3-4B39-8709-5987A7DA817E}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder 10.1/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder 10.1/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder 10.2/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{85AC5363-0DD3-4B39-8709-5987A7DA817E}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder 10.2/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder 10.2/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder 10/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{85AC5363-0DD3-4B39-8709-5987A7DA817E}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder 10/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #pragma hdrstop 4 | #include <basepch.h> 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder 10/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #pragma hdrstop 4 | #include <basepch.h> 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE5/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{90943296-FDFA-4C80-A99D-237F570C4F54}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies>VirtualTreesCR.cbproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD" DependsOnTargets="VirtualTreesCR"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean" DependsOnTargets="VirtualTreesCR:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make" DependsOnTargets="VirtualTreesCR:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder XE5/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE5/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE7/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{90943296-FDFA-4C80-A99D-237F570C4F54}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder XE7/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE7/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE8/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{90943296-FDFA-4C80-A99D-237F570C4F54}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesCR.cbproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesCD.cbproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesCR"> 21 | <MSBuild Projects="VirtualTreesCR.cbproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesCR:Clean"> 24 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesCR:Make"> 27 | <MSBuild Projects="VirtualTreesCR.cbproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesCD"> 30 | <MSBuild Projects="VirtualTreesCD.cbproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesCD:Clean"> 33 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesCD:Make"> 36 | <MSBuild Projects="VirtualTreesCD.cbproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesCR;VirtualTreesCD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesCR:Clean;VirtualTreesCD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesCR:Make;VirtualTreesCD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/CBuilder XE8/VirtualTreesCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/CBuilder XE8/VirtualTreesCR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.1/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.1/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '24'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.1/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '24'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2 FMX/AndroidManifest.template.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <!-- BEGIN_INCLUDE(manifest) --> 3 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" 4 | package="%package%" 5 | android:versionCode="%versionCode%" 6 | android:versionName="%versionName%" 7 | android:installLocation="%installLocation%"> 8 | 9 | <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> 10 | <%uses-permission%> 11 | <uses-feature android:glEsVersion="0x00020000" android:required="True"/> 12 | <application android:persistent="%persistent%" 13 | android:restoreAnyVersion="%restoreAnyVersion%" 14 | android:label="%label%" 15 | android:debuggable="%debuggable%" 16 | android:largeHeap="%largeHeap%" 17 | android:icon="%icon%" 18 | android:theme="%theme%" 19 | android:hardwareAccelerated="%hardwareAccelerated%" 20 | android:resizeableActivity="false"> 21 | 22 | <%provider%> 23 | <%application-meta-data%> 24 | <%services%> 25 | <!-- Our activity is a subclass of the built-in NativeActivity framework class. 26 | This will take care of integrating with our NDK code. --> 27 | <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" 28 | android:label="%activityLabel%" 29 | android:configChanges="orientation|keyboard|keyboardHidden|screenSize" 30 | android:launchMode="singleTask"> 31 | <!-- Tell NativeActivity the name of our .so --> 32 | <meta-data android:name="android.app.lib_name" 33 | android:value="%libNameValue%" /> 34 | <intent-filter> 35 | <action android:name="android.intent.action.MAIN" /> 36 | <category android:name="android.intent.category.LAUNCHER" /> 37 | </intent-filter> 38 | </activity> 39 | <%activity%> 40 | <%receivers%> 41 | </application> 42 | </manifest> 43 | <!-- END_INCLUDE(manifest) --> 44 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2 FMX/VirtualTreeViewFMX.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{476E8067-4918-45C9-BEC3-C3941CF2E6D0}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR_FMX.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD_FMX.dproj"> 10 | <Dependencies/> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR_FMX"> 21 | <MSBuild Projects="VirtualTreesR_FMX.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR_FMX:Clean"> 24 | <MSBuild Projects="VirtualTreesR_FMX.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR_FMX:Make"> 27 | <MSBuild Projects="VirtualTreesR_FMX.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD_FMX"> 30 | <MSBuild Projects="VirtualTreesD_FMX.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD_FMX:Clean"> 33 | <MSBuild Projects="VirtualTreesD_FMX.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD_FMX:Make"> 36 | <MSBuild Projects="VirtualTreesD_FMX.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR_FMX;VirtualTreesD_FMX"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR_FMX:Clean;VirtualTreesD_FMX:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR_FMX:Make;VirtualTreesD_FMX:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2 FMX/VirtualTreesD_FMX.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD_FMX; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE VT_FMX} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$IMPLICITBUILD ON} 30 | 31 | requires 32 | rtl, 33 | fmx; 34 | 35 | contains 36 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 37 | 38 | end. 39 | 40 | 41 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2 FMX/VirtualTreesR_FMX.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR_FMX; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE VT_FMX} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD ON} 31 | 32 | requires 33 | rtl, 34 | fmx, 35 | VirtualTreesD_FMX; 36 | 37 | end. 38 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '25'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.2/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '25'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.3/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.3/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '26'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10.3/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '26'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '23'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio 10/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '23'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE3/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE3/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO ON} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION OFF} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES ON} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE DEBUG} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '17'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE3/VirtualTreesD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE3/VirtualTreesD.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE3/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO ON} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '17'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas'; 48 | 49 | end. 50 | 51 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE3/VirtualTreesR.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE3/VirtualTreesR.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE4/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE4/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO ON} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION OFF} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES ON} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE DEBUG} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '18'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE4/VirtualTreesD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE4/VirtualTreesD.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE4/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO ON} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '18'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas'; 48 | 49 | end. 50 | 51 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE4/VirtualTreesR.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE4/VirtualTreesR.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO ON} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION OFF} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES ON} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE DEBUG} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '19'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE5/VirtualTreesD.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesR.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include <basepch.h> 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO ON} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '19'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas'; 48 | 49 | end. 50 | 51 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE5/VirtualTreesR.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Packages/RAD Studio XE5/VirtualTreesR.res -------------------------------------------------------------------------------- /Packages/RAD Studio XE6/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE6/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO ON} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS ON} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION OFF} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO ON} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES ON} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE DEBUG} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '20'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE6/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO ON} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '20'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas'; 48 | 49 | end. 50 | 51 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE7/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE7/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '21'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE7/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '21'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE8/VirtualTreeView.groupproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{CC6A9541-DD5C-4BCD-8914-016D8D2EAB3B}</ProjectGuid> 4 | </PropertyGroup> 5 | <ItemGroup> 6 | <Projects Include="VirtualTreesR.dproj"> 7 | <Dependencies/> 8 | </Projects> 9 | <Projects Include="VirtualTreesD.dproj"> 10 | <Dependencies>VirtualTreesR.dproj</Dependencies> 11 | </Projects> 12 | </ItemGroup> 13 | <ProjectExtensions> 14 | <Borland.Personality>Default.Personality.12</Borland.Personality> 15 | <Borland.ProjectType/> 16 | <BorlandProject> 17 | <Default.Personality/> 18 | </BorlandProject> 19 | </ProjectExtensions> 20 | <Target Name="VirtualTreesR"> 21 | <MSBuild Projects="VirtualTreesR.dproj"/> 22 | </Target> 23 | <Target Name="VirtualTreesR:Clean"> 24 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Clean"/> 25 | </Target> 26 | <Target Name="VirtualTreesR:Make"> 27 | <MSBuild Projects="VirtualTreesR.dproj" Targets="Make"/> 28 | </Target> 29 | <Target Name="VirtualTreesD" DependsOnTargets="VirtualTreesR"> 30 | <MSBuild Projects="VirtualTreesD.dproj"/> 31 | </Target> 32 | <Target Name="VirtualTreesD:Clean" DependsOnTargets="VirtualTreesR:Clean"> 33 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Clean"/> 34 | </Target> 35 | <Target Name="VirtualTreesD:Make" DependsOnTargets="VirtualTreesR:Make"> 36 | <MSBuild Projects="VirtualTreesD.dproj" Targets="Make"/> 37 | </Target> 38 | <Target Name="Build"> 39 | <CallTarget Targets="VirtualTreesR;VirtualTreesD"/> 40 | </Target> 41 | <Target Name="Clean"> 42 | <CallTarget Targets="VirtualTreesR:Clean;VirtualTreesD:Clean"/> 43 | </Target> 44 | <Target Name="Make"> 45 | <CallTarget Targets="VirtualTreesR:Make;VirtualTreesD:Make"/> 46 | </Target> 47 | <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/> 48 | </Project> 49 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE8/VirtualTreesD.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\VirtualTrees.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'VirtualTreeView Controls'} 30 | {$LIBSUFFIX '22'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | DesignIDE, 36 | VirtualTreesR; 37 | 38 | contains 39 | VirtualTreesReg in '..\..\Design\VirtualTreesReg.pas'; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Packages/RAD Studio XE8/VirtualTreesR.dpk: -------------------------------------------------------------------------------- 1 | package VirtualTreesR; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$LIBSUFFIX '22'} 29 | {$RUNONLY} 30 | {$IMPLICITBUILD OFF} 31 | 32 | requires 33 | vcl, 34 | vclx; 35 | 36 | contains 37 | VirtualTrees in '..\..\Source\VirtualTrees.pas', 38 | VirtualTrees.HeaderPopup in '..\..\Source\VirtualTrees.HeaderPopup.pas', 39 | VirtualTrees.AccessibilityFactory in '..\..\Source\VirtualTrees.AccessibilityFactory.pas', 40 | VirtualTrees.Accessibility in '..\..\Source\VirtualTrees.Accessibility.pas', 41 | VirtualTrees.StyleHooks in '..\..\Source\VirtualTrees.StyleHooks.pas', 42 | VirtualTrees.Classes in '..\..\Source\VirtualTrees.Classes.pas', 43 | VirtualTrees.WorkerThread in '..\..\Source\VirtualTrees.WorkerThread.pas', 44 | VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', 45 | VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', 46 | VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', 47 | VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; 48 | 49 | end. 50 | 51 | 52 | -------------------------------------------------------------------------------- /Resources/VT XP button minus.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT XP button minus.bmp -------------------------------------------------------------------------------- /Resources/VT XP button plus.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT XP button plus.bmp -------------------------------------------------------------------------------- /Resources/VT XP.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT XP.bmp -------------------------------------------------------------------------------- /Resources/VT check dark.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT check dark.bmp -------------------------------------------------------------------------------- /Resources/VT check light.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT check light.bmp -------------------------------------------------------------------------------- /Resources/VT flat.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT flat.bmp -------------------------------------------------------------------------------- /Resources/VT header split.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT header split.cur -------------------------------------------------------------------------------- /Resources/VT move all.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move all.bmp -------------------------------------------------------------------------------- /Resources/VT move all.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move all.cur -------------------------------------------------------------------------------- /Resources/VT move east-west.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move east-west.bmp -------------------------------------------------------------------------------- /Resources/VT move east-west.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move east-west.cur -------------------------------------------------------------------------------- /Resources/VT move east.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move east.cur -------------------------------------------------------------------------------- /Resources/VT move north-east.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move north-east.cur -------------------------------------------------------------------------------- /Resources/VT move north-south.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move north-south.bmp -------------------------------------------------------------------------------- /Resources/VT move north-south.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move north-south.cur -------------------------------------------------------------------------------- /Resources/VT move north-west.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move north-west.cur -------------------------------------------------------------------------------- /Resources/VT move north.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move north.cur -------------------------------------------------------------------------------- /Resources/VT move south-east.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move south-east.cur -------------------------------------------------------------------------------- /Resources/VT move south-west.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move south-west.cur -------------------------------------------------------------------------------- /Resources/VT move south.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move south.cur -------------------------------------------------------------------------------- /Resources/VT move west.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT move west.cur -------------------------------------------------------------------------------- /Resources/VT tick dark.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT tick dark.bmp -------------------------------------------------------------------------------- /Resources/VT tick light.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT tick light.bmp -------------------------------------------------------------------------------- /Resources/VT utilities.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT utilities.bmp -------------------------------------------------------------------------------- /Resources/VT vertical split.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VT vertical split.cur -------------------------------------------------------------------------------- /Resources/VirtualTreeview-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VirtualTreeview-Icon.ico -------------------------------------------------------------------------------- /Resources/VirtualTreeview-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Resources/VirtualTreeview-Icon.png -------------------------------------------------------------------------------- /ScreenShots/VT_Android_8_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/ScreenShots/VT_Android_8_0.jpg -------------------------------------------------------------------------------- /Source/VirtualTrees.HeaderPopup.dtx: -------------------------------------------------------------------------------- 1 | 2 | @@TVirtualTreeCast 3 | Necessary to make the header accessible. 4 | 5 | 6 | @@TVTHeaderPopupOption.poAllowHideAll 7 | Allows to hide all columns, including the last one. 8 | 9 | @@TVTHeaderPopupOption.poOriginalOrder 10 | Show menu items in original column order as they were added to the tree. 11 | 12 | @@VTHeaderPopup.pas 13 | The contents of this file are subject to the Mozilla Public License 14 | Version 1.1 (the "License"); you may not use this file except in 15 | compliance with the License. You may obtain a copy of the License at 16 | http://www.mozilla.org/MPL/ 17 | 18 | Alternatively, you may redistribute this library, use and/or modify it under the terms of the 19 | GNU Lesser General Public License as published by the Free Software Foundation; 20 | either version 2.1 of the License, or (at your option) any later version. 21 | You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. 22 | 23 | Software distributed under the License is distributed on an "AS IS" 24 | basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 25 | License for the specific language governing rights and limitations 26 | under the License. 27 | 28 | The Original Code is VTHeaderPopup.pas. 29 | 30 | The Initial Developer of the Original Code is Ralf Junker <delphi@zeitungsjunge.de>. All Rights Reserved. 31 | 32 | Modified 14 Sep 2003 by Mike Lischke <public@delphi-gems.com>. 33 | - Renamed event type name to be consistent with other event types (e.g. used in VT). 34 | - Added event for hiding/showing columns. 35 | - DoXXX method are now virtual. 36 | - Conditional code rearrangement to get back Ctrl+Shift+Up/Down navigation back. 37 | Modified 31 Mar 2003 by Mike Lischke <public@delphi-gems.com>. 38 | Added a check for the PopupComponent property before casting it hardly to a Virtual Treeview. People might 39 | (accidentally) misuse the header popup. 40 | 41 | Modified 20 Oct 2002 by Borut Maricic <borut.maricic@pobox.com>. 42 | Added the possibility to use Troy Wolbrink's Unicode aware popup menu. Define the compiler symbol TNT to enable it. 43 | You can get Troy's Unicode controls collection from http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm). 44 | 45 | Modified 24 Feb 2002 by Ralf Junker <delphi@zeitungsjunge.de>. 46 | Fixed a bug where the OnAddHeaderPopupItem would interfere with poAllowHideAll options. 47 | All column indexes now consistently use TColumnIndex (instead of Integer). 48 | 49 | Modified 23 Feb 2002 by Ralf Junker <delphi@zeitungsjunge.de>. 50 | Added option to show menu items in the same order as the columns or in original order. 51 | Added option to prevent the user to hide all columns. 52 | 53 | Modified 17 Feb 2002 by Jim Kueneman <jimdk@mindspring.com>. 54 | Added the event to filter the items as they are added to the menu. 55 | -------------------------------------------------------------------------------- /Source/VirtualTrees.dtx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Source/VirtualTrees.dtx -------------------------------------------------------------------------------- /Source/VirtualTrees.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/livius2/Virtual-TreeView/698a63fe28f8798f48e099b640774c3e6ec7af5f/Source/VirtualTrees.res -------------------------------------------------------------------------------- /Tests/Tests.dpr: -------------------------------------------------------------------------------- 1 | program Tests; 2 | 3 | {$IFNDEF TESTINSIGHT} 4 | {$APPTYPE CONSOLE} 5 | {$ENDIF}{$STRONGLINKTYPES ON} 6 | uses 7 | SysUtils, 8 | {$IFDEF TESTINSIGHT} 9 | TestInsight.DUnitX, 10 | {$ENDIF } 11 | DUnitX.Loggers.Console, 12 | DUnitX.Loggers.Xml.NUnit, 13 | DUnitX.TestFramework, 14 | VirtualTreeTests in 'VirtualTreeTests.pas', 15 | VirtualStringTreeTests in 'VirtualStringTreeTests.pas'; 16 | 17 | var 18 | runner : ITestRunner; 19 | results : IRunResults; 20 | logger : ITestLogger; 21 | nunitLogger : ITestLogger; 22 | begin 23 | {$IFDEF TESTINSIGHT} 24 | TestInsight.DUnitX.RunRegisteredTests; 25 | exit; 26 | {$ENDIF} 27 | try 28 | //Check command line options, will exit if invalid 29 | TDUnitX.CheckCommandLine; 30 | //Create the test runner 31 | runner := TDUnitX.CreateRunner; 32 | //Tell the runner to use RTTI to find Fixtures 33 | runner.UseRTTI := True; 34 | //tell the runner how we will log things 35 | //Log to the console window 36 | logger := TDUnitXConsoleLogger.Create(true); 37 | runner.AddLogger(logger); 38 | //Generate an NUnit compatible XML File 39 | nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile); 40 | runner.AddLogger(nunitLogger); 41 | runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests; 42 | 43 | //Run tests 44 | results := runner.Execute; 45 | if not results.AllPassed then 46 | System.ExitCode := EXIT_ERRORS; 47 | 48 | {$IFNDEF CI} 49 | //We don't want this happening when running under CI. 50 | if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then 51 | begin 52 | System.Write('Done.. press <Enter> key to quit.'); 53 | System.Readln; 54 | end; 55 | {$ENDIF} 56 | except 57 | on E: Exception do 58 | System.Writeln(E.ClassName, ': ', E.Message); 59 | end; 60 | end. 61 | -------------------------------------------------------------------------------- /Tests/VirtualStringTreeTests.pas: -------------------------------------------------------------------------------- 1 | unit VirtualStringTreeTests; 2 | 3 | interface 4 | 5 | uses 6 | DUnitX.TestFramework, 7 | Vcl.Forms, 8 | VirtualTrees; 9 | 10 | type 11 | 12 | [TestFixture] 13 | TVirtualStringTreeTests = class(TObject) 14 | strict private 15 | fTree: TVirtualStringTree; 16 | fForm: TForm; 17 | procedure FreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); 18 | public 19 | [Setup] 20 | procedure Setup; 21 | [TearDown] 22 | procedure TearDown; 23 | /// Test for helper function VirtualTrees.Utils.OrderRect() 24 | [Test] 25 | procedure TestNodeData; 26 | end; 27 | 28 | implementation 29 | 30 | uses 31 | Vcl.Controls; 32 | 33 | type 34 | TMyObject = class 35 | public 36 | Value : String; 37 | end; 38 | 39 | { TVirtualStringTreeTests } 40 | 41 | procedure TVirtualStringTreeTests.FreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); 42 | begin 43 | Node.GetData<TMyObject>.Free(); 44 | end; 45 | 46 | procedure TVirtualStringTreeTests.Setup; 47 | begin 48 | fForm := TForm.Create(nil); 49 | fTree := TVirtualStringTree.Create(fForm); 50 | fTree.OnFreeNode := FreeNode; 51 | fTree.Parent := fForm; 52 | fTree.Align := alClient; 53 | end; 54 | 55 | procedure TVirtualStringTreeTests.TearDown; 56 | begin 57 | fForm.Release(); 58 | fForm := nil; 59 | Application.ProcessMessages; 60 | end; 61 | 62 | procedure TVirtualStringTreeTests.TestNodeData; 63 | var 64 | pL_Node : PVirtualNode; 65 | lMyObj1, 66 | lMyObj2 : TMyObject; 67 | begin 68 | Assert.IsNotNull(fTree, 'The Virtual TreeView controls was not created successfully'); 69 | fTree.BeginUpdate; 70 | try 71 | lMyObj1 := TMyObject.Create(); 72 | lMyObj1.Value := 'Hello World'; 73 | 74 | pL_Node := fTree.AddChild(nil, lMyObj1); 75 | finally 76 | fTree.EndUpdate; 77 | end; 78 | 79 | lMyObj2 := TMyObject(pL_Node.GetData()^); 80 | Assert.AreEqual(lMyObj1, lMyObj2, 'The object that was set as node data should equal the object that was retrieved from the node using TVirtualNode.GetData()'); 81 | Assert.AreEqual(lMyObj1.Value, lMyObj2.Value, 'The object''s vlaue which was set as node data should equal the object that was retrieved from the node using TVirtualNode.GetData()'); 82 | lMyObj2 := TMyObject(fTree.GetNodeData(pL_Node)^); 83 | Assert.AreEqual(lMyObj1, lMyObj2, 'The object that was set as node data should equal the object that was retrieved from the node using TBaseVirtualTree.GetNodeData()'); 84 | Assert.AreEqual(lMyObj1.Value, lMyObj2.Value, 'The object''s value which was set as node data should equal the object that was retrieved from the node using TBaseVirtualTree.GetNodeData()'); 85 | lMyObj2 := pL_Node.GetData<TMyObject>(); 86 | Assert.AreEqual(lMyObj1, lMyObj2, 'The object that was set as node data should equal the object that was retrieved from the node using TVirtualNode.GetData<T>()'); 87 | Assert.AreEqual(lMyObj1.Value, lMyObj2.Value, 'The object''s value which was set as node data should equal the object that was retrieved from the node using TVirtualNode.GetData<T>()'); 88 | end; 89 | 90 | initialization 91 | TDUnitX.RegisterTestFixture(TVirtualStringTreeTests); 92 | 93 | end. 94 | -------------------------------------------------------------------------------- /Tests/VirtualTreeTests.pas: -------------------------------------------------------------------------------- 1 | unit VirtualTreeTests; 2 | 3 | interface 4 | 5 | uses 6 | DUnitX.TestFramework, 7 | Windows, 8 | VirtualTrees, 9 | VirtualTrees.Utils, Vcl.Graphics; 10 | 11 | type 12 | 13 | [TestFixture] 14 | TVirtualTreeUtilsTests = class(TObject) 15 | strict private 16 | fBitmap: TBitmap; 17 | function GetHDC(): HDC; 18 | public 19 | [Setup] 20 | procedure Setup; 21 | [TearDown] 22 | procedure TearDown; 23 | /// Test for helper function VirtualTrees.Utils.OrderRect() 24 | [Test] 25 | procedure TestOrderRect; 26 | /// Test for helper function VirtualTrees.Utils.ShortenString() 27 | /// <param name="pLongString">The string that should be shortened.</param> 28 | /// <param name="pWidth">The width in pixels that is availbale, based on 96dpi == 100% dpi scaling.</param> 29 | /// <param name="pShortString">The expected shortened string.</param> 30 | [Test] 31 | [TestCase('Test1', 'Abc,20,A...')] 32 | [TestCase('Test2', 'Abc,100,Abc')] 33 | [TestCase('Test3', 'Abc,10,')] 34 | [TestCase('Test4', 'A,100,A')] 35 | [TestCase('Test5', 'ii,16,ii')] 36 | procedure TestShortenString(const pLongString : string; const pWidth: Integer; const pShortString: string); 37 | end; 38 | 39 | 40 | 41 | implementation 42 | 43 | uses 44 | System.Types, 45 | System.SysUtils; 46 | 47 | type 48 | TRectHelper = record helper for TRect 49 | function ToString(): string; 50 | end; 51 | 52 | function TRectHelper.ToString: string; 53 | begin 54 | Result := Format('(%d,%d,%d,%d)', [Left, Top, Right, Bottom]); 55 | end; 56 | 57 | 58 | { TVirtualTreeUtilsTests } 59 | 60 | function TVirtualTreeUtilsTests.GetHDC: HDC; 61 | begin 62 | Exit(fBitmap.Canvas.Handle); 63 | end; 64 | 65 | procedure TVirtualTreeUtilsTests.Setup; 66 | begin 67 | fBitmap := TBitmap.Create; 68 | fBitmap.Canvas.Font.Name := 'Tahoma'; 69 | fBitmap.Canvas.Font.Size := 8; 70 | Assert.AreEqual(fBitmap.Canvas.Font.PixelsPerInch, 96, 'PixelsPerInch of font does not have th expected value of 96 dpi') 71 | end; 72 | 73 | procedure TVirtualTreeUtilsTests.TearDown; 74 | begin 75 | FreeAndNil(fBitmap); 76 | end; 77 | 78 | procedure TVirtualTreeUtilsTests.TestOrderRect; 79 | var 80 | lRectUnordered: TRect; 81 | lRectOrderedExpected: TRect; 82 | lRectOrdered: TRect; 83 | begin 84 | lRectUnordered := Rect(1,2,3,4); 85 | lRectOrderedExpected := lRectUnordered; 86 | lRectOrdered := OrderRect(lRectUnordered); 87 | Assert.AreEqual<TRect>(lRectOrderedExpected, lRectOrdered, lRectUnordered.ToString + ' should be ordered to ' + lRectOrderedExpected.ToString + ' but was ' + lRectOrdered.ToString); 88 | lRectUnordered := Rect(4,3,2,1); 89 | lRectOrderedExpected := Rect(2,1,4,3); 90 | lRectOrdered := OrderRect(lRectUnordered); 91 | Assert.AreEqual<TRect>(lRectOrderedExpected, lRectOrdered, lRectUnordered.ToString + ' should be ordered to ' + lRectOrderedExpected.ToString + ' but was ' + lRectOrdered.ToString); 92 | end; 93 | 94 | procedure TVirtualTreeUtilsTests.TestShortenString(const pLongString : string; const pWidth: Integer; const pShortString: string); 95 | var 96 | lShortenedString: string; 97 | lShortenedWidth: Integer; 98 | begin 99 | lShortenedString := ShortenString(GetHDC, pLongString, pWidth); 100 | lShortenedWidth := fBitmap.Canvas.TextWidth(lShortenedString); 101 | Assert.IsTrue(lShortenedWidth <= pWidth, Format('The shortened string "%s" has a width of %d and so does not fit into the requested %d pixles.', [lShortenedString, lShortenedWidth, pWidth])); 102 | Assert.AreEqual(lShortenedString, pShortString); 103 | end; 104 | 105 | initialization 106 | TDUnitX.RegisterTestFixture(TVirtualTreeUtilsTests); 107 | end. 108 | --------------------------------------------------------------------------------