diff --git a/.gitignore b/.gitignore index 6bf745683..3b7621d64 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ *.rsm *.stat *.map +*.d +*.o # Generated source # ################### @@ -43,3 +45,10 @@ VirtualTreeView.zip *.#00 *.pch *.skincfg +*.a +Packages/RAD Studio XE3/VirtualTreesR.lib +*.lib + +# Folder with repro projects # +############################## +/#* \ No newline at end of file diff --git a/CHANGES.txt b/CHANGES.txt index 28830aaa4..8d2e5fc10 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,4 @@ -V7.1 and later: +V7.x: https://github.com/JAM-Software/Virtual-TreeView/milestones?state=closed V7.0: (22 Jul 2018) diff --git a/Demos/Advanced/Advanced.dproj b/Demos/Advanced/Advanced.dproj index 53943e182..2eb9107cf 100644 --- a/Demos/Advanced/Advanced.dproj +++ b/Demos/Advanced/Advanced.dproj @@ -7,7 +7,7 @@ Advanced.dpr Win32 {E5FD8257-AE07-4A8D-AB79-44170493F9A2} - 19.2 + 19.5 1 diff --git a/Demos/Advanced/Advanced.dsv b/Demos/Advanced/Advanced.dsv new file mode 100644 index 000000000..5751759b5 --- /dev/null +++ b/Demos/Advanced/Advanced.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=611 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + diff --git a/Demos/Advanced/DrawTreeDemo.dfm b/Demos/Advanced/DrawTreeDemo.dfm index a19e169e7..7b909b4a4 100644 --- a/Demos/Advanced/DrawTreeDemo.dfm +++ b/Demos/Advanced/DrawTreeDemo.dfm @@ -1,25 +1,24 @@ object DrawTreeForm: TDrawTreeForm Left = 544 Top = 320 - Width = 726 - Height = 513 + ClientHeight = 475 + ClientWidth = 714 Color = clBtnFace Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'Trebuchet MS' Font.Style = [] - OldCreateOrder = False OnCreate = FormCreate + OnDestroy = FormDestroy DesignSize = ( - 710 + 714 475) - PixelsPerInch = 96 TextHeight = 18 object Label7: TLabel Left = 0 Top = 0 - Width = 710 + Width = 714 Height = 61 Align = alTop AutoSize = False @@ -32,7 +31,7 @@ object DrawTreeForm: TDrawTreeForm end object Label1: TLabel Left = 4 - Top = 381 + Top = 390 Width = 247 Height = 18 Anchors = [akLeft, akBottom] @@ -40,7 +39,7 @@ object DrawTreeForm: TDrawTreeForm end object Label3: TLabel Left = 424 - Top = 381 + Top = 390 Width = 22 Height = 18 Anchors = [akLeft, akBottom] @@ -49,8 +48,8 @@ object DrawTreeForm: TDrawTreeForm object VDT1: TVirtualDrawTree Left = 10 Top = 84 - Width = 684 - Height = 278 + Width = 690 + Height = 287 Anchors = [akLeft, akTop, akRight, akBottom] AutoExpandDelay = 200 AutoScrollDelay = 200 @@ -92,6 +91,8 @@ object DrawTreeForm: TDrawTreeForm OnInitChildren = VDT1InitChildren OnInitNode = VDT1InitNode OnStateChange = VDT1StateChange + Touch.InteractiveGestures = [igPan, igPressAndTap] + Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] Columns = < item BiDiMode = bdLeftToRight @@ -113,7 +114,7 @@ object DrawTreeForm: TDrawTreeForm end object TrackBar1: TTrackBar Left = 264 - Top = 379 + Top = 388 Width = 157 Height = 21 Anchors = [akLeft, akBottom] diff --git a/Demos/Advanced/DrawTreeDemo.pas b/Demos/Advanced/DrawTreeDemo.pas index 90e37972c..7bd1006dc 100644 --- a/Demos/Advanced/DrawTreeDemo.pas +++ b/Demos/Advanced/DrawTreeDemo.pas @@ -26,7 +26,7 @@ interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, VirtualTrees, StdCtrls, {$ifdef GraphicEx} GraphicEx, {$else} JPEG, {$endif} - ImgList, ComCtrls, UITypes; + ImgList, ComCtrls, UITypes, System.ImageList; type TDrawTreeForm = class(TForm) @@ -53,6 +53,7 @@ TDrawTreeForm = class(TForm) var InitialStates: TVirtualNodeInitStates); procedure TrackBar1Change(Sender: TObject); procedure VDT1StateChange(Sender: TBaseVirtualTree; Enter, Leave: TVirtualTreeStates); + procedure FormDestroy(Sender: TObject); private FThumbSize: Integer; FExtensionsInitialized: Boolean; @@ -189,6 +190,11 @@ procedure TDrawTreeForm.FormCreate(Sender: TObject); FThumbSize := 200; end; +procedure TDrawTreeForm.FormDestroy(Sender: TObject); +begin + FreeAndNil(FExtensionList); +end; + //---------------------------------------------------------------------------------------------------------------------- function TDrawTreeForm.CanDisplay(const Name: string): Boolean; @@ -334,58 +340,60 @@ procedure TDrawTreeForm.VDT1InitNode(Sender: TBaseVirtualTree; ParentNode, Node: end else begin - Picture := TPicture.Create; Data.Display := ExtractFileName(ExcludeTrailingBackslash(Data.FullPath)); if (Data.Attributes and SFGAO_FOLDER) = 0 then - try + begin + Picture := TPicture.Create; try - Data.Image := TBitmap.Create; - Picture.LoadFromFile(Data.FullPath); - if not (Picture.Graphic is TBitmap) then - begin - // Some extra steps needed to keep non TBitmap descentants alive when - // scaling. This is needed because when accessing Picture.Bitmap all - // non-TBitmap content will simply be erased (definitly the wrong - // action, but we can't do anything to prevent this). Hence we - // must explicitly draw the graphic to a bitmap. - with Data.Image do + try + Data.Image := TBitmap.Create; + Picture.LoadFromFile(Data.FullPath); + if not (Picture.Graphic is TBitmap) then begin - Width := Picture.Width; - Height := Picture.Height; - Canvas.Draw(0, 0, Picture.Graphic); + // Some extra steps needed to keep non TBitmap descentants alive when + // scaling. This is needed because when accessing Picture.Bitmap all + // non-TBitmap content will simply be erased (definitly the wrong + // action, but we can't do anything to prevent this). Hence we + // must explicitly draw the graphic to a bitmap. + with Data.Image do + begin + Width := Picture.Width; + Height := Picture.Height; + Canvas.Draw(0, 0, Picture.Graphic); + end; + Picture.Bitmap.Assign(Data.Image); end; - Picture.Bitmap.Assign(Data.Image); - end; - RescaleImage(Picture.Bitmap, Data.Image); - - // Collect some additional image properties. - Data.Properties := Data.Properties + Format('%d x %d pixels', [Picture.Width, Picture.Height]); - case Picture.Bitmap.PixelFormat of - pf1bit: - Data.Properties := Data.Properties + ', 2 colors'; - pf4bit: - Data.Properties := Data.Properties + ', 16 colors'; - pf8bit: - Data.Properties := Data.Properties + ', 256 colors'; - pf15bit: - Data.Properties := Data.Properties + ', 32K colors'; - pf16bit: - Data.Properties := Data.Properties + ', 64K colors'; - pf24bit: - Data.Properties := Data.Properties + ', 16M colors'; - pf32bit: - Data.Properties := Data.Properties + ', 16M+ colors'; + RescaleImage(Picture.Bitmap, Data.Image); + + // Collect some additional image properties. + Data.Properties := Data.Properties + Format('%d x %d pixels', [Picture.Width, Picture.Height]); + case Picture.Bitmap.PixelFormat of + pf1bit: + Data.Properties := Data.Properties + ', 2 colors'; + pf4bit: + Data.Properties := Data.Properties + ', 16 colors'; + pf8bit: + Data.Properties := Data.Properties + ', 256 colors'; + pf15bit: + Data.Properties := Data.Properties + ', 32K colors'; + pf16bit: + Data.Properties := Data.Properties + ', 64K colors'; + pf24bit: + Data.Properties := Data.Properties + ', 16M colors'; + pf32bit: + Data.Properties := Data.Properties + ', 16M+ colors'; + end; + if Cardinal(Data.Image.Height) + 4 > TVirtualDrawTree(Sender).DefaultNodeHeight then + Sender.NodeHeight[Node] := Data.Image.Height + 4; + except + Data.Image.Free; + Data.Image := nil; end; - if Cardinal(Data.Image.Height) + 4 > TVirtualDrawTree(Sender).DefaultNodeHeight then - Sender.NodeHeight[Node] := Data.Image.Height + 4; - except - Data.Image.Free; - Data.Image := nil; - end; - finally - Picture.Free; - end; - end; + finally + Picture.Free; + end;// try..finally + end;// if + end;// else Data.Attributes := ReadAttributes(Data.FullPath); if ((Data.Attributes and SFGAO_HASSUBFOLDER) <> 0) or (((Data.Attributes and SFGAO_FOLDER) <> 0) and HasChildren(Data.FullPath)) then @@ -543,10 +551,10 @@ procedure TDrawTreeForm.VDT1InitChildren(Sender: TBaseVirtualTree; Node: PVirtua GetOpenAndClosedIcons(ChildData.FullPath, ChildData.OpenIndex, ChildData.CloseIndex); Sender.ValidateNode(Node, False); + Inc(ChildCount); end; end; until FindNext(SR) <> 0; - ChildCount := Sender.ChildCount[Node]; // finally sort node if ChildCount > 0 then diff --git a/Demos/Advanced/GeneralAbilitiesDemo.dfm b/Demos/Advanced/GeneralAbilitiesDemo.dfm index ba8211dca..f2efde679 100644 --- a/Demos/Advanced/GeneralAbilitiesDemo.dfm +++ b/Demos/Advanced/GeneralAbilitiesDemo.dfm @@ -58,7 +58,7 @@ object GeneralForm: TGeneralForm ScrollBarOptions.VerticalIncrement = 19 TabOrder = 0 TreeOptions.AnimationOptions = [toAnimatedToggle] - TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoSpanColumns, toAutoTristateTracking, toAutoHideButtons, toDisableAutoscrollOnFocus, toAutoChangeScale] + TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoSpanColumns, toAutoTristateTracking, toAutoHideButtons, toAutoChangeScale] TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toEditable, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick] TreeOptions.PaintOptions = [toHideSelection, toHotTrack, toShowButtons, toShowDropmark, toShowRoot, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toFullVertGridLines, toUseBlendedSelection] TreeOptions.SelectionOptions = [toExtendedFocus, toMiddleClickSelect, toMultiSelect, toRightClickSelect] diff --git a/Demos/Advanced/GridDemo.dfm b/Demos/Advanced/GridDemo.dfm index ae3e577da..41c6937eb 100644 --- a/Demos/Advanced/GridDemo.dfm +++ b/Demos/Advanced/GridDemo.dfm @@ -99,7 +99,7 @@ object GridForm: TGridForm TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScroll, toAutoScrollOnExpand, toAutoTristateTracking, toAutoChangeScale] TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toGridExtensions, toInitOnSave, toToggleOnDblClick, toWheelPanning] TreeOptions.PaintOptions = [toHotTrack, toShowButtons, toShowDropmark, toShowHorzGridLines, toShowVertGridLines, toUseBlendedImages] - TreeOptions.SelectionOptions = [toDisableDrawSelection, toExtendedFocus, toMiddleClickSelect, toMultiSelect, toRightClickSelect, toCenterScrollIntoView] + TreeOptions.SelectionOptions = [toDisableDrawSelection, toExtendedFocus, toMiddleClickSelect, toMultiSelect, toRightClickSelect, toCenterScrollIntoView, toExtendedFocus] WantTabs = True OnAfterCellPaint = VST5AfterCellPaint OnBeforeCellPaint = VST5BeforeCellPaint diff --git a/Demos/Interfaces/charityevents.dsv b/Demos/Interfaces/charityevents.dsv new file mode 100644 index 000000000..1dc475e91 --- /dev/null +++ b/Demos/Interfaces/charityevents.dsv @@ -0,0 +1,30 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=47 +CursorY=246 +TopLine=223 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xJbnRlcmZhY2VzXG15ZXZlbnRzLnBh +cw==] +Module=D:\Projects\Virtual-TreeView\Demos\Interfaces\myevents.pas +CursorX=6 +CursorY=26 +TopLine=13 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Interfaces\myevents.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPYmplY3RzXE1WQ1BhbmVsLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Demos\Objects\MVCPanel.pas +CursorX=21 +CursorY=74 +TopLine=52 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Objects\MVCPanel.pas + diff --git a/Demos/Minimal/Minimal.dsv b/Demos/Minimal/Minimal.dsv new file mode 100644 index 000000000..6a4237da6 --- /dev/null +++ b/Demos/Minimal/Minimal.dsv @@ -0,0 +1,20 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xNaW5pbWFsXE1haW4ucGFz] +Module=D:\Projects\Virtual-TreeView\Demos\Minimal\Main.pas +CursorX=1 +CursorY=1 +TopLine=1 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName= + diff --git a/Demos/OLE/OLE.dsv b/Demos/OLE/OLE.dsv new file mode 100644 index 000000000..68f02fe96 --- /dev/null +++ b/Demos/OLE/OLE.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPTEVcTWFpbi5wYXM=] +Module=D:\Projects\Virtual-TreeView\Demos\OLE\Main.pas +CursorX=1 +CursorY=1 +TopLine=1 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName= + diff --git a/Demos/Objects/MVCDemo.dsv b/Demos/Objects/MVCDemo.dsv new file mode 100644 index 000000000..e1eb2caf7 --- /dev/null +++ b/Demos/Objects/MVCDemo.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + diff --git a/MAKEFILE b/MAKEFILE index e10d02941..aba6f01c9 100644 --- a/MAKEFILE +++ b/MAKEFILE @@ -3,6 +3,9 @@ EMBARCADERO = $(PROGRAMFILES)\Embarcadero\RAD Studio STUDIO = $(PROGRAMFILES)\Embarcadero\Studio BDSCOMMONDIRMAIN = %PUBLIC%\Documents\Embarcadero\Studio # Default MS Build version +!IF EXIST("$(PROGRAMFILESX64)\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe") +BUILDEXE = "$(PROGRAMFILESX64)\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" +!ELSE !IF EXIST("$(PROGRAMFILES)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe") BUILDEXE = "$(PROGRAMFILES)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" !ELSE @@ -12,6 +15,7 @@ BUILDEXE = "$(PROGRAMFILES)\Microsoft Visual Studio\2019\Professional\MSBuild\Cu BUILDEXE = "$(PROGRAMFILES)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe" !ENDIF !ENDIF +!ENDIF BUILD = $(BUILDEXE) /t:Rebuild clean: @@ -50,7 +54,6 @@ _release: #Download e.g. from: ftp://ftp.info-zip.org/pub/infozip/win32/ 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 ECHO Source code zip archive "VirtualTreeView.zip" created. - ECHO !!! Please ensure that the const TVTVersion is correct or remove const!!! ECHO !!! Please add version number to ZIP file name!!! ECHO !!! Please create release at: https://github.com/Virtual-TreeView/Virtual-TreeView/releases ECHO !!! Let JAM web-team upload the file to our server at https://www.jam-software.com/virtual-treeview diff --git a/Packages/CBuilder 10.X/VirtualTreeView.groupproj b/Packages/CBuilder 10.1/VirtualTreeView.groupproj similarity index 100% rename from Packages/CBuilder 10.X/VirtualTreeView.groupproj rename to Packages/CBuilder 10.1/VirtualTreeView.groupproj diff --git a/Packages/CBuilder 10.X/VirtualTreesCD.cbproj b/Packages/CBuilder 10.1/VirtualTreesCD.cbproj similarity index 88% rename from Packages/CBuilder 10.X/VirtualTreesCD.cbproj rename to Packages/CBuilder 10.1/VirtualTreesCD.cbproj index 02f94c868..7a9a8af02 100644 --- a/Packages/CBuilder 10.X/VirtualTreesCD.cbproj +++ b/Packages/CBuilder 10.1/VirtualTreesCD.cbproj @@ -4,7 +4,7 @@ VirtualTreesCD.cpp 18.4 Release - None + VCL True Win32 1 @@ -51,7 +51,7 @@ $(BDSCOMMONDIR)\hpp\$(Platform)\ VirtualTreesCD true - ..\..\source;$(DCC_UnitSearchPath) + ..\..\Source;$(DCC_UnitSearchPath) 4108 System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) true @@ -67,7 +67,7 @@ All true ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Design\;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\..\source;$(ILINK_LibraryPath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) false true true @@ -85,19 +85,16 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -106,9 +103,6 @@ _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -228,12 +222,7 @@ True False - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - + False True diff --git a/Packages/CBuilder 10.X/VirtualTreesCD.cpp b/Packages/CBuilder 10.1/VirtualTreesCD.cpp similarity index 100% rename from Packages/CBuilder 10.X/VirtualTreesCD.cpp rename to Packages/CBuilder 10.1/VirtualTreesCD.cpp diff --git a/Packages/CBuilder 10.1/VirtualTreesCR.cbproj b/Packages/CBuilder 10.1/VirtualTreesCR.cbproj new file mode 100644 index 000000000..6fb981d57 --- /dev/null +++ b/Packages/CBuilder 10.1/VirtualTreesCR.cbproj @@ -0,0 +1,295 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 18.4 + Release + VCL + True + Win64 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 240 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + 128 + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + + + $(BDS)\Bin\BDS.EXE + true + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 9 + true + + + 9 + true + + + 3 + + + 4 + + + 0 + + + 14 + + + 15 + + + 16 + + + 16 + + + 16 + + + 17 + + + 16 + + + 17 + + + 17 + + + 13 + + + 17 + + + 17 + + + 18 + true + + + 18 + true + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder 10.X/VirtualTreesCR.cpp b/Packages/CBuilder 10.1/VirtualTreesCR.cpp similarity index 100% rename from Packages/CBuilder 10.X/VirtualTreesCR.cpp rename to Packages/CBuilder 10.1/VirtualTreesCR.cpp diff --git a/Packages/CBuilder 10.2/VirtualTreeView.groupproj b/Packages/CBuilder 10.2/VirtualTreeView.groupproj new file mode 100644 index 000000000..1250e4780 --- /dev/null +++ b/Packages/CBuilder 10.2/VirtualTreeView.groupproj @@ -0,0 +1,48 @@ + + + {85AC5363-0DD3-4B39-8709-5987A7DA817E} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/CBuilder 10.2/VirtualTreesCD.cbproj b/Packages/CBuilder 10.2/VirtualTreesCD.cbproj new file mode 100644 index 000000000..dbdaf74e5 --- /dev/null +++ b/Packages/CBuilder 10.2/VirtualTreesCD.cbproj @@ -0,0 +1,245 @@ + + + {DE1FB54C-6852-4F59-B4A5-7718E6069FE8} + VirtualTreesCD.cpp + 18.4 + Release + VCL + True + Win32 + 1 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 250 + VirtualTree CBuilder designtime package + $(BDSCOMMONDIR)\hpp\$(Platform)\ + VirtualTreesCD + true + ..\..\Source;$(DCC_UnitSearchPath) + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + -LUDesignIDE + true + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + + 3 + + + 10 + + + 5 + + + 1 + + + 4 + + + 0 + + + 9 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCD.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + False + + + 12 + + + diff --git a/Packages/CBuilder 10.2/VirtualTreesCD.cpp b/Packages/CBuilder 10.2/VirtualTreesCD.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.2/VirtualTreesCD.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.2/VirtualTreesCR.cbproj b/Packages/CBuilder 10.2/VirtualTreesCR.cbproj new file mode 100644 index 000000000..7f1e3c5cc --- /dev/null +++ b/Packages/CBuilder 10.2/VirtualTreesCR.cbproj @@ -0,0 +1,306 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 18.4 + Release + VCL + True + Win32 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 250 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + $(BDS)\Bin\BDS.EXE + true + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 3 + + + 9 + true + + + 9 + true + + + 18 + true + + + 18 + true + + + 4 + + + 0 + + + 14 + + + 15 + + + 16 + + + 16 + + + 16 + + + 17 + + + 16 + + + 17 + + + 17 + + + 13 + + + 17 + + + 17 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder 10.2/VirtualTreesCR.cpp b/Packages/CBuilder 10.2/VirtualTreesCR.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.2/VirtualTreesCR.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.3/VirtualTreeView.groupproj b/Packages/CBuilder 10.3/VirtualTreeView.groupproj new file mode 100644 index 000000000..1250e4780 --- /dev/null +++ b/Packages/CBuilder 10.3/VirtualTreeView.groupproj @@ -0,0 +1,48 @@ + + + {85AC5363-0DD3-4B39-8709-5987A7DA817E} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/CBuilder 10.3/VirtualTreesCD.cbproj b/Packages/CBuilder 10.3/VirtualTreesCD.cbproj new file mode 100644 index 000000000..bb04917c5 --- /dev/null +++ b/Packages/CBuilder 10.3/VirtualTreesCD.cbproj @@ -0,0 +1,245 @@ + + + {DE1FB54C-6852-4F59-B4A5-7718E6069FE8} + VirtualTreesCD.cpp + 18.5 + Release + VCL + True + Win32 + 1 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 260 + VirtualTree CBuilder designtime package + $(BDSCOMMONDIR)\hpp\$(Platform)\ + VirtualTreesCD + true + ..\..\Source;$(DCC_UnitSearchPath) + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + -LUDesignIDE + true + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + + 3 + + + 10 + + + 5 + + + 1 + + + 4 + + + 0 + + + 9 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCD.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + False + + + 12 + + + diff --git a/Packages/CBuilder 10.3/VirtualTreesCD.cpp b/Packages/CBuilder 10.3/VirtualTreesCD.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.3/VirtualTreesCD.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.3/VirtualTreesCR.cbproj b/Packages/CBuilder 10.3/VirtualTreesCR.cbproj new file mode 100644 index 000000000..41ca80796 --- /dev/null +++ b/Packages/CBuilder 10.3/VirtualTreesCR.cbproj @@ -0,0 +1,306 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 18.5 + Release + VCL + True + Win32 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 260 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + $(BDS)\Bin\BDS.EXE + true + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 3 + + + 9 + true + + + 9 + true + + + 18 + true + + + 18 + true + + + 4 + + + 0 + + + 14 + + + 15 + + + 16 + + + 16 + + + 16 + + + 17 + + + 16 + + + 17 + + + 17 + + + 13 + + + 17 + + + 17 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder 10.3/VirtualTreesCR.cpp b/Packages/CBuilder 10.3/VirtualTreesCR.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.3/VirtualTreesCR.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.4/VirtualTreeView.groupproj b/Packages/CBuilder 10.4/VirtualTreeView.groupproj new file mode 100644 index 000000000..1250e4780 --- /dev/null +++ b/Packages/CBuilder 10.4/VirtualTreeView.groupproj @@ -0,0 +1,48 @@ + + + {85AC5363-0DD3-4B39-8709-5987A7DA817E} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/CBuilder 10.4/VirtualTreesCD.cbproj b/Packages/CBuilder 10.4/VirtualTreesCD.cbproj new file mode 100644 index 000000000..49f917699 --- /dev/null +++ b/Packages/CBuilder 10.4/VirtualTreesCD.cbproj @@ -0,0 +1,245 @@ + + + {DE1FB54C-6852-4F59-B4A5-7718E6069FE8} + VirtualTreesCD.cpp + 19.2 + Release + VCL + True + Win32 + 1 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 270 + VirtualTree CBuilder designtime package + $(BDSCOMMONDIR)\hpp\$(Platform)\ + VirtualTreesCD + true + ..\..\Source;$(DCC_UnitSearchPath) + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + -LUDesignIDE + true + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + + 3 + + + 10 + + + 5 + + + 1 + + + 4 + + + 0 + + + 9 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCD.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + False + + + 12 + + + diff --git a/Packages/CBuilder 10.4/VirtualTreesCD.cpp b/Packages/CBuilder 10.4/VirtualTreesCD.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.4/VirtualTreesCD.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.4/VirtualTreesCR.cbproj b/Packages/CBuilder 10.4/VirtualTreesCR.cbproj new file mode 100644 index 000000000..831025114 --- /dev/null +++ b/Packages/CBuilder 10.4/VirtualTreesCR.cbproj @@ -0,0 +1,306 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 19.2 + Release + VCL + True + Win32 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 270 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + $(BDS)\Bin\BDS.EXE + true + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 3 + + + 9 + true + + + 9 + true + + + 18 + true + + + 18 + true + + + 4 + + + 0 + + + 14 + + + 15 + + + 16 + + + 16 + + + 16 + + + 17 + + + 16 + + + 17 + + + 17 + + + 13 + + + 17 + + + 17 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder 10.4/VirtualTreesCR.cpp b/Packages/CBuilder 10.4/VirtualTreesCR.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 10.4/VirtualTreesCR.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10.X/VirtualTreesCR.cbproj b/Packages/CBuilder 10.X/VirtualTreesCR.cbproj deleted file mode 100644 index 88d5a9ce2..000000000 --- a/Packages/CBuilder 10.X/VirtualTreesCR.cbproj +++ /dev/null @@ -1,814 +0,0 @@ - - - {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} - VirtualTreesCR.cpp - 18.4 - Release - VCL - True - Win64 - 3 - Package - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - - - 240 - true - VirtualTree CBuilder runtime package - $(BDSCOMMONDIR)\hpp\$(Platform) - VirtualTreesCR - Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) - $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) - true - 4108 - System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) - true - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - 6 - bpl - CppPackage - true - true - true - All - true - ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(platform);$(BDS)\lib\$(Platform)\$(Config);$(ILINK_LibraryPath) - false - true - true - 128 - - - $(BDS)\Bin\BDS.EXE - true - $(BDSINCLUDE)\windows\vcl;$(IncludePath) - C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk\;$(ILINK_LibraryPath) - true - $(BDS)\bin\default_app.manifest - 1033 - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - vclwinx;$(PackageImports) - - - $(BDSINCLUDE)\windows\vcl;$(IncludePath) - 1033 - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - vclwinx;$(PackageImports) - - - Debug\;$(IncludePath) - false - true - false - true - false - Debug - None - DEBUG - true - true - true - $(BDS)\lib\debug;$(ILINK_LibraryPath) - true - Full - true - - - _DEBUG;$(Defines) - - - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) - None - - - 1033 - NDEBUG;$(Defines) - - - 1033 - - - - 9 - true - - - 9 - true - - - 3 - - - 4 - - - 0 - - - 13 - - - 14 - - - 15 - - - 16 - - - 16 - - - 16 - - - 17 - - - 16 - - - 17 - - - 17 - - - 17 - - - 17 - - - 18 - true - - - 18 - true - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - - CPlusPlusBuilder.Personality.12 - CppPackage - - - - VirtualTreesCR.cpp - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 4108 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - - - - - - - False - - False - - True - False - - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - False - True - True - False - - - - True - True - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCR.bpl - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - library\lib\armeabi - 1 - - - - - library\lib\mips - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable - 1 - - - - - res\values - 1 - - - - - res\drawable - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - res\drawable-ldpi - 1 - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - - - res\drawable-xhdpi - 1 - - - - - res\drawable-small - 1 - - - - - res\drawable-normal - 1 - - - - - res\drawable-large - 1 - - - - - res\drawable-xlarge - 1 - - - - - 1 - - - 1 - - - 0 - - - - - 1 - .framework - - - 0 - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - 0 - .bpl - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - - - - 1 - - - 1 - - - 1 - - - - - - - Contents\Resources - 1 - - - - - library\lib\armeabi-v7a - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 0 - - - - - 1 - - - 1 - - - - - Assets - 1 - - - Assets - 1 - - - - - Assets - 1 - - - Assets - 1 - - - - - - - - - - - - - 12 - - - - diff --git a/Packages/CBuilder 10/VirtualTreesCD.cbproj b/Packages/CBuilder 10/VirtualTreesCD.cbproj index d05aaceff..c4a8b5eb7 100644 --- a/Packages/CBuilder 10/VirtualTreesCD.cbproj +++ b/Packages/CBuilder 10/VirtualTreesCD.cbproj @@ -4,7 +4,7 @@ VirtualTreesCD.cpp 18.0 Release - None + VCL True Win32 1 @@ -13,21 +13,6 @@ true - - true - Base - true - - - true - Base - true - - - true - Base - true - true Base @@ -43,18 +28,6 @@ Base true - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - true Cfg_1 @@ -66,18 +39,6 @@ Base true - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - true Cfg_2 @@ -87,10 +48,10 @@ 230 VirtualTree CBuilder designtime package - ..\..\source\hpp\$(Platform)\$(Config) + $(BDSCOMMONDIR)\hpp\$(Platform)\ VirtualTreesCD true - ..\..\source;$(DCC_UnitSearchPath) + ..\..\Source;$(DCC_UnitSearchPath) 4108 System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) true @@ -106,29 +67,11 @@ All true ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\RAD Studio XE5\;..\..\Design\;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\..\source;$(ILINK_LibraryPath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) false true true - - android-support-v4.dex.jar;apk-expansion.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - Debug - package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=preferExternal;largeHeap=False;theme=TitleBar;hardwareAccelerated=true - false - - - $(MSBuildProjectName) - iPhoneAndiPad - CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user - Debug - - - $(MSBuildProjectName) - iPhoneAndiPad - CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user - Debug - true true @@ -141,44 +84,26 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true - - true - - - true - _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None - - true - - - true - 1033 NDEBUG;$(Defines) @@ -199,21 +124,12 @@ 4 - - 7 - - - 8 - 0 9 - - 6 - Cfg_2 Base @@ -305,12 +221,7 @@ True False - - Embarcadero C++Builder-Package für Office 2000-Server - Embarcadero C++Builder-Package für Office XP-Server - Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver - Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server - + False True @@ -319,10 +230,6 @@ - False - False - False - False True False diff --git a/Packages/CBuilder 10/VirtualTreesCD.cpp b/Packages/CBuilder 10/VirtualTreesCD.cpp index d4fbb1610..37aacb559 100644 --- a/Packages/CBuilder 10/VirtualTreesCD.cpp +++ b/Packages/CBuilder 10/VirtualTreesCD.cpp @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- -#pragma hdrstop #include +#pragma hdrstop #pragma package(smart_init) //--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 10/VirtualTreesCR.cbproj b/Packages/CBuilder 10/VirtualTreesCR.cbproj index 44d09d510..e63865818 100644 --- a/Packages/CBuilder 10/VirtualTreesCR.cbproj +++ b/Packages/CBuilder 10/VirtualTreesCR.cbproj @@ -13,21 +13,6 @@ true - - true - Base - true - - - true - Base - true - - - true - Base - true - true Base @@ -43,18 +28,6 @@ Base true - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - true Cfg_1 @@ -66,18 +39,6 @@ Base true - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - true Cfg_2 @@ -112,33 +73,16 @@ All true ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(platform);$(BDS)\lib\$(Platform)\$(Config);$(ILINK_LibraryPath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) false true true - - - android-support-v4.dex.jar;apk-expansion.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - Debug - package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=preferExternal;largeHeap=False;theme=TitleBar;hardwareAccelerated=true - false - - - $(MSBuildProjectName) - iPhoneAndiPad - CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user - Debug - - - $(MSBuildProjectName) - iPhoneAndiPad - CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;CFBundleResourceSpecification=ResourceRules.plist;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user - Debug + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) true $(BDSINCLUDE)\windows\vcl;$(IncludePath) - C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk\;$(ILINK_LibraryPath) true $(BDS)\bin\default_app.manifest 1033 @@ -150,44 +94,26 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true - - true - - - true - _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None - - true - - - true - 1033 NDEBUG;$(Defines) @@ -206,18 +132,15 @@ 4 - - 7 - - - 8 - 0 - - 6 - + + 14 + + + 15 + 16 @@ -230,27 +153,24 @@ 17 + + 16 + 17 17 + + 13 + 17 17 - - 17 - - - 17 - - - 17 - Cfg_2 Base @@ -342,12 +262,7 @@ True False - - Embarcadero C++Builder-Package für Office 2000-Server - Embarcadero C++Builder-Package für Office XP-Server - Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver - Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server - + False True @@ -356,435 +271,11 @@ - False - False - False - False True True - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCR.bpl - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - - Contents\Resources - 1 - - - - - classes - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - Contents\MacOS - 0 - - - 1 - - - - - library\lib\mips - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 0 - - - 1 - - - 1 - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 1 - - - - - 0 - - - 1 - .framework - - - - - 1 - - - 1 - - - 1 - - - - - library\lib\x86 - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - - library\lib\armeabi - 1 - - - - - 0 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-normal - 1 - - - - - res\drawable-xhdpi - 1 - - - - - res\drawable-large - 1 - - - - - 1 - - - 1 - - - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable-hdpi - 1 - - - - - - - 1 - - - 1 - - - 1 - - - - - res\values - 1 - - - - - res\drawable-small - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - - - res\drawable - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - library\lib\armeabi-v7a - 1 - - - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-ldpi - 1 - - - - - 0 - .dll;.bpl - - - 1 - .dylib - - - - - - - - - - 12 - diff --git a/Packages/CBuilder 10/VirtualTreesCR.cpp b/Packages/CBuilder 10/VirtualTreesCR.cpp index d4fbb1610..37aacb559 100644 --- a/Packages/CBuilder 10/VirtualTreesCR.cpp +++ b/Packages/CBuilder 10/VirtualTreesCR.cpp @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- -#pragma hdrstop #include +#pragma hdrstop #pragma package(smart_init) //--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 11/VirtualTreeView.groupproj b/Packages/CBuilder 11/VirtualTreeView.groupproj new file mode 100644 index 000000000..1250e4780 --- /dev/null +++ b/Packages/CBuilder 11/VirtualTreeView.groupproj @@ -0,0 +1,48 @@ + + + {85AC5363-0DD3-4B39-8709-5987A7DA817E} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/CBuilder 11/VirtualTreesCD.cbproj b/Packages/CBuilder 11/VirtualTreesCD.cbproj new file mode 100644 index 000000000..5977ac6c0 --- /dev/null +++ b/Packages/CBuilder 11/VirtualTreesCD.cbproj @@ -0,0 +1,245 @@ + + + {DE1FB54C-6852-4F59-B4A5-7718E6069FE8} + VirtualTreesCD.cpp + 19.5 + Release + VCL + True + Win32 + 1 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 280 + VirtualTree CBuilder designtime package + $(BDSCOMMONDIR)\hpp\$(Platform)\ + VirtualTreesCD + true + ..\..\Source;$(DCC_UnitSearchPath) + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + -LUDesignIDE + true + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + + 3 + + + 10 + + + 5 + + + 1 + + + 4 + + + 0 + + + 9 + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCD.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + False + + + 12 + + + diff --git a/Packages/CBuilder 11/VirtualTreesCD.cpp b/Packages/CBuilder 11/VirtualTreesCD.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 11/VirtualTreesCD.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder 11/VirtualTreesCR.cbproj b/Packages/CBuilder 11/VirtualTreesCR.cbproj new file mode 100644 index 000000000..9e0bea586 --- /dev/null +++ b/Packages/CBuilder 11/VirtualTreesCR.cbproj @@ -0,0 +1,306 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 19.5 + Release + VCL + True + Win32 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 280 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;uxtheme.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + 128 + None + .\$(Platform)\$(Config) + true + .\$(Platform)\$(Config) + + + $(BDS)\Bin\BDS.EXE + true + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + 1033 + + + 1033 + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 3 + + + 9 + true + + + 9 + true + + + 18 + true + + + 18 + true + + + 4 + + + 0 + + + 14 + + + 15 + + + 16 + + + 16 + + + 16 + + + 17 + + + 16 + + + 17 + + + 17 + + + 13 + + + 17 + + + 17 + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder 11/VirtualTreesCR.cpp b/Packages/CBuilder 11/VirtualTreesCR.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder 11/VirtualTreesCR.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder XE5/VirtualTreesCD.cbproj b/Packages/CBuilder XE5/VirtualTreesCD.cbproj index 5968e74ba..abe0aaf46 100644 --- a/Packages/CBuilder XE5/VirtualTreesCD.cbproj +++ b/Packages/CBuilder XE5/VirtualTreesCD.cbproj @@ -13,11 +13,6 @@ true - - true - Base - true - true Base @@ -51,11 +46,12 @@ true + 190 VirtualTree CBuilder designtime package - ..\..\source + $(BDSCOMMONDIR)\hpp\$(Platform)\ VirtualTreesCD true - ..\..\source;$(DCC_UnitSearchPath) + ..\..\Source;$(DCC_UnitSearchPath) 4108 System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) true @@ -70,43 +66,33 @@ true All true - ..\..\..\..\EMBT\VirtualTree\Design\;..\..\..\..\SourceForge\VirtualTree\Packages\CBuilder XE7\;..\..\Source\;..\RAD Studio XE5\;..\..\Design\;..\..\Common\;$(CG_BOOST_ROOT)\boost\tr1\tr1;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(CG_BOOST_ROOT);$(IncludePath) - ..\..\..\..\EMBT\VirtualTree\Design\;..\..\..\..\SourceForge\VirtualTree\Packages\CBuilder XE7\;..\RAD Studio XE5\;..\..\Design\;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\..\source;$(ILINK_LibraryPath) + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) false true true - - Debug - package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=preferExternal;largeHeap=False;theme=TitleBar;hardwareAccelerated=true - false - - $(BDSINCLUDE)\windows\vcl;$(IncludePath) true $(BDS)\bin\default_app.manifest 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - $(BDSINCLUDE)\windows\vcl;$(IncludePath) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -115,9 +101,6 @@ _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -140,24 +123,12 @@ 4 - - 7 - - - 10 - - - 8 - 0 9 - - 6 - Cfg_2 Base @@ -249,12 +220,7 @@ True False - - Embarcadero C++Builder-Package für Office 2000-Server - Embarcadero C++Builder-Package für Office XP-Server - Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver - Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server - + False True @@ -263,357 +229,11 @@ - False - False - False True False - - - - true - - - - - true - - - true - - - - - true - - - - - VirtualTreesCD.bpl - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - - - 1 - - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - res\drawable-normal - 1 - - - - - library\lib\x86 - 1 - - - - - 1 - - - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - library\lib\mips - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 0 - - - - - 1 - .framework - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - - - res\drawable - 1 - - - - - Contents\Resources - 1 - - - - - - 1 - - - 1 - - - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 0 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 1 - - - - - res\drawable-ldpi - 1 - - - - - res\values - 1 - - - - - 1 - - - 1 - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - - - 1 - - - - - - - - - 12 - diff --git a/Packages/CBuilder XE5/VirtualTreesCR.cbproj b/Packages/CBuilder XE5/VirtualTreesCR.cbproj index 40983eb57..617c28d6c 100644 --- a/Packages/CBuilder XE5/VirtualTreesCR.cbproj +++ b/Packages/CBuilder XE5/VirtualTreesCR.cbproj @@ -52,9 +52,10 @@ true + 190 true VirtualTree CBuilder runtime package - ..\..\source + $(BDSCOMMONDIR)\hpp\$(Platform) VirtualTreesCR Shell32.dll;$(ILINK_DelayLoadDll) $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) @@ -71,15 +72,16 @@ true All true - $(CG_BOOST_ROOT);$(CG_BOOST_ROOT)\boost\tr1\tr1;..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(platform);$(BDS)\lib\$(Platform)\$(Config);$(ILINK_LibraryPath) + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) false true true + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) $(BDSINCLUDE)\windows\vcl;$(IncludePath) - C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk\;$(ILINK_LibraryPath) true $(BDS)\bin\default_app.manifest 1033 @@ -91,19 +93,16 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -112,9 +111,6 @@ _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -125,7 +121,7 @@ 1033 - + 17 true @@ -135,18 +131,15 @@ 4 - - 7 - - - 8 - 0 - - 6 - + + 8 + + + 9 + 15 @@ -159,27 +152,24 @@ 16 + + 17 + 9 12 + + 13 + 13 14 - - 8 - - - 9 - - - 17 - Cfg_2 Base @@ -271,13 +261,7 @@ True False - - Embarcadero C++Builder-Package für Office 2000-Server - Embarcadero C++Builder-Package für Office XP-Server - Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automatisierungsserver - Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server - Datei C:\Program Files (x86)\Raize\CS5\Bin\CodeSiteExpressPkg_Design210.bpl nicht gefunden - + False True @@ -286,331 +270,11 @@ - False - False True True - - - - - - - - - - - - - - - - - - - - - - - - - VirtualTreesCR.bpl - - - - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - - - 1 - - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - res\drawable-normal - 1 - - - - - library\lib\x86 - 1 - - - - - 1 - - - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - library\lib\mips - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 0 - - - - - 1 - .framework - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - - - res\drawable - 1 - - - - - Contents\Resources - 1 - - - - - - 1 - - - 1 - - - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 0 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 1 - - - - - res\drawable-ldpi - 1 - - - - - res\values - 1 - - - - - 1 - - - 1 - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - - - 1 - - - - - - - - - 12 - diff --git a/Packages/CBuilder XE6/VirtualTreeView.groupproj b/Packages/CBuilder XE6/VirtualTreeView.groupproj new file mode 100644 index 000000000..b7a78ae36 --- /dev/null +++ b/Packages/CBuilder XE6/VirtualTreeView.groupproj @@ -0,0 +1,48 @@ + + + {90943296-FDFA-4C80-A99D-237F570C4F54} + + + + + + + VirtualTreesCR.cbproj + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/CBuilder XE6/VirtualTreesCD.cbproj b/Packages/CBuilder XE6/VirtualTreesCD.cbproj new file mode 100644 index 000000000..5d0c47450 --- /dev/null +++ b/Packages/CBuilder XE6/VirtualTreesCD.cbproj @@ -0,0 +1,239 @@ + + + {DE1FB54C-6852-4F59-B4A5-7718E6069FE8} + VirtualTreesCD.cpp + 15.4 + Release + VCL + True + Win32 + 1 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 200 + VirtualTree CBuilder designtime package + $(BDSCOMMONDIR)\hpp\$(Platform)\ + VirtualTreesCD + true + ..\..\Source;$(DCC_UnitSearchPath) + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + -LUDesignIDE + true + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) + false + true + true + + + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + + + None + + + 1033 + NDEBUG;$(Defines) + + + + 9 + + + 10 + + + 5 + + + 1 + + + 4 + + + 0 + + + 9 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCD.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + False + + + 12 + + + diff --git a/Packages/CBuilder XE6/VirtualTreesCD.cpp b/Packages/CBuilder XE6/VirtualTreesCD.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder XE6/VirtualTreesCD.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder XE6/VirtualTreesCR.cbproj b/Packages/CBuilder XE6/VirtualTreesCR.cbproj new file mode 100644 index 000000000..4927f88c3 --- /dev/null +++ b/Packages/CBuilder XE6/VirtualTreesCR.cbproj @@ -0,0 +1,280 @@ + + + {FE6B0D67-74B6-4E30-8AED-CB2B3E77A51F} + VirtualTreesCR.cpp + 15.4 + Release + VCL + True + Win32 + 3 + Package + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 200 + true + VirtualTree CBuilder runtime package + $(BDSCOMMONDIR)\hpp\$(Platform) + VirtualTreesCR + Shell32.dll;$(ILINK_DelayLoadDll) + $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) + true + 4108 + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + 6 + bpl + CppPackage + true + true + true + All + true + ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) + false + true + true + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + true + $(BDS)\bin\default_app.manifest + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + $(BDSINCLUDE)\windows\vcl;$(IncludePath) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + true + false + true + false + None + DEBUG + true + true + true + true + Full + true + + + _DEBUG;$(Defines) + + + None + + + 1033 + NDEBUG;$(Defines) + + + 1033 + + + + 17 + true + + + 1 + + + 4 + + + 0 + + + 8 + + + 9 + + + 15 + + + 10 + + + 11 + + + 16 + + + 17 + + + 9 + + + 12 + + + 13 + + + 13 + + + 14 + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + CPlusPlusBuilder.Personality.12 + CppPackage + + + + VirtualTreesCR.cpp + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 4108 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + False + + False + + True + False + + + + False + True + True + False + + + + True + True + + + 12 + + + diff --git a/Packages/CBuilder XE6/VirtualTreesCR.cpp b/Packages/CBuilder XE6/VirtualTreesCR.cpp new file mode 100644 index 000000000..9b654ce81 --- /dev/null +++ b/Packages/CBuilder XE6/VirtualTreesCR.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/Packages/CBuilder XE7/VirtualTreesCD.cbproj b/Packages/CBuilder XE7/VirtualTreesCD.cbproj index a022c44ff..2499563f1 100644 --- a/Packages/CBuilder XE7/VirtualTreesCD.cbproj +++ b/Packages/CBuilder XE7/VirtualTreesCD.cbproj @@ -46,11 +46,12 @@ true + 210 VirtualTree CBuilder designtime package - ..\..\Source + $(BDSCOMMONDIR)\hpp\$(Platform)\ VirtualTreesCD true - ..\..\source;$(DCC_UnitSearchPath) + ..\..\Source;$(DCC_UnitSearchPath) 4108 System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) true @@ -66,14 +67,12 @@ All true ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;..\RAD Studio XE5\;..\..\Design\;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\..\source;$(ILINK_LibraryPath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) false true true - C:\Program Files (x86)\Embarcadero\Studio\16.0\lib\win32\release\psdk\;$(ILINK_LibraryPath) - $(BDSINCLUDE)\windows\vcl;$(IncludePath) true true $(BDS)\bin\default_app.manifest @@ -81,7 +80,6 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - $(BDSINCLUDE)\windows\vcl;$(IncludePath) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) @@ -91,19 +89,16 @@ true true off - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -119,9 +114,6 @@ _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -129,7 +121,7 @@ NDEBUG;$(Defines) - + 16 true @@ -148,39 +140,9 @@ 0 - - 5 - - - 6 - - - 7 - - - 8 - - - 10 - - - 11 - - - 12 - - - 13 - - - 14 - - - 15 - - - 16 - + + 9 + Cfg_2 Base @@ -272,12 +234,7 @@ True False - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - + False True @@ -289,381 +246,8 @@ True False - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCD.tds - true - - - - - true - - - - - VirtualTreesCD.bpl - true - - - - - true - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - - - 1 - - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - res\drawable-normal - 1 - - - - - library\lib\x86 - 1 - - - - - 1 - - - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - library\lib\mips - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 0 - - - - - 1 - .framework - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - - - res\drawable - 1 - - - - - Contents\Resources - 1 - - - - - - 1 - - - 1 - - - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 0 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 1 - - - - - res\drawable-ldpi - 1 - - - - - res\values - 1 - - - - - 1 - - - 1 - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - - - 1 - - - - - - - - - - - 12 - diff --git a/Packages/CBuilder XE7/VirtualTreesCR.cbproj b/Packages/CBuilder XE7/VirtualTreesCR.cbproj index 10a0ae752..e5dae0462 100644 --- a/Packages/CBuilder XE7/VirtualTreesCR.cbproj +++ b/Packages/CBuilder XE7/VirtualTreesCR.cbproj @@ -58,9 +58,10 @@ true + 210 true VirtualTree CBuilder runtime package - ..\..\Source + $(BDSCOMMONDIR)\hpp\$(Platform) VirtualTreesCR Shell32.dll;$(ILINK_DelayLoadDll) $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) @@ -78,23 +79,23 @@ All true ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(platform);$(BDS)\lib\$(Platform)\$(Config);$(ILINK_LibraryPath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) false true true + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) $(BDS)\Bin\BDS.EXE true $(BDSINCLUDE)\windows\vcl;$(IncludePath) - C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk\;$(ILINK_LibraryPath) true $(BDS)\bin\default_app.manifest 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - ..\..\Source $(BDSINCLUDE)\windows\vcl;$(IncludePath) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) @@ -105,19 +106,16 @@ true true off - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -126,7 +124,6 @@ true true true - ..\..\Source off 1033 true @@ -136,10 +133,6 @@ 1033 - ..\..\Source - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -150,7 +143,7 @@ 1033 - + 9 true @@ -160,18 +153,15 @@ 4 - - 7 - - - 8 - 0 - - 6 - + + 14 + + + 15 + 16 @@ -184,27 +174,24 @@ 17 + + 16 + 17 17 + + 13 + 17 17 - - 17 - - - 17 - - - 17 - Cfg_2 Base @@ -296,10 +283,7 @@ True False - - (untitled) - (untitled) - + False True @@ -311,391 +295,8 @@ True True - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCR.bpl - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - res\drawable-normal - 1 - - - - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - - - library\lib\mips - 1 - - - - - library\lib\x86 - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - - 1 - - - 1 - - - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - 1 - - - 1 - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - res\drawable - 1 - - - - - 1 - .framework - - - 0 - - - - - 1 - - - 1 - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable - 1 - - - - - - Contents\Resources - 1 - - - - - 1 - - - 1 - - - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 0 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 1 - - - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - res\values - 1 - - - - - res\drawable-ldpi - 1 - - - - - 1 - - - 1 - - - - - res\drawable-hdpi - 1 - - - - - res\drawable-mdpi - 1 - - - - - 1 - - - - - - - - - - - 12 - diff --git a/Packages/CBuilder XE8/VirtualTreesCD.cbproj b/Packages/CBuilder XE8/VirtualTreesCD.cbproj index d6a132138..b79a3427d 100644 --- a/Packages/CBuilder XE8/VirtualTreesCD.cbproj +++ b/Packages/CBuilder XE8/VirtualTreesCD.cbproj @@ -46,11 +46,12 @@ true + 220 VirtualTree CBuilder designtime package - ..\..\Source + $(BDSCOMMONDIR)\hpp\$(Platform)\ VirtualTreesCD true - ..\..\source;$(DCC_UnitSearchPath) + ..\..\Source;$(DCC_UnitSearchPath) 4108 System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) true @@ -66,14 +67,12 @@ All true ..\..\Source\;..\..\Design\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;..\RAD Studio XE5\;..\..\Design\;$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\..\source;$(ILINK_LibraryPath) + ..\..\Design\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;..\..\Source;$(ILINK_LibraryPath) false true true - C:\Program Files (x86)\Embarcadero\Studio\16.0\lib\win32\release\psdk\;$(ILINK_LibraryPath) - $(BDSINCLUDE)\windows\vcl;$(IncludePath) true true $(BDS)\bin\default_app.manifest @@ -81,7 +80,6 @@ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - $(BDSINCLUDE)\windows\vcl;$(IncludePath) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) @@ -91,19 +89,16 @@ true true off - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -119,9 +114,6 @@ _DEBUG;$(Defines) - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -129,7 +121,7 @@ NDEBUG;$(Defines) - + 16 true @@ -148,39 +140,9 @@ 0 - - 5 - - - 6 - - - 7 - - - 8 - - - 10 - - - 11 - - - 12 - - - 13 - - - 14 - - - 15 - - - 16 - + + 9 + Cfg_2 Base @@ -272,12 +234,7 @@ True False - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - + False True @@ -289,419 +246,8 @@ True False - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCD.tds - true - - - - - true - - - - - VirtualTreesCD.bpl - true - - - - - true - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - - - 1 - - - 1 - - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - res\drawable-normal - 1 - - - - - library\lib\x86 - 1 - - - - - 1 - - - 1 - - - 1 - - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - library\lib\mips - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 0 - - - - - 1 - .framework - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable - 1 - - - - - Contents\Resources - 1 - - - - - - 1 - - - 1 - - - 1 - - - - - library\lib\armeabi-v7a - 1 - - - 1 - - - 0 - - - 1 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-ldpi - 1 - - - - - res\values - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - - - 1 - - - - - - - - - - - 12 - diff --git a/Packages/CBuilder XE8/VirtualTreesCR.cbproj b/Packages/CBuilder XE8/VirtualTreesCR.cbproj index ff8f87f71..c3d04a999 100644 --- a/Packages/CBuilder XE8/VirtualTreesCR.cbproj +++ b/Packages/CBuilder XE8/VirtualTreesCR.cbproj @@ -58,9 +58,10 @@ true + 220 true VirtualTree CBuilder runtime package - ..\..\Source + $(BDSCOMMONDIR)\hpp\$(Platform) VirtualTreesCR Shell32.dll;$(ILINK_DelayLoadDll) $(BDS)\lib;$(BDS)\lib\$(Platform);$(BDS)\lib\$(Platform)\$(Config);$(DCC_UnitSearchPath) @@ -78,24 +79,23 @@ All true ..\..\Source\;$(BDS)\include;$(BDS)\include\windows;$(BDS)\include\windows\rtl;$(BDS)\include\windows\vcl;$(BDS)\include\windows\crtl;$(BDS)\include\windows\sdk;$(IncludePath) - ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(platform);$(BDS)\lib\$(Platform)\$(Config);$(ILINK_LibraryPath) + ..\..\Source\;$(BDS)\lib;$(BDS)\lib\$(Platform)\$(Config);$(BDS)\lib\$(Platform)\release\psdk;$(ILINK_LibraryPath) false true true + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) $(BDS)\Bin\BDS.EXE true $(BDSINCLUDE)\windows\vcl;$(IncludePath) - C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk\;$(ILINK_LibraryPath) true $(BDS)\bin\default_app.manifest 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - $(BDSCOMMONDIR)\DCP\$(Platform) - $(BdsCommponDir)\Dcp\$(Platform) $(BDSINCLUDE)\windows\vcl;$(IncludePath) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) @@ -106,19 +106,16 @@ true true off - Debug\;$(IncludePath) false true false true false - Debug None DEBUG true true true - $(BDS)\lib\debug;$(ILINK_LibraryPath) true Full true @@ -127,7 +124,6 @@ true true true - ..\..\Source off 1033 true @@ -137,10 +133,6 @@ 1033 - ..\..\Source - Release\;$(IncludePath) - Release - $(BDS)\lib\release;$(ILINK_LibraryPath) None @@ -151,7 +143,7 @@ 1033 - + 9 true @@ -161,18 +153,15 @@ 4 - - 7 - - - 8 - 0 - - 6 - + + 14 + + + 15 + 16 @@ -185,27 +174,24 @@ 17 + + 16 + 17 17 + + 13 + 17 17 - - 17 - - - 17 - - - 17 - Cfg_2 Base @@ -297,12 +283,7 @@ True False - - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - + False True @@ -314,429 +295,8 @@ True True - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - VirtualTreesCR.bpl - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - - - - res\drawable-normal - 1 - - - - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - 1 - .dylib - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - - - library\lib\mips - 1 - - - - - library\lib\x86 - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-xhdpi - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - .dylib - - - 0 - .dll;.bpl - - - - - res\drawable - 1 - - - - - 1 - .framework - - - 0 - - - - - 1 - - - 1 - - - 0 - - - - - res\drawable-small - 1 - - - - - - 1 - - - Contents\MacOS - 0 - - - - - classes - 1 - - - - - - 1 - - - 1 - - - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable - 1 - - - - - - Contents\Resources - 1 - - - - - 1 - - - 1 - - - 1 - - - - - library\lib\armeabi-v7a - 1 - - - 1 - - - 0 - - - 1 - - - 1 - - - 1 - - - - - library\lib\armeabi - 1 - - - - - res\drawable-large - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - res\values - 1 - - - - - res\drawable-ldpi - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-hdpi - 1 - - - - - res\drawable-mdpi - 1 - - - - - 1 - - - - - - - - - - - 12 - diff --git a/Packages/RAD Studio 10.4+/VirtualTreesR.dpk b/Packages/RAD Studio 10.4+/VirtualTreesR.dpk index 803b984d9..5a4ddd6a1 100644 --- a/Packages/RAD Studio 10.4+/VirtualTreesR.dpk +++ b/Packages/RAD Studio 10.4+/VirtualTreesR.dpk @@ -44,6 +44,7 @@ contains VirtualTrees.ClipBoard in '..\..\Source\VirtualTrees.ClipBoard.pas', VirtualTrees.Actions in '..\..\Source\VirtualTrees.Actions.pas', VirtualTrees.Export in '..\..\Source\VirtualTrees.Export.pas', - VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas'; + VirtualTrees.Utils in '..\..\Source\VirtualTrees.Utils.pas', + VirtualTrees.Types in '..\..\Source\VirtualTrees.Types.pas'; end. diff --git a/Packages/RAD Studio 10.4+/VirtualTreesR.dproj b/Packages/RAD Studio 10.4+/VirtualTreesR.dproj index 8ab954a0e..cca88a0ee 100644 --- a/Packages/RAD Studio 10.4+/VirtualTreesR.dproj +++ b/Packages/RAD Studio 10.4+/VirtualTreesR.dproj @@ -76,6 +76,7 @@ + Base diff --git a/Packages/RAD Studio 10.4+/VirtualTreesR.dsv b/Packages/RAD Studio 10.4+/VirtualTreesR.dsv new file mode 100644 index 000000000..521437eae --- /dev/null +++ b/Packages/RAD Studio 10.4+/VirtualTreesR.dsv @@ -0,0 +1,20 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPYmplY3RzXE1WQ1R5cGVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Demos\Objects\MVCTypes.pas +CursorX=36 +CursorY=194 +TopLine=172 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Objects\MVCTypes.pas + diff --git a/README.md b/README.md index b4d981bfe..d05cef65f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Virtual Treeview is a Delphi treeview control built from ground up. Many years o I don't use C++ Builder and my experience with it is very limited. This makes it difficult to take care about bugs that are reported in C++ Builder and to maintain the C++ Builder packages. I would be great if someone would volunteer to do this. ### Downloads -**V7.5** official release for **RAD Studio XE3 to 10.4.2 Rio**: [JAM Software](https://www.jam-software.com/virtual-treeview/VirtualTreeView.zip) ([Changes](https://github.com/JAM-Software/Virtual-TreeView/issues?q=is%3Aissue+milestone%3AV7.5+is%3Aclosed)) +**V7.6.x** official release for **RAD Studio XE3 to 10.4.2 Rio**: [JAM Software](https://www.jam-software.com/virtual-treeview/VirtualTreeView.zip) An experimental **FireMonkey** port can be found here: [livius2/Virtual-TreeView](https://github.com/livius2/Virtual-TreeView) diff --git a/Source/VirtualTrees.BaseTree.pas b/Source/VirtualTrees.BaseTree.pas new file mode 100644 index 000000000..e96872d61 --- /dev/null +++ b/Source/VirtualTrees.BaseTree.pas @@ -0,0 +1,8 @@ +unit VirtualTrees.BaseTree; +// Dummy unit to make migeration between V7 and V8 easier. + +interface + +implementation + +end. \ No newline at end of file diff --git a/Source/VirtualTrees.StyleHooks.pas b/Source/VirtualTrees.StyleHooks.pas index e62b1d3ce..a6ad04995 100644 --- a/Source/VirtualTrees.StyleHooks.pas +++ b/Source/VirtualTrees.StyleHooks.pas @@ -28,6 +28,9 @@ interface {$WARN UNSAFE_TYPE OFF} {$WARN UNSAFE_CAST OFF} {$WARN UNSAFE_CODE OFF} +{$if CompilerVersion < 34} + {$DEFINE NOT_USE_VCL_STYLEHOOK} // Do not use inherited style hook but own code in this class. Needed for older Delphi versions 10.3 and below +{$ifend} uses Winapi.Windows, @@ -46,6 +49,7 @@ interface type // XE2+ VCL Style TVclStyleScrollBarsHook = class(TScrollingStyleHook) + {$ifdef NOT_USE_VCL_STYLEHOOK} strict private type {$REGION 'TVclStyleScrollBarWindow'} TScrollWindow = class(TWinControl) @@ -63,43 +67,50 @@ TScrollWindow = class(TWinControl) {$ENDREGION} private FHorzScrollWnd: TScrollWindow; - FLeftMouseButtonDown: Boolean; + FLeftButtonDown: Boolean; FVertScrollWnd: TScrollWindow; - function NCMousePosToClient(const P: TPoint): TPoint; - - procedure CMUpdateVclStyleScrollbars(var Msg: TMessage); message CM_UPDATE_VCLSTYLE_SCROLLBARS; procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND; procedure WMKeyDown(var Msg: TMessage); message WM_KEYDOWN; procedure WMKeyUp(var Msg: TMessage); message WM_KEYUP; procedure WMLButtonDown(var Msg: TWMMouse); message WM_LBUTTONDOWN; procedure WMLButtonUp(var Msg: TWMMouse); message WM_LBUTTONUP; procedure WMNCLButtonDown(var Msg: TWMMouse); message WM_NCLBUTTONDOWN; - procedure WMNCMouseMove(var Msg: TWMMouse); message WM_NCMOUSEMOVE; + procedure WMNCLButtonDblClk(var Msg: TWMMouse); message WM_NCLBUTTONDBLCLK; procedure WMNCLButtonUp(var Msg: TWMMouse); message WM_NCLBUTTONUP; procedure WMNCPaint(var Msg: TMessage); message WM_NCPAINT; - procedure WMMouseMove(var Msg: TWMMouse); message WM_MOUSEMOVE; - procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL; procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL; procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL; - procedure WMCaptureChanged(var Msg: TMessage); message WM_CAPTURECHANGED; - procedure WMNCLButtonDblClk(var Msg: TWMMouse); message WM_NCLBUTTONDBLCLK; procedure WMSize(var Msg: TMessage); message WM_SIZE; procedure WMMove(var Msg: TMessage); message WM_MOVE; procedure WMPosChanged(var Msg: TMessage); message WM_WINDOWPOSCHANGED; - + procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL; + procedure WMCaptureChanged(var Msg: TMessage); message WM_CAPTURECHANGED; procedure InitScrollBars; + procedure WMNCMouseMove(var Msg: TWMMouse); message WM_NCMOUSEMOVE; + procedure WMMouseMove(var Msg: TWMMouse); message WM_MOUSEMOVE; + function NCMousePosToClient(const P: TPoint): TPoint; + function PointInTreeHeader(const P: TPoint): Boolean; + {$endif} + private + procedure CMUpdateVclStyleScrollbars(var Msg: TMessage); message CM_UPDATE_VCLSTYLE_SCROLLBARS; protected procedure CalcScrollBarsRect; virtual; + procedure UpdateScroll;{$if CompilerVersion >= 34}override;{$ifend} + {$ifdef NOT_USE_VCL_STYLEHOOK} + procedure MouseLeave; override; procedure DrawHorzScrollBar(DC: HDC); virtual; procedure DrawVertScrollBar(DC: HDC); virtual; - procedure MouseLeave; override; procedure PaintScroll; override; - function PointInTreeHeader(const P: TPoint): Boolean; - procedure UpdateScroll;{$if CompilerVersion >= 34}override;{$ifend} + property HorzScrollWnd: TScrollWindow read FHorzScrollWnd; + property VertScrollWnd: TScrollWindow read FVertScrollWnd; + property LeftButtonDown: Boolean read FLeftButtonDown; + {$ifend} public constructor Create(AControl: TWinControl); override; + {$ifdef NOT_USE_VCL_STYLEHOOK} destructor Destroy; override; + {$ifend} /// Draws an expand arrow like used in the RAD Studio IDE. /// The code is not yet dpi-aware. class procedure DrawExpandArrow(pBitmap: TBitmap; pExpanded: Boolean; pColor: TColor = clNone); @@ -118,6 +129,11 @@ TScrollWindow = class(TWinControl) VTStyleServicesFunc: TVTStyleServicesFunc = nil; +/// Wrapper function for styles services that handles differences between RAD Studio 10.4 and older versions, +/// as well as the case if these controls are used inside the IDE. +function VTStyleServices(AControl: TControl = nil): TCustomStyleServices; + + implementation uses @@ -126,6 +142,17 @@ implementation System.Types, VirtualTrees; +function VTStyleServices(AControl: TControl = nil): TCustomStyleServices; +begin + if Assigned(VTStyleServicesFunc) then + Result := VTStyleServicesFunc(AControl) + else + Result := Vcl.Themes.StyleServices{$if CompilerVersion >= 34}(AControl){$ifend}; +end; + +//---------------------------------------------------------------------------------------------------------------------- + + type TBaseVirtualTreeCracker = class(TBaseVirtualTree) end; @@ -141,10 +168,13 @@ procedure TVclStyleScrollBarsHook.CalcScrollBarsRect(); BarInfo: TScrollBarInfo; Ret: BOOL; begin + if not Assigned(VertScrollWnd) then // Might happen, when FInitingScrollBars is set, so InitScrollBars did not yet initialize the members + Exit; + BarInfo.cbSize := SizeOf(BarInfo); Ret := GetScrollBarInfo(Handle, Integer(OBJID_VSCROLL), BarInfo); - FVertScrollWnd.Visible := (seBorder in Control.StyleElements) and Ret and (not (STATE_SYSTEM_INVISIBLE and BarInfo.rgstate[0] <> 0)); - FVertScrollWnd.Enabled := FVertScrollWnd.Visible and (not (STATE_SYSTEM_UNAVAILABLE and BarInfo.rgstate[0] <> 0)); + VertScrollWnd.Visible := (seBorder in Control.StyleElements) and Ret and (not (STATE_SYSTEM_INVISIBLE and BarInfo.rgstate[0] <> 0)); + VertScrollWnd.Enabled := VertScrollWnd.Visible and (not (STATE_SYSTEM_UNAVAILABLE and BarInfo.rgstate[0] <> 0)); end; procedure CalcHorizontalRects; @@ -152,59 +182,36 @@ procedure TVclStyleScrollBarsHook.CalcScrollBarsRect(); BarInfo: TScrollBarInfo; Ret: BOOL; begin + if not Assigned(HorzScrollWnd) then // Might happen, when FInitingScrollBars is set, so InitScrollBars did not yet initialize the members + Exit; + BarInfo.cbSize := SizeOf(BarInfo); Ret := GetScrollBarInfo(Handle, Integer(OBJID_HSCROLL), BarInfo); - FHorzScrollWnd.Visible := (seBorder in Control.StyleElements) and Ret and (not (STATE_SYSTEM_INVISIBLE and BarInfo.rgstate[0] <> 0)); - FHorzScrollWnd.Enabled := FHorzScrollWnd.Visible and (not (STATE_SYSTEM_UNAVAILABLE and BarInfo.rgstate[0] <> 0)); + HorzScrollWnd.Visible := (seBorder in Control.StyleElements) and Ret and (not (STATE_SYSTEM_INVISIBLE and BarInfo.rgstate[0] <> 0)); + HorzScrollWnd.Enabled := HorzScrollWnd.Visible and (not (STATE_SYSTEM_UNAVAILABLE and BarInfo.rgstate[0] <> 0)); end; begin - if ((FVertScrollWnd <> nil) and not FVertScrollWnd.HandleAllocated) or - ((FHorzScrollWnd <> nil) and not FHorzScrollWnd.HandleAllocated) then - begin // Fixes issue #390 - if FVertScrollWnd <> nil then - FreeAndNil(FVertScrollWnd); - if FHorzScrollWnd <> nil then - FreeAndNil(FHorzScrollWnd); - - InitScrollBars; - end; - CalcVerticalRects; CalcHorizontalRects; end; +//---------------------------------------------------------------------------------------------------------------------- + constructor TVclStyleScrollBarsHook.Create(AControl: TWinControl); begin inherited; - InitScrollBars; - + {$ifdef NOT_USE_VCL_STYLEHOOK} VertSliderState := tsThumbBtnVertNormal; VertUpState := tsArrowBtnUpNormal; VertDownState := tsArrowBtnDownNormal; HorzSliderState := tsThumbBtnHorzNormal; HorzUpState := tsArrowBtnLeftNormal; HorzDownState := tsArrowBtnRightNormal; + {$ifend} end; -procedure TVclStyleScrollBarsHook.InitScrollBars; -begin - FVertScrollWnd := TScrollWindow.CreateParented(GetParent(Control.Handle)); - FVertScrollWnd.StyleHook := Self; - FVertScrollWnd.Vertical := True; - - FHorzScrollWnd := TScrollWindow.CreateParented(GetParent(Control.Handle)); - FHorzScrollWnd.StyleHook := Self; -end; - -destructor TVclStyleScrollBarsHook.Destroy; -begin - FVertScrollWnd.StyleHook := nil; - FreeAndNil(FVertScrollWnd); - FHorzScrollWnd.StyleHook := nil; - FreeAndNil(FHorzScrollWnd); - inherited; -end; +//---------------------------------------------------------------------------------------------------------------------- class procedure TVclStyleScrollBarsHook.DrawExpandArrow(pBitmap: TBitmap; pExpanded: Boolean; pColor: TColor); const @@ -232,6 +239,120 @@ class procedure TVclStyleScrollBarsHook.DrawExpandArrow(pBitmap: TBitmap; pExpan canvas.Polyline(ArrowPoints[pExpanded]); end; +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.UpdateScroll; +var + R: TRect; + HeaderHeight: Integer; + PaddingSize: Integer; + BorderSize: Integer; +begin + if VertScrollWnd = nil then + InitScrollBars(); + + HeaderHeight := 0; + if (hoVisible in TBaseVirtualTree(Control).Header.Options) then + Inc(HeaderHeight, TBaseVirtualTree(Control).Header.Height); + + PaddingSize := TBaseVirtualTreeCracker(Control).BorderWidth; + if TBaseVirtualTreeCracker(Control).BevelKind <> bkNone then + begin + if TBaseVirtualTreeCracker(Control).BevelInner <> bvNone then + Inc(PaddingSize, TBaseVirtualTreeCracker(Control).BevelWidth); + if TBaseVirtualTreeCracker(Control).BevelOuter <> bvNone then + Inc(PaddingSize, TBaseVirtualTreeCracker(Control).BevelWidth); + end; + + BorderSize := 0; + if HasBorder then + Inc(BorderSize, GetSystemMetrics(SM_CYEDGE)); + + if ((VertScrollWnd <> nil) and not VertScrollWnd.HandleAllocated) or + ((HorzScrollWnd <> nil) and not HorzScrollWnd.HandleAllocated) then + begin // Fixes issue #390 + if VertScrollWnd <> nil then + FreeAndNil({$ifdef NOT_USE_VCL_STYLEHOOK}FVertScrollWnd{$else}VertScrollWnd{$ifend}); + if HorzScrollWnd <> nil then + FreeAndNil({$ifdef NOT_USE_VCL_STYLEHOOK}FHorzScrollWnd{$else}HorzScrollWnd{$ifend}); + + InitScrollBars; + end; + + // VertScrollBarWindow + if Control.HandleAllocated then + begin + if VertScrollWnd.Visible then + begin + R := VertScrollRect; + if Control.UseRightToLeftScrollBar then + OffsetRect(R, -R.Left + BorderSize, 0); + + ShowWindow(VertScrollWnd.Handle, SW_SHOW); + SetWindowPos(VertScrollWnd.Handle, HWND_TOP, + Control.Left + R.Left + PaddingSize, + Control.Top + R.Top + HeaderHeight + PaddingSize, + R.Width, + Control.Height - HeaderHeight - ((PaddingSize + BorderSize) * 2), // <> R.Height + SWP_SHOWWINDOW); + end else + ShowWindow(VertScrollWnd.Handle, SW_HIDE); + end;// if FVertScrollWnd + + // HorzScrollBarWindow + if Control.HandleAllocated then + begin + if HorzScrollWnd.Visible then + begin + R := HorzScrollRect; + if Control.UseRightToLeftScrollBar then + OffsetRect(R, VertScrollRect.Width, 0); + + ShowWindow(HorzScrollWnd.Handle, SW_SHOW); + SetWindowPos(HorzScrollWnd.Handle, HWND_TOP, + Control.Left + R.Left + PaddingSize, + Control.Top + R.Top + HeaderHeight + PaddingSize, + R.Width, R.Height, SWP_SHOWWINDOW); + end else + ShowWindow(HorzScrollWnd.Handle, SW_HIDE); + end;// if FHorzScrollWnd + // ScrollBarWindow Visible/Enabled Control + CalcScrollBarsRect; + +end; + +procedure TVclStyleScrollBarsHook.CMUpdateVclStyleScrollbars(var Msg: TMessage); +begin + CalcScrollBarsRect; + PaintScroll; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +{$ifdef NOT_USE_VCL_STYLEHOOK} + +function TVclStyleScrollBarsHook.NCMousePosToClient(const P: TPoint): TPoint; +begin + Result := P; + ScreenToClient(Handle, Result); + if HasBorder then + begin + if HasClientEdge then + Result.Offset(2, 2) + else + Result.Offset(1, 1); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TVclStyleScrollBarsHook.PointInTreeHeader(const P: TPoint): Boolean; +begin + Result := TBaseVirtualTree(Control).Header.InHeader(P); +end; + +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.DrawHorzScrollBar(DC: HDC); var B: TBitmap; @@ -241,7 +362,7 @@ procedure TVclStyleScrollBarsHook.DrawHorzScrollBar(DC: HDC); if ((Handle = 0) or (DC = 0)) then Exit; - if FHorzScrollWnd.Visible and StyleServices.Available and (seBorder in Control.StyleElements) then + if HorzScrollWnd.Visible and StyleServices.Available and (seBorder in Control.StyleElements) then begin B := TBitmap.Create; try @@ -253,23 +374,23 @@ procedure TVclStyleScrollBarsHook.DrawHorzScrollBar(DC: HDC); R.Left := HorzUpButtonRect.Right; R.Right := HorzDownButtonRect.Left; Details := StyleServices.GetElementDetails(tsUpperTrackHorzNormal); - StyleServices.DrawElement(B.Canvas.Handle, Details, R{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, R{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FHorzScrollWnd.Enabled then + if HorzScrollWnd.Enabled then Details := StyleServices.GetElementDetails(HorzSliderState); - StyleServices.DrawElement(B.Canvas.Handle, Details, HorzSliderRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, HorzSliderRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FHorzScrollWnd.Enabled then + if HorzScrollWnd.Enabled then Details := StyleServices.GetElementDetails(HorzUpState) else Details := StyleServices.GetElementDetails(tsArrowBtnLeftDisabled); - StyleServices.DrawElement(B.Canvas.Handle, Details, HorzUpButtonRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, HorzUpButtonRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FHorzScrollWnd.Enabled then + if HorzScrollWnd.Enabled then Details := StyleServices.GetElementDetails(HorzDownState) else Details := StyleServices.GetElementDetails(tsArrowBtnRightDisabled); - StyleServices.DrawElement(B.Canvas.Handle, Details, HorzDownButtonRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, HorzDownButtonRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); R := HorzScrollRect; MoveWindowOrg(B.Canvas.Handle, R.Left, R.Top); @@ -280,6 +401,8 @@ procedure TVclStyleScrollBarsHook.DrawHorzScrollBar(DC: HDC); end; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.DrawVertScrollBar(DC: HDC); var B: TBitmap; @@ -289,39 +412,39 @@ procedure TVclStyleScrollBarsHook.DrawVertScrollBar(DC: HDC); if ((Handle = 0) or (DC = 0)) then Exit; - if FVertScrollWnd.Visible and StyleServices.Available and (seBorder in Control.StyleElements) then + if VertScrollWnd.Visible and StyleServices.Available and (seBorder in Control.StyleElements) then begin B := TBitmap.Create; try R := VertScrollRect; B.Width := R.Width; - B.Height := FVertScrollWnd.Height; // <> R.Height + B.Height := VertScrollWnd.Height; // <> R.Height MoveWindowOrg(B.Canvas.Handle, -R.Left, -R.Top); R.Bottom := B.Height + R.Top; Details := StyleServices.GetElementDetails(tsUpperTrackVertNormal); - StyleServices.DrawElement(B.Canvas.Handle, Details, R {$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, R {$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); R.Top := VertUpButtonRect.Bottom; R.Bottom := VertDownButtonRect.Top; Details := StyleServices.GetElementDetails(tsUpperTrackVertNormal); - StyleServices.DrawElement(B.Canvas.Handle, Details, R{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, R{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FVertScrollWnd.Enabled then + if VertScrollWnd.Enabled then Details := StyleServices.GetElementDetails(VertSliderState); - StyleServices.DrawElement(B.Canvas.Handle, Details, VertSliderRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, VertSliderRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FVertScrollWnd.Enabled then + if VertScrollWnd.Enabled then Details := StyleServices.GetElementDetails(VertUpState) else Details := StyleServices.GetElementDetails(tsArrowBtnUpDisabled); - StyleServices.DrawElement(B.Canvas.Handle, Details, VertUpButtonRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, VertUpButtonRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); - if FVertScrollWnd.Enabled then + if VertScrollWnd.Enabled then Details := StyleServices.GetElementDetails(VertDownState) else Details := StyleServices.GetElementDetails(tsArrowBtnDownDisabled); - StyleServices.DrawElement(B.Canvas.Handle, Details, VertDownButtonRect{$IF CompilerVersion >= 34}, nil, FVertScrollWnd.CurrentPPI{$IFEND}); + StyleServices.DrawElement(B.Canvas.Handle, Details, VertDownButtonRect{$IF CompilerVersion >= 34}, nil, VertScrollWnd.CurrentPPI{$IFEND}); R := VertScrollRect; MoveWindowOrg(B.Canvas.Handle, R.Left, R.Top); @@ -332,6 +455,8 @@ procedure TVclStyleScrollBarsHook.DrawVertScrollBar(DC: HDC); end; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.MouseLeave; begin inherited; @@ -356,107 +481,11 @@ procedure TVclStyleScrollBarsHook.MouseLeave; PaintScroll; end; -function TVclStyleScrollBarsHook.NCMousePosToClient(const P: TPoint): TPoint; -begin - Result := P; - ScreenToClient(Handle, Result); - if HasBorder then - begin - if HasClientEdge then - Result.Offset(2, 2) - else - Result.Offset(1, 1); - end; -end; - -procedure TVclStyleScrollBarsHook.PaintScroll; -begin - if FVertScrollWnd.HandleAllocated then - begin - FVertScrollWnd.Repaint; - RedrawWindow(FVertScrollWnd.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); // Fixes issue #698 - end; - if FHorzScrollWnd.HandleAllocated then - begin - FHorzScrollWnd.Repaint; - RedrawWindow(FHorzScrollWnd.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); // Fixes issue #698 - end; -end; - -function TVclStyleScrollBarsHook.PointInTreeHeader(const P: TPoint): Boolean; -begin - Result := TBaseVirtualTree(Control).Header.InHeader(P); -end; - -procedure TVclStyleScrollBarsHook.UpdateScroll; -var - R: TRect; - HeaderHeight: Integer; - PaddingSize: Integer; - BorderSize: Integer; -begin - // ScrollBarWindow Visible/Enabled Control - CalcScrollBarsRect; - - HeaderHeight := 0; - if (hoVisible in TBaseVirtualTree(Control).Header.Options) then - Inc(HeaderHeight, TBaseVirtualTree(Control).Header.Height); - - PaddingSize := TBaseVirtualTreeCracker(Control).BorderWidth; - if TBaseVirtualTreeCracker(Control).BevelKind <> bkNone then - begin - if TBaseVirtualTreeCracker(Control).BevelInner <> bvNone then - Inc(PaddingSize, TBaseVirtualTreeCracker(Control).BevelWidth); - if TBaseVirtualTreeCracker(Control).BevelOuter <> bvNone then - Inc(PaddingSize, TBaseVirtualTreeCracker(Control).BevelWidth); - end; - - BorderSize := 0; - if HasBorder then - Inc(BorderSize, GetSystemMetrics(SM_CYEDGE)); - - // VertScrollBarWindow - if Control.HandleAllocated then - begin - if FVertScrollWnd.Visible then - begin - R := VertScrollRect; - if Control.UseRightToLeftScrollBar then - OffsetRect(R, -R.Left + BorderSize, 0); - - ShowWindow(FVertScrollWnd.Handle, SW_SHOW); - SetWindowPos(FVertScrollWnd.Handle, HWND_TOP, - Control.Left + R.Left + PaddingSize, - Control.Top + R.Top + HeaderHeight + PaddingSize, - R.Width, - Control.Height - HeaderHeight - ((PaddingSize + BorderSize) * 2), // <> R.Height - SWP_SHOWWINDOW); - end else - ShowWindow(FVertScrollWnd.Handle, SW_HIDE); - end;// if FVertScrollWnd - - // HorzScrollBarWindow - if Control.HandleAllocated then - begin - if FHorzScrollWnd.Visible then - begin - R := HorzScrollRect; - if Control.UseRightToLeftScrollBar then - OffsetRect(R, VertScrollRect.Width, 0); - - ShowWindow(FHorzScrollWnd.Handle, SW_SHOW); - SetWindowPos(FHorzScrollWnd.Handle, HWND_TOP, - Control.Left + R.Left + PaddingSize, - Control.Top + R.Top + HeaderHeight + PaddingSize, - R.Width, R.Height, SWP_SHOWWINDOW); - end else - ShowWindow(FHorzScrollWnd.Handle, SW_HIDE); - end;// if FHorzScrollWnd -end; +//---------------------------------------------------------------------------------------------------------------------- procedure TVclStyleScrollBarsHook.WMCaptureChanged(var Msg: TMessage); begin - if FVertScrollWnd.Visible and FVertScrollWnd.Enabled then + if VertScrollWnd.Visible and VertScrollWnd.Enabled then begin if VertUpState = tsArrowBtnUpPressed then begin @@ -471,7 +500,7 @@ procedure TVclStyleScrollBarsHook.WMCaptureChanged(var Msg: TMessage); end; end; - if FHorzScrollWnd.Visible and FHorzScrollWnd.Enabled then + if HorzScrollWnd.Visible and HorzScrollWnd.Enabled then begin if HorzUpState = tsArrowBtnLeftPressed then begin @@ -490,34 +519,57 @@ procedure TVclStyleScrollBarsHook.WMCaptureChanged(var Msg: TMessage); Handled := True; end; -procedure TVclStyleScrollBarsHook.WMEraseBkgnd(var Msg: TWMEraseBkgnd); +//---------------------------------------------------------------------------------------------------------------------- + +destructor TVclStyleScrollBarsHook.Destroy; begin - Handled := True; + if Assigned(FVertScrollWnd) then + begin + FVertScrollWnd.StyleHook := nil; + FreeAndNil(FVertScrollWnd); + end; + if Assigned(FHorzScrollWnd) then + begin + FHorzScrollWnd.StyleHook := nil; + FreeAndNil(FHorzScrollWnd); + end; + inherited; end; -procedure TVclStyleScrollBarsHook.WMHScroll(var Msg: TWMHScroll); +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMEraseBkgnd(var Msg: TWMEraseBkgnd); begin - CallDefaultProc(TMessage(Msg)); - if not (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then - UpdateScroll - else - PaintScroll; Handled := True; end; -procedure TVclStyleScrollBarsHook.CMUpdateVclStyleScrollbars(var Msg: TMessage); +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.PaintScroll; begin - CalcScrollBarsRect; - PaintScroll; + if FVertScrollWnd.HandleAllocated then + begin + FVertScrollWnd.Repaint; + RedrawWindow(FVertScrollWnd.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); // Fixes issue #698 + end; + if FHorzScrollWnd.HandleAllocated then + begin + FHorzScrollWnd.Repaint; + RedrawWindow(FHorzScrollWnd.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); // Fixes issue #698 + end; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMKeyDown(var Msg: TMessage); begin CallDefaultProc(TMessage(Msg)); - UpdateScroll; + PaintScroll; Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMKeyUp(var Msg: TMessage); begin CallDefaultProc(TMessage(Msg)); @@ -525,6 +577,8 @@ procedure TVclStyleScrollBarsHook.WMKeyUp(var Msg: TMessage); Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMLButtonDown(var Msg: TWMMouse); begin CallDefaultProc(TMessage(Msg)); @@ -532,6 +586,20 @@ procedure TVclStyleScrollBarsHook.WMLButtonDown(var Msg: TWMMouse); Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.InitScrollBars; +begin + FVertScrollWnd := TScrollWindow.CreateParented(GetParent(Control.Handle)); + FVertScrollWnd.StyleHook := Self; + FVertScrollWnd.Vertical := True; + + FHorzScrollWnd := TScrollWindow.CreateParented(GetParent(Control.Handle)); + FHorzScrollWnd.StyleHook := Self; +end; + +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMLButtonUp(var Msg: TWMMouse); var P: TPoint; @@ -540,12 +608,12 @@ procedure TVclStyleScrollBarsHook.WMLButtonUp(var Msg: TWMMouse); ScreenToClient(Handle, P); if not PointInTreeHeader(P) then begin - if FVertScrollWnd.Visible then + if VertScrollWnd.Visible then begin if VertSliderState = tsThumbBtnVertPressed then begin PostMessage(Handle, WM_VSCROLL, WPARAM(UInt32(SmallPoint(SB_ENDSCROLL, 0))), 0); - FLeftMouseButtonDown := False; + FLeftButtonDown := False; VertSliderState := tsThumbBtnVertNormal; PaintScroll; Handled := True; @@ -563,7 +631,7 @@ procedure TVclStyleScrollBarsHook.WMLButtonUp(var Msg: TWMMouse); if HorzSliderState = tsThumbBtnHorzPressed then begin PostMessage(Handle, WM_HSCROLL, WPARAM(UInt32(SmallPoint(SB_ENDSCROLL, 0))), 0); - FLeftMouseButtonDown := False; + FLeftButtonDown := False; HorzSliderState := tsThumbBtnHorzNormal; PaintScroll; Handled := True; @@ -577,109 +645,10 @@ procedure TVclStyleScrollBarsHook.WMLButtonUp(var Msg: TWMMouse); end; PaintScroll; end; - FLeftMouseButtonDown := False; -end; - -procedure TVclStyleScrollBarsHook.WMMouseMove(var Msg: TWMMouse); -var - SF: TScrollInfo; - OverrideMax: Integer; -begin - if VertSliderState = tsThumbBtnVertPressed then - begin - SF.fMask := SIF_ALL; - SF.cbSize := SizeOf(SF); - GetScrollInfo(Handle, SB_VERT, SF); - - OverrideMax := SF.nMax; - if 0 < SF.nPage then - OverrideMax := SF.nMax - Integer(SF.nPage) + 1; - ScrollPos := System.Math.EnsureRange(ListPos + (OverrideMax - SF.nMin) * ((Mouse.CursorPos.Y - PrevScrollPos) / (VertTrackRect.Height - VertSliderRect.Height)), - SF.nMin, OverrideMax); - SF.fMask := SIF_POS; - SF.nPos := Round(ScrollPos); - SetScrollInfo(Handle, SB_VERT, SF, False); - PostMessage(Handle, WM_VSCROLL, WPARAM(UInt32(SmallPoint(SB_THUMBPOSITION, Min(SF.nPos, High(SmallInt))))), 0); - - PaintScroll; - Handled := True; - Exit; - end else - if VertSliderState = tsThumbBtnVertHot then - begin - VertSliderState := tsThumbBtnVertNormal; - PaintScroll; - end; - - if HorzSliderState = tsThumbBtnHorzPressed then - begin - SF.fMask := SIF_ALL; - SF.cbSize := SizeOf(SF); - GetScrollInfo(Handle, SB_HORZ, SF); - - OverrideMax := SF.nMax; - if 0 < SF.nPage then - OverrideMax := SF.nMax - Integer(SF.nPage) + 1; - ScrollPos := System.Math.EnsureRange(ListPos + (OverrideMax - SF.nMin) * ((Mouse.CursorPos.X - PrevScrollPos) / (HorzTrackRect.Width - HorzSliderRect.Width)), - SF.nMin, OverrideMax); - SF.fMask := SIF_POS; - SF.nPos := Round(ScrollPos); - SetScrollInfo(Handle, SB_HORZ, SF, False); - PostMessage(Handle, WM_HSCROLL, WPARAM(UInt32(SmallPoint(SB_THUMBPOSITION, Min(SF.nPos, High(SmallInt))))), 0); - - PaintScroll; - Handled := True; - Exit; - end else - if HorzSliderState = tsThumbBtnHorzHot then - begin - HorzSliderState := tsThumbBtnHorzNormal; - PaintScroll; - end; - - if (HorzUpState <> tsArrowBtnLeftPressed) and (HorzUpState = tsArrowBtnLeftHot) then - begin - HorzUpState := tsArrowBtnLeftNormal; - PaintScroll; - end; - - if (HorzDownState <> tsArrowBtnRightPressed) and (HorzDownState = tsArrowBtnRightHot) then - begin - HorzDownState := tsArrowBtnRightNormal; - PaintScroll; - end; - - if (VertUpState <> tsArrowBtnUpPressed) and (VertUpState = tsArrowBtnUpHot) then - begin - VertUpState := tsArrowBtnUpNormal; - PaintScroll; - end; - - if (VertDownState <> tsArrowBtnDownPressed) and (VertDownState = tsArrowBtnDownHot) then - begin - VertDownState := tsArrowBtnDownNormal; - PaintScroll; - end; - - CallDefaultProc(TMessage(Msg)); - if FLeftMouseButtonDown then - PaintScroll; - Handled := True; -end; - -procedure TVclStyleScrollBarsHook.WMMouseWheel(var Msg: TMessage); -begin - CallDefaultProc(TMessage(Msg)); - CalcScrollBarsRect; - PaintScroll; - Handled := True; -end; - -procedure TVclStyleScrollBarsHook.WMNCLButtonDblClk(var Msg: TWMMouse); -begin - WMNCLButtonDown(Msg); + FLeftButtonDown := False; end; +//---------------------------------------------------------------------------------------------------------------------- procedure TVclStyleScrollBarsHook.WMNCLButtonDown(var Msg: TWMMouse); var P: TPoint; @@ -688,11 +657,11 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonDown(var Msg: TWMMouse); P := NCMousePosToClient(Point(Msg.XPos, Msg.YPos)); if not PointInTreeHeader(P) then begin - if FVertScrollWnd.Visible and FVertScrollWnd.Enabled then + if VertScrollWnd.Visible and VertScrollWnd.Enabled then begin if PtInRect(VertSliderRect, P) then begin - FLeftMouseButtonDown := True; + FLeftButtonDown := True; SF.fMask := SIF_ALL; SF.cbSize := SizeOf(SF); GetScrollInfo(Handle, SB_VERT, SF); @@ -715,7 +684,7 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonDown(var Msg: TWMMouse); begin if PtInRect(HorzSliderRect, P) then begin - FLeftMouseButtonDown := True; + FLeftButtonDown := True; SF.fMask := SIF_ALL; SF.cbSize := SizeOf(SF); GetScrollInfo(Handle, SB_HORZ, SF); @@ -733,11 +702,15 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonDown(var Msg: TWMMouse); else if PtInRect(HorzUpButtonRect, P) then HorzUpState := tsArrowBtnLeftPressed; end; - FLeftMouseButtonDown := True; + FLeftButtonDown := True; PaintScroll; end; end; +//---------------------------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------------------------------------- + + procedure TVclStyleScrollBarsHook.WMNCLButtonUp(var Msg: TWMMouse); var P: TPoint; @@ -745,11 +718,11 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonUp(var Msg: TWMMouse); P := NCMousePosToClient(Point(Msg.XPos, Msg.YPos)); if not PointInTreeHeader(P) then begin - if FVertScrollWnd.Visible and FVertScrollWnd.Enabled then + if VertScrollWnd.Visible and VertScrollWnd.Enabled then begin if VertSliderState = tsThumbBtnVertPressed then begin - FLeftMouseButtonDown := False; + FLeftButtonDown := False; VertSliderState := tsThumbBtnVertNormal; PaintScroll; Handled := True; @@ -771,7 +744,7 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonUp(var Msg: TWMMouse); begin if HorzSliderState = tsThumbBtnHorzPressed then begin - FLeftMouseButtonDown := False; + FLeftButtonDown := False; HorzSliderState := tsThumbBtnHorzNormal; PaintScroll; Handled := True; @@ -797,6 +770,132 @@ procedure TVclStyleScrollBarsHook.WMNCLButtonUp(var Msg: TWMMouse); Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMNCLButtonDblClk(var Msg: TWMMouse); +begin + WMNCLButtonDown(Msg); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMNCPaint(var Msg: TMessage); +begin + //if (tsWindowCreating in TBaseVirtualTree(Control).TreeStates) then + // UpdateScrollBarWindow; + //inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMHScroll(var Msg: TWMHScroll); +begin + CallDefaultProc(TMessage(Msg)); + PaintScroll; + Handled := True; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMMouseWheel(var Msg: TMessage); +begin + CallDefaultProc(TMessage(Msg)); + CalcScrollBarsRect; + PaintScroll; + Handled := True; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TVclStyleScrollBarsHook.WMMouseMove(var Msg: TWMMouse); +var + SF: TScrollInfo; + OverrideMax: Integer; +begin + if VertSliderState = tsThumbBtnVertPressed then + begin + SF.fMask := SIF_ALL; + SF.cbSize := SizeOf(SF); + GetScrollInfo(Handle, SB_VERT, SF); + + OverrideMax := SF.nMax; + if 0 < SF.nPage then + OverrideMax := SF.nMax - Integer(SF.nPage) + 1; + ScrollPos := System.Math.EnsureRange(ListPos + (OverrideMax - SF.nMin) * ((Mouse.CursorPos.Y - PrevScrollPos) / (VertTrackRect.Height - VertSliderRect.Height)), + SF.nMin, OverrideMax); + SF.fMask := SIF_POS; + SF.nPos := Round(ScrollPos); + SetScrollInfo(Handle, SB_VERT, SF, False); + PostMessage(Handle, WM_VSCROLL, WPARAM(UInt32(SmallPoint(SB_THUMBPOSITION, Min(SF.nPos, High(SmallInt))))), 0); + + PaintScroll; + Handled := True; + Exit; + end else + if VertSliderState = tsThumbBtnVertHot then + begin + VertSliderState := tsThumbBtnVertNormal; + PaintScroll; + end; + + if HorzSliderState = tsThumbBtnHorzPressed then + begin + SF.fMask := SIF_ALL; + SF.cbSize := SizeOf(SF); + GetScrollInfo(Handle, SB_HORZ, SF); + + OverrideMax := SF.nMax; + if 0 < SF.nPage then + OverrideMax := SF.nMax - Integer(SF.nPage) + 1; + ScrollPos := System.Math.EnsureRange(ListPos + (OverrideMax - SF.nMin) * ((Mouse.CursorPos.X - PrevScrollPos) / (HorzTrackRect.Width - HorzSliderRect.Width)), + SF.nMin, OverrideMax); + SF.fMask := SIF_POS; + SF.nPos := Round(ScrollPos); + SetScrollInfo(Handle, SB_HORZ, SF, False); + PostMessage(Handle, WM_HSCROLL, WPARAM(UInt32(SmallPoint(SB_THUMBPOSITION, Min(SF.nPos, High(SmallInt))))), 0); + + PaintScroll; + Handled := True; + Exit; + end else + if HorzSliderState = tsThumbBtnHorzHot then + begin + HorzSliderState := tsThumbBtnHorzNormal; + PaintScroll; + end; + + if (HorzUpState <> tsArrowBtnLeftPressed) and (HorzUpState = tsArrowBtnLeftHot) then + begin + HorzUpState := tsArrowBtnLeftNormal; + PaintScroll; + end; + + if (HorzDownState <> tsArrowBtnRightPressed) and (HorzDownState = tsArrowBtnRightHot) then + begin + HorzDownState := tsArrowBtnRightNormal; + PaintScroll; + end; + + if (VertUpState <> tsArrowBtnUpPressed) and (VertUpState = tsArrowBtnUpHot) then + begin + VertUpState := tsArrowBtnUpNormal; + PaintScroll; + end; + + if (VertDownState <> tsArrowBtnDownPressed) and (VertDownState = tsArrowBtnDownHot) then + begin + VertDownState := tsArrowBtnDownNormal; + PaintScroll; + end; + + CallDefaultProc(TMessage(Msg)); + if LeftButtonDown then + PaintScroll; + Handled := True; +end; + +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMNCMouseMove(var Msg: TWMMouse); var P: TPoint; @@ -814,7 +913,7 @@ procedure TVclStyleScrollBarsHook.WMNCMouseMove(var Msg: TWMMouse); end; MustUpdateScroll := False; - if FVertScrollWnd.Visible and FVertScrollWnd.Enabled then + if VertScrollWnd.Visible and VertScrollWnd.Enabled then begin B := PtInRect(VertSliderRect, P); if B and (VertSliderState = tsThumbBtnVertNormal) then @@ -853,7 +952,7 @@ procedure TVclStyleScrollBarsHook.WMNCMouseMove(var Msg: TWMMouse); end; end; - if FHorzScrollWnd.Visible and FHorzScrollWnd.Enabled then + if HorzScrollWnd.Visible and HorzScrollWnd.Enabled then begin B := PtInRect(HorzSliderRect, P); if B and (HorzSliderState = tsThumbBtnHorzNormal) then @@ -896,12 +995,7 @@ procedure TVclStyleScrollBarsHook.WMNCMouseMove(var Msg: TWMMouse); PaintScroll; end; -procedure TVclStyleScrollBarsHook.WMNCPaint(var Msg: TMessage); -begin - //if (tsWindowCreating in TBaseVirtualTree(Control).TreeStates) then - // UpdateScrollBarWindow; - //inherited; -end; +//---------------------------------------------------------------------------------------------------------------------- procedure TVclStyleScrollBarsHook.WMSize(var Msg: TMessage); begin @@ -911,6 +1005,8 @@ procedure TVclStyleScrollBarsHook.WMSize(var Msg: TMessage); Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMMove(var Msg: TMessage); begin CallDefaultProc(TMessage(Msg)); @@ -922,21 +1018,24 @@ procedure TVclStyleScrollBarsHook.WMMove(var Msg: TMessage); Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMPosChanged(var Msg: TMessage); begin WMMove(Msg); end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.WMVScroll(var Msg: TWMVScroll); begin CallDefaultProc(TMessage(Msg)); - if not (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then - UpdateScroll - else - PaintScroll; + PaintScroll; Handled := True; end; +//---------------------------------------------------------------------------------------------------------------------- + { TVclStyleScrollBarsHook.TVclStyleScrollBarWindow } constructor TVclStyleScrollBarsHook.TScrollWindow.Create(AOwner: TComponent); @@ -947,16 +1046,22 @@ constructor TVclStyleScrollBarsHook.TScrollWindow.Create(AOwner: TComponent); FVertical := False; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.TScrollWindow.WMEraseBkgnd(var Msg: TMessage); begin Msg.Result := 1; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.TScrollWindow.WMNCHitTest(var Msg: TWMNCHitTest); begin Msg.Result := HTTRANSPARENT; end; +//---------------------------------------------------------------------------------------------------------------------- + procedure TVclStyleScrollBarsHook.TScrollWindow.WMPaint(var Msg: TWMPaint); var PS: TPaintStruct; @@ -988,6 +1093,7 @@ procedure TVclStyleScrollBarsHook.TScrollWindow.WMPaint(var Msg: TWMPaint); EndPaint(Handle, PS); end; end; +{$ifend} initialization TCustomStyleEngine.RegisterStyleHook(TVirtualStringTree, TVclStyleScrollBarsHook); @@ -998,4 +1104,3 @@ finalization TCustomStyleEngine.UnRegisterStyleHook(TVirtualDrawTree, TVclStyleScrollBarsHook); end. - diff --git a/Source/VirtualTrees.pas b/Source/VirtualTrees.pas index aea270260..fec7a69d2 100644 --- a/Source/VirtualTrees.pas +++ b/Source/VirtualTrees.pas @@ -87,7 +87,7 @@ interface {$ENDIF} const - VTVersion = '7.6.0' deprecated 'This const is going to be removed in a future version'; + VTVersion = '7.6.2' deprecated 'This const is going to be removed in a future version'; const VTTreeStreamVersion = 3; @@ -98,6 +98,7 @@ interface FadeAnimationStepCount = 255; // Number of animation steps for hint fading (0..255). ShadowSize = 5; // Size in pixels of the hint shadow. This value has no influence on Win2K and XP systems // as those OSes have native shadow support. + cDefaultTextMargin = 4; // The default margin of text // Special identifiers for columns. NoColumn = -1; @@ -1350,6 +1351,7 @@ TVTHeader = class(TPersistent) procedure SetSortDirection(const Value: TSortDirection); procedure SetStyle(Value: TVTHeaderStyle); function GetRestoreSelectionColumnIndex: Integer; + function AreColumnsStored: Boolean; protected FStates: THeaderStates; // Used to keep track of internal states the header can enter. FDragStart: TPoint; // initial mouse drag position @@ -1408,6 +1410,7 @@ TVTHeader = class(TPersistent) procedure RestoreColumns; procedure SaveToStream(const Stream: TStream); virtual; procedure StyleChanged(); virtual; + procedure ToggleSortDirection; property DragImage: TVTDragImage read FDragImage; property RestoreSelectionColumnIndex: Integer read GetRestoreSelectionColumnIndex write fRestoreSelectionColumnIndex default NoColumn; @@ -1418,7 +1421,7 @@ TVTHeader = class(TPersistent) published property AutoSizeIndex: TColumnIndex read FAutoSizeIndex write SetAutoSizeIndex; property Background: TColor read FBackgroundColor write SetBackground default clBtnFace; - property Columns: TVirtualTreeColumns read FColumns write SetColumns stored False; // Stored by the owner tree to support VFI. + property Columns: TVirtualTreeColumns read FColumns write SetColumns stored AreColumnsStored; property DefaultHeight: Integer read FDefaultHeight write SetDefaultHeight default 19; property Font: TFont read FFont write SetFont stored IsFontStored; property FixedAreaConstraints: TVTFixedAreaConstraints read FFixedAreaConstraints write FFixedAreaConstraints; @@ -2535,7 +2538,6 @@ TBaseVirtualTree = class(TCustomControl) procedure WMThemeChanged(var Message: TMessage); message WM_THEMECHANGED; procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; function GetRangeX: Cardinal; - function GetDoubleBuffered: Boolean; procedure SetDoubleBuffered(const Value: Boolean); function GetVclStyleEnabled: Boolean; inline; procedure SetOnPrepareButtonImages(const Value: TVTPrepareButtonImagesEvent); @@ -2718,6 +2720,7 @@ TBaseVirtualTree = class(TCustomControl) ImgCheckState: TCheckState = csUncheckedNormal; ImgEnabled: Boolean = True): Integer; virtual; function GetColumnClass: TVirtualTreeColumnClass; virtual; function GetDefaultHintKind: TVTHintKind; virtual; + function GetDoubleBuffered: Boolean; {$if CompilerVersion >= 36} override; {$ifend} function GetHeaderClass: TVTHeaderClass; virtual; function GetHintWindowClass: THintWindowClass; virtual; procedure GetImageIndex(var Info: TVTPaintInfo; Kind: TVTImageKind; InfoIndex: TVTImageInfoIndex); virtual; @@ -3135,6 +3138,7 @@ TBaseVirtualTree = class(TCustomControl) var Text: string); virtual; function GetTreeRect: TRect; function GetVisibleParent(Node: PVirtualNode; IncludeFiltered: Boolean = False): PVirtualNode; + function GetTopInvisibleParent(Node: PVirtualNode): PVirtualNode; function HasAsParent(Node, PotentialParent: PVirtualNode): Boolean; function InsertNode(Node: PVirtualNode; Mode: TVTNodeAttachMode; UserData: Pointer = nil): PVirtualNode; procedure InvalidateChildren(Node: PVirtualNode; Recursive: Boolean); @@ -3519,6 +3523,7 @@ TCustomVirtualStringTree = class(TBaseVirtualTree) function Path(Node: PVirtualNode; Column: TColumnIndex; Delimiter: Char): string; procedure ReinitNode(Node: PVirtualNode; Recursive: Boolean); override; procedure AddToSelection(Node: PVirtualNode; NotifySynced: Boolean); override; + procedure AddToSelection(const NewItems: TNodeArray; NewLength: Integer; ForceInsert: Boolean); override; procedure RemoveFromSelection(Node: PVirtualNode); override; function SaveToCSVFile(const FileNameWithPath : TFileName; const IncludeHeading : Boolean) : Boolean; /// Alternate text for images used in Accessibility. @@ -7072,20 +7077,23 @@ procedure TVirtualTreeColumn.SetWidth(Value: Integer); Inc(TotalFixedMinWidth, FColumns[I].MinWidth); end; - // The percentage values have precedence over the pixel values. - If FMaxWidthPercent > 0 then - TotalFixedMinWidth:= Min((ClientWidth * FMaxWidthPercent) div 100, TotalFixedMinWidth); - If FMinWidthPercent > 0 then - TotalFixedMaxWidth := Max((ClientWidth * FMinWidthPercent) div 100, TotalFixedMaxWidth); - - EffectiveMaxWidth := Min(TotalFixedMaxWidth - (GetVisibleFixedWidth - Self.FWidth), FMaxWidth); - EffectiveMinWidth := Max(TotalFixedMinWidth - (GetVisibleFixedWidth - Self.FWidth), FMinWidth); - Value := Min(Max(Value, EffectiveMinWidth), EffectiveMaxWidth); - - if FMinWidthPercent > 0 then - Value := Max((ClientWidth * FMinWidthPercent) div 100 - GetVisibleFixedWidth + Self.FWidth, Value); - if FMaxWidthPercent > 0 then - Value := Min((ClientWidth * FMaxWidthPercent) div 100 - GetVisibleFixedWidth + Self.FWidth, Value); + if HandleAllocated then // Prevent premature creation of window handle, see issue #1073 + begin + // The percentage values have precedence over the pixel values. + If FMaxWidthPercent > 0 then + TotalFixedMinWidth:= Min((ClientWidth * FMaxWidthPercent) div 100, TotalFixedMinWidth); + If FMinWidthPercent > 0 then + TotalFixedMaxWidth := Max((ClientWidth * FMinWidthPercent) div 100, TotalFixedMaxWidth); + + EffectiveMaxWidth := Min(TotalFixedMaxWidth - (GetVisibleFixedWidth - Self.FWidth), FMaxWidth); + EffectiveMinWidth := Max(TotalFixedMinWidth - (GetVisibleFixedWidth - Self.FWidth), FMinWidth); + Value := Min(Max(Value, EffectiveMinWidth), EffectiveMaxWidth); + + if FMinWidthPercent > 0 then + Value := Max((ClientWidth * FMinWidthPercent) div 100 - GetVisibleFixedWidth + Self.FWidth, Value); + if FMaxWidthPercent > 0 then + Value := Min((ClientWidth * FMaxWidthPercent) div 100 - GetVisibleFixedWidth + Self.FWidth, Value); + end;// if HandleAllocated end; end else @@ -7480,27 +7488,8 @@ procedure TVirtualTreeColumn.GetAbsoluteBounds(var Left, Right: Integer); //---------------------------------------------------------------------------------------------------------------------- function TVirtualTreeColumn.GetDisplayName: string; - -// Returns the column text if it only contains ANSI characters, otherwise the column id is returned because the IDE -// still cannot handle Unicode strings. - -var - I: Integer; - begin - // Check if the text of the column contains characters > 255 - I := 1; - while I <= Length(FText) do - begin - if Ord(FText[I]) > 255 then - Break; - Inc(I); - end; - - if I > Length(FText) then - Result := FText // implicit conversion - else - Result := Format('Column %d', [Index]); + Result := FText // Use column header caption as display name end; //---------------------------------------------------------------------------------------------------------------------- @@ -8104,6 +8093,17 @@ procedure TVirtualTreeColumns.FixPositions; I: Integer; begin + // Fox positions that too large, see #1179 + for I := 0 to Count - 1 do + begin + if Integer(Items[I].Position) >= Count then + begin + UpdatePositions(True); + break; + end; + end; // for + + // Update position array for I := 0 to Count - 1 do FPositionToIndex[Items[I].Position] := I; @@ -10021,7 +10021,7 @@ procedure TVTHeader.SetStyle(Value: TVTHeaderStyle); procedure TVTHeader.StyleChanged(); begin {$IF CompilerVersion < 31} // See issue #1043 - AutoScale(False); //Elements may have changed in size + AutoScale(); //Elements may have changed in size {$IFEND} end; @@ -10556,17 +10556,14 @@ function TVTHeader.HandleMessage(var Message: TMessage): Boolean; //--------------- local function -------------------------------------------- function HSplitterHit: Boolean; - - var - NextCol: TColumnIndex; - begin Result := (hoColumnResize in FOptions) and DetermineSplitterIndex(P); if Result and not InHeader(P) then begin - NextCol := FColumns.GetNextVisibleColumn(FColumns.TrackIndex); - if not (coFixed in FColumns[FColumns.TrackIndex].Options) or (NextCol <= NoColumn) or - (coFixed in FColumns[NextCol].Options) or (P.Y > Integer(Treeview.FRangeY)) then + // Code commented due to issue #1067. What was the orginal inention of this code? It does not make much sense unless you allow column resize outside the header. + // NextCol := FColumns.GetNextVisibleColumn(FColumns.TrackIndex); + // if not (coFixed in FColumns[FColumns.TrackIndex].Options) or (NextCol <= NoColumn) or + // (coFixed in FColumns[NextCol].Options) or (P.Y > Integer(Treeview.FRangeY)) then Result := False; end; end; @@ -11279,6 +11276,13 @@ function TVTHeader.AllowFocus(ColumnIndex: TColumnIndex): Boolean; //---------------------------------------------------------------------------------------------------------------------- +function TVTHeader.AreColumnsStored: Boolean; +begin + // The columns are stored by the owner tree to support Visual Form Inheritance + // GnutGetText skips non-stored properties, so retur Stored True at runtime + Result := not (csDesigning in Self.Treeview.ComponentState); +end; + procedure TVTHeader.Assign(Source: TPersistent); begin @@ -11782,6 +11786,19 @@ procedure TVTHeader.RestoreColumns; //---------------------------------------------------------------------------------------------------------------------- +procedure TVTHeader.ToggleSortDirection; + +// Toggles the current sorting direction + +begin + if SortDirection = sdDescending then + SortDirection := sdAscending + else + SortDirection := sdDescending; +end; + +//---------------------------------------------------------------------------------------------------------------------- + procedure TVTHeader.SaveToStream(const Stream: TStream); // Saves the complete state of the header into the provided stream. @@ -11972,7 +11989,7 @@ function TVTColors.GetColor(const Index: TVTColorEnum): TColor; begin // Only try to fetch the color via StyleServices if theses are enabled // Return default/user defined color otherwise - if FOwner.VclStyleEnabled then + if not (csDesigning in FOwner.ComponentState) { see issue #1185 } and FOwner.VclStyleEnabled then begin // If the ElementDetails are not defined, fall back to the SystemColor case Index of @@ -12063,9 +12080,10 @@ procedure TVTColors.SetColor(const Index: TVTColorEnum; const Value: TColor); cBorderColor: RedrawWindow(FOwner.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_NOERASE or RDW_NOCHILDREN) else - FOwner.Invalidate; - end; - end; + if not (tsPainting in FOwner.TreeStates) then + FOwner.Invalidate; + end;//case + end;// if end; end; @@ -16431,8 +16449,8 @@ procedure TBaseVirtualTree.TVMGetItem(var Message: TMessage); if vsExpanded in Node.States then Item.state := Item.state or TVIS_EXPANDED; - // Construct state image and overlay image indices. They are one based, btw. - // and zero means there is no image. + // Construct state image and overlay image indices. They are zero based, btw. + // and -1 means there is no image. ImageIndex := -1; DoGetImageIndex(Node, ikState, -1, Ghosted, ImageIndex); Item.state := Item.state or Byte(IndexToStateImageMask(ImageIndex + 1)); @@ -17662,7 +17680,7 @@ procedure TBaseVirtualTree.WMNCDestroy(var Message: TWMNCDestroy); StopTimer(ChangeTimer); StopTimer(StructureChangeTimer); - if not (csDesigning in ComponentState) and (toAcceptOLEDrop in FOptions.MiscOptions) then + if not (csDesigning in ComponentState) and (toAcceptOLEDrop in FOptions.MiscOptions) and HandleAllocated then RevokeDragDrop(Handle); // Clean up other stuff. @@ -17806,6 +17824,12 @@ procedure TBaseVirtualTree.WMPrintClient(var Message: TWMPrintClient); Canvas: TCanvas; begin + if RTLVersion >= 36 then // see issue #1248, for newer Delphi versions use inherited version of WMPrintClient() + begin + inherited; + exit; + end; + // Draw only if the window is visible or visibility is not required. if ((Message.Flags and PRF_CHECKVISIBLE) = 0) or IsWindowVisible(Handle) then begin @@ -18550,38 +18574,25 @@ procedure TBaseVirtualTree.Change(Node: PVirtualNode); //---------------------------------------------------------------------------------------------------------------------- procedure TBaseVirtualTree.ChangeScale(M, D: Integer{$if CompilerVersion >= 31}; isDpiChange: Boolean{$ifend}); -{$if CompilerVersion < 27} -const - DefaultScalingFlags = [sfLeft, sfTop, sfWidth, sfHeight, sfFont]; // Was introduced with XE6: http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.Controls.TControl.DefaultScalingFlags -{$ifend} -var - Flags: TScalingFlags; begin if (toAutoChangeScale in FOptions.AutoOptions) then begin if (M <> D) then begin - // It is important to evaluate the TScalingFlags before calling inherited, becuase they are differetn afterwards! - if csLoading in ComponentState then - Flags := ScalingFlags - else - Flags := DefaultScalingFlags; // Important for #677 - if (sfHeight in Flags) then begin - FHeader.ChangeScale(M, D, {$if CompilerVersion >= 31}isDpiChange{$ELSE} M <> D{$ifend}); - SetDefaultNodeHeight(MulDiv(FDefaultNodeHeight, M, D)); - Indent := MulDiv(Indent, M, D); - FTextMargin := MulDiv(FTextMargin, M, D); - FMargin := MulDiv(FMargin, M, D); - FImagesMargin := MulDiv(FImagesMargin, M, D); - // Scale utility images, #796 - if FCheckImageKind = ckSystemDefault then begin - FreeAndNil(FCheckImages); - if HandleAllocated then - FCheckImages := CreateSystemImageSet(Self); - end; - UpdateHeaderRect(); - ScaleNodeHeights(M, D); - end;//if sfHeight + FHeader.ChangeScale(M, D, {$if CompilerVersion >= 31}isDpiChange{$ELSE} M <> D{$ifend}); + SetDefaultNodeHeight(MulDiv(FDefaultNodeHeight, M, D)); + Indent := MulDiv(Indent, M, D); + FTextMargin := MulDiv(FTextMargin, M, D); + FMargin := MulDiv(FMargin, M, D); + FImagesMargin := MulDiv(FImagesMargin, M, D); + // Scale utility images, #796 + if FCheckImageKind = ckSystemDefault then begin + FreeAndNil(FCheckImages); + if HandleAllocated then + FCheckImages := CreateSystemImageSet(Self); + end; + UpdateHeaderRect(); + ScaleNodeHeights(M, D); end;// if M<>D end;//if toAutoChangeScale inherited ChangeScale(M, D{$if CompilerVersion >= 31}, isDpiChange{$ifend}); @@ -18610,8 +18621,7 @@ procedure TBaseVirtualTree.ScaleNodeHeights(M, D: Integer); Run.NodeHeight := MulDiv(Run.NodeHeight, M, D); // The next three lines fix issue #1000 lNewNodeTotalHeight := MulDiv(Run.TotalHeight, M, D); - FRoot.TotalHeight := FRoot.TotalHeight + lNewNodeTotalHeight - Run.TotalHeight; // 1 EIntOverflow exception seen here in debug build in 01/2021 - Run.TotalHeight := lNewNodeTotalHeight; + FRoot.TotalHeight := Cardinal(Int64(FRoot.TotalHeight) + Int64(lNewNodeTotalHeight) - Int64(Run.TotalHeight)); // Avoiding EIntOverflow exception. end; Run := GetNextNoInit(Run); end; // while @@ -19694,7 +19704,7 @@ procedure TBaseVirtualTree.DoChecked(Node: PVirtualNode); begin if Assigned(FOnChecked) then FOnChecked(Self, Node); - if Assigned(FAccessibleItem) then + if Assigned(FAccessibleItem) and (Self.UpdateCount = 0) then // See issue #1174 NotifyWinEvent(EVENT_OBJECT_STATECHANGE, Handle, OBJID_CLIENT, CHILDID_SELF); end; @@ -19725,7 +19735,7 @@ procedure TBaseVirtualTree.DoCollapsed(Node: PVirtualNode); if Assigned(FOnCollapsed) then FOnCollapsed(Self, Node); - if Assigned(FAccessibleItem) then + if Assigned(FAccessibleItem) and (Self.UpdateCount = 0) then // See issue #1174 NotifyWinEvent(EVENT_OBJECT_STATECHANGE, Handle, OBJID_CLIENT, CHILDID_SELF); if (toAlwaysSelectNode in TreeOptions.SelectionOptions) then @@ -20115,7 +20125,7 @@ procedure TBaseVirtualTree.DoExpanded(Node: PVirtualNode); if Assigned(FOnExpanded) then FOnExpanded(Self, Node); - if Assigned(FAccessibleItem) then + if Assigned(FAccessibleItem) and (Self.UpdateCount = 0) then // See issue #1174 NotifyWinEvent(EVENT_OBJECT_STATECHANGE, Handle, OBJID_CLIENT, CHILDID_SELF); end; @@ -22628,8 +22638,6 @@ procedure TBaseVirtualTree.HandleMouseDown(var Message: TWMMouse; var HitInfo: T //--------------- end local functions --------------------------------------- begin - if IsEmpty then - Exit; // Nothing to do if [tsWheelPanning, tsWheelScrolling] * FStates <> [] then begin StopWheelPanning; @@ -22658,6 +22666,9 @@ procedure TBaseVirtualTree.HandleMouseDown(var Message: TWMMouse; var HitInfo: T GetHitTestInfoAt(Message.XPos, Message.YPos, True, HitInfo); end; + if IsEmpty then + exit; + // Keep clicked column in case the application needs it. FHeader.Columns.FClickIndex := HitInfo.HitColumn; @@ -22703,7 +22714,7 @@ procedure TBaseVirtualTree.HandleMouseDown(var Message: TWMMouse; var HitInfo: T IsLabelHit := not AltPressed and not (toSimpleDrawSelection in FOptions.SelectionOptions) and ((hiOnItemLabel in HitInfo.HitPositions) or (hiOnNormalIcon in HitInfo.HitPositions)); - IsCellHit := not AltPressed and not IsLabelHit and Assigned(HitInfo.HitNode) and + IsCellHit := not IsLabelHit and Assigned(HitInfo.HitNode) and ([hiOnItemButton, hiOnItemCheckBox, hiNoWhere] * HitInfo.HitPositions = []) and ((toFullRowSelect in FOptions.SelectionOptions) or ((toGridExtensions in FOptions.MiscOptions) and (HitInfo.HitColumn > NoColumn))); @@ -23316,19 +23327,19 @@ function TBaseVirtualTree.InternalAddToSelection(const NewItems: TNodeArray; New Inc(FSelectionCount, AddedNodesSize); // post process added nodes + // First set vsSelected flag for all newly selected nodes, then fire event + for I := 0 to AddedNodesSize - 1 do + Include(NewItems[I].States, vsSelected); + for I := 0 to AddedNodesSize - 1 do begin PTmpNode := NewItems[I]; - //sync path note: on click, multi-select ctrl-click and draw selection - Include(PTmpNode.States, vsSelected); // call on add event callbackevent if Assigned(FOnAddToSelection) then FOnAddToSelection(Self, PTmpNode); if SyncCheckstateWithSelection[PTmpNode] then checkstate[PTmpNode] := csCheckedNormal; end; - - Assert(FSelectionCount = (lPreviousSelectedCount + NewLength), 'Fixing issue #487 seems to ahve caused a problem here.') end; end; @@ -25826,7 +25837,7 @@ procedure TBaseVirtualTree.VclStyleChanged(); // Updates the member FVclStyleEnabled, should be called initially and when the VCL style changes begin - FVclStyleEnabled := StyleServices.Enabled and not StyleServices.IsSystemStyle and not (csDesigning in ComponentState); + FVclStyleEnabled := StyleServices.Enabled and not StyleServices.IsSystemStyle {$IF CompilerVersion < 35} and not (csDesigning in ComponentState) {$ifend}; Header.StyleChanged(); end; @@ -26959,6 +26970,8 @@ procedure TBaseVirtualTree.EndUpdate; Invalidate; UpdateDesigner; end; + if Assigned(FAccessibleItem) then // See issue #1174 + NotifyWinEvent(EVENT_OBJECT_STATECHANGE, Handle, OBJID_CLIENT, CHILDID_SELF); end; if FUpdateCount = 0 then begin @@ -28055,25 +28068,73 @@ function TBaseVirtualTree.GetLastVisibleNoInit(Node: PVirtualNode = nil; ConsiderChildrenAbove: Boolean = True; IncludeFiltered: Boolean = False): PVirtualNode; // Returns the very last visible node in the tree while optionally considering toChildrenAbove. +// Note that the visibility of all ancestor nodes of the resulting node must not be considered. // No initialization is performed. -var - Next: PVirtualNode; -begin - Result := GetLastVisibleChildNoInit(Node, IncludeFiltered); - if not ConsiderChildrenAbove or not (toChildrenAbove in FOptions.PaintOptions) then - while Assigned(Result) and (vsExpanded in Result.States) do + //--------------- local functions ------------------------------------------- + + function GetNodeIsVisible(ChildNode: PVirtualNode): Boolean; + begin + Result := (vsVisible in ChildNode.States) and + (IncludeFiltered or not IsEffectivelyFiltered[ChildNode]); + end; + + function GetNodeHasVisibleChildren(ChildNode: PVirtualNode): Boolean; + begin + Result := (vsHasChildren in ChildNode.States) and + (vsExpanded in ChildNode.States) and + not (vsAllChildrenHidden in ChildNode.States); + end; + + function IterateChildren(ParentNode: PVirtualNode): PVirtualNode; + var + Run: PVirtualNode; + begin + Result := nil; + + Run := GetLastChildNoInit(ParentNode); // Do not use 'GetLastVisibleChildNoInit' here (see above). + while Assigned(Run) do begin - // Test if there is a next last child. If not keep the node from the last run. - // Otherwise use the next last child. - Next := GetLastChildNoInit(Result); - if Assigned(Next) and (not (vsVisible in Next.States) or - (not IncludeFiltered and IsEffectivelyFiltered[Next])) then - Next := GetPreviousVisibleSiblingNoInit(Next, IncludeFiltered); - if Next = nil then - Break; - Result := Next; + if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + begin + if GetNodeIsVisible(Run) then + Result := Run + else if GetNodeHasVisibleChildren(Run) then + Result := IterateChildren(Run); + end else + begin + if GetNodeHasVisibleChildren(Run) then + Result := IterateChildren(Run) + else if GetNodeIsVisible(Run) then + Result := Run; + end; + + if Assigned(Result) then + break; + + Run := GetPreviousSiblingNoInit(Run); end; + end; + + //--------------- end local functions --------------------------------------- + +var + Run: PVirtualNode; + +begin + Result := nil; + + // First, check wether the given node and all its parents are expanded. + // If not, there can not be any visible child node. + Run := Node; + while Assigned(Run) and (Run <> RootNode) do + begin + if not (vsExpanded in Run.States) then + exit; + Run := Run.Parent; + end; + + Result := IterateChildren(Node); end; //---------------------------------------------------------------------------------------------------------------------- @@ -28506,113 +28567,122 @@ function TBaseVirtualTree.GetNextVisible(Node: PVirtualNode; ConsiderChildrenAbo // toChildrenAbove is optionally considered which is the default here. var + TopInvisibleParent: PVirtualNode; ForceSearch: Boolean; begin Result := Node; - if Assigned(Result) then - begin - Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + if not Assigned(Result) then Exit; - repeat - // If the given node is not visible then look for a parent node which is visible, otherwise we will - // likely go unnecessarily through a whole bunch of invisible nodes. - if not FullyVisible[Result] then - Result := GetVisibleParent(Result, True); + Assert(Result <> FRoot, 'Node must not be the hidden root node.'); - if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then - begin - repeat - // If there a no siblings anymore, go up one level. - if not Assigned(Result.NextSibling) then + repeat + // If any ancestor is invisible, then find the last (furthest) parent node + // which is invisible to skip invisible subtrees. Otherwise we will + // likely go unnecessarily through a whole bunch of invisible nodes. + TopInvisibleParent := GetTopInvisibleParent(Result); + if Assigned(TopInvisibleParent) then + Result := TopInvisibleParent; + + if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + begin + repeat + // If there a no siblings anymore, go up one level. + if not Assigned(Result.NextSibling) then + begin + Result := Result.Parent; + if Result = FRoot then begin - Result := Result.Parent; - if Result = FRoot then - begin - Result := nil; - Break; - end; + Result := nil; + Break; + end; - if not (vsInitialized in Result.States) then - InitNode(Result); - if vsVisible in Result.States then - Break; - end - else + if not (vsInitialized in Result.States) then + InitNode(Result); + end + else + begin + // There is at least one sibling so take it. + Result := Result.NextSibling; + if not (vsInitialized in Result.States) then + InitNode(Result); + if not (vsVisible in Result.States) then + Continue; + + // Now take a look at the children. As the children are initialized + // while toggling, we don't need to call 'InitChildren' beforehand here. + while (vsExpanded in Result.States) and Assigned(Result.FirstChild) do begin - // There is at least one sibling so take it. - Result := Result.NextSibling; + Result := Result.FirstChild; if not (vsInitialized in Result.States) then InitNode(Result); if not (vsVisible in Result.States) then - Continue; - - // Now take a look at the children. - // As the children are initialized while toggling, we don't need to do this here. - while (vsExpanded in Result.States) and Assigned(Result.FirstChild) do - begin - Result := Result.FirstChild; - if not (vsInitialized in Result.States) then - InitNode(Result); - if not (vsVisible in Result.States) then - Break; - end; - - // If we found a visible node we don't need to search any longer. - if vsVisible in Result.States then Break; end; - until False; - end - else - begin - // Has this node got children? - if [vsHasChildren, vsExpanded] * Result.States = [vsHasChildren, vsExpanded] then - begin - // Yes, there are child nodes. Initialize them if necessary. - if Result.ChildCount = 0 then - InitChildren(Result); end; - // Child nodes are the first choice if possible. - if (vsExpanded in Result.States) and Assigned(Result.FirstChild) then - begin - Result := GetFirstChild(Result); - ForceSearch := False; - end - else - ForceSearch := True; + // If we found a visible node we don't need to search any longer. + // As it has already been initialized above, we don't need to call 'InitNode' here. + if vsVisible in Result.States then + Break; + until False; + end + else + begin + ForceSearch := True; + // If we found an invisible ancestor, we must not check its children. + // Remember, that TopInvisibleParent can be effectively invisible merely due to + // its own parent's expansion state despite being visible itself. + if Result <> TopInvisibleParent then + begin + if not (vsInitialized in Result.States) then + InitNode(Result); - // If there are no children or the first child is not visible then search the sibling nodes or traverse parents. - if Assigned(Result) and (ForceSearch or not (vsVisible in Result.States)) then + // Child nodes are the first choice if the current node is known to be visible. + if (vsVisible in Result.States) and (vsExpanded in Result.States) then begin - repeat - // Is there a next sibling? - if Assigned(Result.NextSibling) then - begin - Result := Result.NextSibling; - if not (vsInitialized in Result.States) then - InitNode(Result); - if vsVisible in Result.States then - Break; - end - else - begin - // No sibling anymore, so use the parent's next sibling. - if Result.Parent <> FRoot then - Result := Result.Parent - else - begin - // There are no further nodes to examine, hence there is no further visible node. - Result := nil; - Break; - end; - end; - until False; + // Initialize the node's children if necessary. + if (vsHasChildren in Result.States) and (Result.ChildCount = 0) then + InitChildren(Result); + + if Assigned(Result.FirstChild) then + begin + Result := Result.FirstChild; + if not (vsInitialized in Result.States) then + InitNode(Result); + ForceSearch := False; + end; end; end; - until not Assigned(Result) or IsEffectivelyVisible[Result]; - end; + + // If there are no children or the first child is not visible then search the sibling nodes or traverse parents. + if ForceSearch or not (vsVisible in Result.States) then + begin + repeat + // Is there a next sibling? + if Assigned(Result.NextSibling) then + begin + Result := Result.NextSibling; + if not (vsInitialized in Result.States) then + InitNode(Result); + if vsVisible in Result.States then + Break; + end + // No sibling anymore, so use the parent's next sibling. + else if Result.Parent <> FRoot then + Result := Result.Parent + else + begin + // There are no further nodes to examine, hence there is no further visible node. + Result := nil; + Break; + end; + until False; + end; + end; + until not Assigned(Result) or IsEffectivelyVisible[Result]; + + Assert(Result <> Node, 'Node cannot be its own visible successor.'); end; //---------------------------------------------------------------------------------------------------------------------- @@ -28620,98 +28690,100 @@ function TBaseVirtualTree.GetNextVisible(Node: PVirtualNode; ConsiderChildrenAbo function TBaseVirtualTree.GetNextVisibleNoInit(Node: PVirtualNode; ConsiderChildrenAbove: Boolean = True): PVirtualNode; // Returns the next node in tree, with regard to Node, which is visible. -// toChildrenAbove is optionally considered (which is the default). No initialization is done. +// No initialization is done. +// toChildrenAbove is optionally considered which is the default here. var + TopInvisibleParent: PVirtualNode; ForceSearch: Boolean; begin Result := Node; - if Assigned(Result) then - begin - Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + if not Assigned(Result) then Exit; - repeat - if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + + repeat + // If any ancestor is invisible, then find the last (furthest) parent node + // which is invisible to skip invisible subtrees. Otherwise we will + // likely go unnecessarily through a whole bunch of invisible nodes. + TopInvisibleParent := GetTopInvisibleParent(Result); + if Assigned(TopInvisibleParent) then + Result := TopInvisibleParent; + + if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + begin + repeat + // If there are no siblings anymore, go up one level. + if not Assigned(Result.NextSibling) then + begin + Result := Result.Parent; + if Result = FRoot then + begin + Result := nil; + Break; + end; + end + else + begin + // There is at least one sibling so take it. + Result := Result.NextSibling; + if not (vsVisible in Result.States) then + Continue; + + // Now take a look at the children. + while (vsExpanded in Result.States) and Assigned(Result.FirstChild) do + begin + Result := Result.FirstChild; + if not (vsVisible in Result.States) then + Break; + end; + end; + + // If we found a visible node we don't need to search any longer. + if vsVisible in Result.States then + Break; + until False; + end + else + begin + // Child nodes are the first choice if the current node is known to be visible. + // Remember, that TopInvisibleParent can be effectively invisible merely due to + // its own parent's expansion state despite being visible itself. + if (vsVisible in Result.States) and (vsExpanded in Result.States) and + (Result <> TopInvisibleParent) and Assigned(Result.FirstChild) then + begin + Result := Result.FirstChild; + ForceSearch := False; + end else + ForceSearch := True; + + // If there are no children or the first child is not visible then search the sibling nodes or traverse parents. + if ForceSearch or not (vsVisible in Result.States) then begin repeat - // If there a no siblings anymore, go up one level. - if not Assigned(Result.NextSibling) then + // Is there a next sibling? + if Assigned(Result.NextSibling) then begin - Result := Result.Parent; - if Result = FRoot then - begin - Result := nil; - Break; - end; + Result := Result.NextSibling; if vsVisible in Result.States then Break; end + // No sibling anymore, so use the parent's next sibling. + else if Result.Parent <> FRoot then + Result := Result.Parent else begin - // There is at least one sibling so take it. - Result := Result.NextSibling; - if not (vsVisible in Result.States) then - Continue; - - // Now take a look at the children. - while (vsExpanded in Result.States) and Assigned(Result.FirstChild) do - begin - Result := Result.FirstChild; - if not (vsVisible in Result.States) then - Break; - end; - - // If we found a visible node we don't need to search any longer. - if vsVisible in Result.States then - Break; + // There are no further nodes to examine, hence there is no further visible node. + Result := nil; + Break; end; until False; - end - else - begin - // If the given node is not visible then look for a parent node which is visible, otherwise we will - // likely go unnecessarily through a whole bunch of invisible nodes. - if not FullyVisible[Result] then - Result := GetVisibleParent(Result, True); - - // Child nodes are the first choice if possible. - if (vsExpanded in Result.States) and Assigned(Result.FirstChild) then - begin - Result := Result.FirstChild; - ForceSearch := False; - end - else - ForceSearch := True; - - // If there are no children or the first child is not visible then search the sibling nodes or traverse parents. - if ForceSearch or not (vsVisible in Result.States) then - begin - repeat - // Is there a next sibling? - if Assigned(Result.NextSibling) then - begin - Result := Result.NextSibling; - if vsVisible in Result.States then - Break; - end - else - begin - // No sibling anymore, so use the parent's next sibling. - if Result.Parent <> FRoot then - Result := Result.Parent - else - begin - // There are no further nodes to examine, hence there is no further visible node. - Result := nil; - Break; - end; - end; - until False; - end; end; - until not Assigned(Result) or IsEffectivelyVisible[Result]; - end; + end; + until not Assigned(Result) or IsEffectivelyVisible[Result]; + + Assert(Result <> Node, 'Node cannot be its own visible successor.'); end; //---------------------------------------------------------------------------------------------------------------------- @@ -29256,104 +29328,120 @@ function TBaseVirtualTree.GetPreviousVisible(Node: PVirtualNode; ConsiderChildre // toChildrenAbove is optionally considered which is the default here. var - Marker: PVirtualNode; + TopInvisibleParent: PVirtualNode; + ForceSearch: Boolean; begin Result := Node; - if Assigned(Result) then - begin - Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + if not Assigned(Result) then Exit; - repeat - // If the given node is not visible then look for a parent node which is visible and use its last visible - // child or the parent node (if there is no visible child) as result. - if not FullyVisible[Result] then - begin - Result := GetVisibleParent(Result, True); - if Result = FRoot then - Result := nil; - Marker := GetLastVisible(Result, True); - if Assigned(Marker) then - Result := Marker; - end - else + Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + + repeat + // If any ancestor is invisible, then find the last (furthest) parent node + // which is invisible to skip invisible subtrees. Otherwise we will + // likely go unnecessarily through a whole bunch of invisible nodes. + TopInvisibleParent := GetTopInvisibleParent(Result); + if Assigned(TopInvisibleParent) then + Result := TopInvisibleParent; + + if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + begin + ForceSearch := True; + // If we found an invisible ancestor, we must not check its children. + // Remember, that TopInvisibleParent can be effectively invisible merely due to + // its own parent's expansion state despite being visible itself. + if Result <> TopInvisibleParent then begin - if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then - begin - repeat - if Assigned(Result.LastChild) and (vsExpanded in Result.States) then - begin - Result := Result.LastChild; - if not (vsInitialized in Result.States) then - InitNode(Result); + if not (vsInitialized in Result.States) then + InitNode(Result); - if vsVisible in Result.States then - Break; - end - else - if Assigned(Result.PrevSibling) then - begin - if not (vsInitialized in Result.PrevSibling.States) then - InitNode(Result.PrevSibling); + if (vsVisible in Result.States) and (vsExpanded in Result.States) then + begin + // Initialiue the node's children if necessary. + if (vsHasChildren in Result.States) and (Result.ChildCount = 0) then + InitChildren(Result); - if vsVisible in Result.PrevSibling.States then - begin - Result := Result.PrevSibling; - Break; - end; - end - else - begin - Marker := nil; - repeat - Result := Result.Parent; - if Result <> FRoot then - Marker := GetPreviousVisibleSibling(Result, True) - else - Result := nil; - until Assigned(Marker) or (Result = nil); - if Assigned(Marker) then - Result := Marker; + // Child nodes are the first choice if the current node is known to be visible. + if Assigned(Result.LastChild) then + begin + Result := Result.LastChild; + if not (vsInitialized in Result.States) then + InitNode(Result); + ForceSearch := False; + end; + end; + end; - Break; - end; - until False; - end - else + if ForceSearch or not (vsVisible in Result.States) then + begin + repeat + // Is there a previous sibling? + if Assigned(Result.PrevSibling) then + begin + Result := Result.PrevSibling; + if not (vsInitialized in Result.States) then + InitNode(Result); + if vsVisible in Result.States then + Break; + end + // No sibling anymore, so use the parent's previous sibling. + else if Result.Parent <> FRoot then + Result := Result.Parent + // There are no further nodes to examine, hence there is no further visible node. + else + begin + Result := nil; + Break; + end; + until False; + end; + end + else + begin + repeat + // If there are no sibling anymore, go up one level. + if not Assigned(Result.PrevSibling) then begin - repeat - // Is there a previous sibling node? - if Assigned(Result.PrevSibling) then - begin - Result := Result.PrevSibling; - // Initialize the new node and check its visibility. - if not (vsInitialized in Result.States) then - InitNode(Result); - if vsVisible in Result.States then - begin - // If there are visible child nodes then use the last one. - Marker := GetLastVisible(Result, True, True); - if Assigned(Marker) then - Result := Marker; - Break; - end; - end - else - begin - // No previous sibling there so the parent node is the nearest previous node. - Result := Result.Parent; - if Result = FRoot then - Result := nil; + Result := Result.Parent; + if Result = FRoot then + begin + Result := nil; + Break; + end; + if not (vsInitialized in Result.States) then + InitNode(Result); + end else + begin + Result := Result.PrevSibling; + if not (vsInitialized in Result.States) then + InitNode(Result); + if not (vsVisible in Result.States) then + Continue; + + // Now take a look at the children. As the children are initialized + // while toggling, we don't need to call 'InitChildren' beforehand here. + while (vsExpanded in Result.States) and Assigned(Result.LastChild) do + begin + Result := Result.LastChild; + if not (vsInitialized in Result.States) then + InitNode(Result); + if not (vsVisible in Result.States) then Break; - end; - until False; + end; end; - if Assigned(Result) and not (vsInitialized in Result.States) then - InitNode(Result); - end; - until not Assigned(Result) or IsEffectivelyVisible[Result]; - end; + // If we found a visible node we don't need to search any longer. + if vsVisible in Result.States then + Break; + until False; + end; + + if Assigned(Result) and not (vsInitialized in Result.States) then + InitNode(Result); + until not Assigned(Result) or IsEffectivelyVisible[Result]; + + Assert(Result <> Node, 'Node cannot be its own visible predecessor.'); end; //---------------------------------------------------------------------------------------------------------------------- @@ -29362,97 +29450,99 @@ function TBaseVirtualTree.GetPreviousVisibleNoInit(Node: PVirtualNode; ConsiderChildrenAbove: Boolean = True): PVirtualNode; // Returns the previous node in tree, with regard to Node, which is visible. +// No initialization is done. // toChildrenAbove is optionally considered which is the default here. var - Marker: PVirtualNode; + TopInvisibleParent: PVirtualNode; + ForceSearch: Boolean; begin Result := Node; - if Assigned(Result) then - begin - Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + if not Assigned(Result) then Exit; - repeat - // If the given node is not visible then look for a parent node which is visible and use its last visible - // child or the parent node (if there is no visible child) as result. - if not FullyVisible[Result] then + Assert(Result <> FRoot, 'Node must not be the hidden root node.'); + + repeat + // If any ancestor is invisible, then find the last (furthest) parent node + // which is invisible to skip invisible subtrees. Otherwise we will + // likely go unnecessarily through a whole bunch of invisible nodes. + TopInvisibleParent := GetTopInvisibleParent(Result); + if Assigned(TopInvisibleParent) then + Result := TopInvisibleParent; + + if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + begin + // Child nodes are the first choice if the current node is known to be visible. + // Remember, that TopInvisibleParent can be effectively invisible merely due to + // its own parent's expansion state despite being visible itself. + if (vsVisible in Result.States) and (vsExpanded in Result.States) and + (Result <> TopInvisibleParent) and Assigned(Result.LastChild) then begin - Result := GetVisibleParent(Result, True); - if Result = FRoot then - Result := nil; - Marker := GetLastVisibleNoInit(Result, True); - if Assigned(Marker) then - Result := Marker; - end - else + Result := Result.LastChild; + ForceSearch := False; + end else + ForceSearch := True; + + if ForceSearch or not (vsVisible in Result.States) then begin - if ConsiderChildrenAbove and (toChildrenAbove in FOptions.PaintOptions) then + repeat + // Is there a previous sibling? + if Assigned(Result.PrevSibling) then + begin + Result := Result.PrevSibling; + if vsVisible in Result.States then + Break; + end + // No sibling anymore, so use the parent's previous sibling. + else if Result.Parent <> FRoot then + Result := Result.Parent + // There are no further nodes to examine, hence there is no further visible node. + else + begin + Result := nil; + Break; + end; + until False; + end; + end + else + begin + repeat + // If there are no siblings anymore, go up one level. + if not Assigned(Result.PrevSibling) then begin - repeat - // Is the current node expanded and has children? - if (vsExpanded in Result.States) and Assigned(Result.LastChild) then - begin - Result := Result.LastChild; - if vsVisible in Result.States then - Break; - end - else - if Assigned(Result.PrevSibling) then - begin - // No children anymore, so take the previous sibling. - Result := Result.PrevSibling; - if vsVisible in Result.States then - Break; - end - else - begin - // No children and no previous siblings, so walk up the tree and look wether - // a parent has a previous visible sibling. If that is the case take it, - // otherwise there is no previous visible node. - Marker := nil; - repeat - Result := Result.Parent; - if Result <> FRoot then - Marker := GetPreviousVisibleSiblingNoInit(Result, True) - else - Result := nil; - until Assigned(Marker) or (Result = nil); - if Assigned(Marker) then - Result := Marker; - Break; - end; - until False; + Result := Result.Parent; + if Result = FRoot then + begin + Result := nil; + Break; + end; end else begin - repeat - // Is there a previous sibling node? - if Assigned(Result.PrevSibling) then - begin - Result := Result.PrevSibling; - if vsVisible in Result.States then - begin - // If there are visible child nodes then use the last one. - Marker := GetLastVisibleNoInit(Result, True, True); - if Assigned(Marker) then - Result := Marker; - Break; - end; - end - else - begin - // No previous sibling there so the parent node is the nearest previous node. - Result := Result.Parent; - if Result = FRoot then - Result := nil; + // There is at least one sibling so take it. + Result := Result.PrevSibling; + if not (vsVisible in Result.States) then + Continue; + + // Now take a look at the children. + while (vsExpanded in Result.States) and Assigned(Result.LastChild) do + begin + Result := Result.LastChild; + if not (vsVisible in Result.States) then Break; - end; - until False; + end; end; - end; - until not Assigned(Result) or IsEffectivelyVisible[Result]; - end; + + // If we found a visible node we don't need to search any longer. + if vsVisible in Result.States then + Break; + until False; + end; + until not Assigned(Result) or IsEffectivelyVisible[Result]; + + Assert(Result <> Node, 'Node cannot be its own visible predecessor.'); end; //---------------------------------------------------------------------------------------------------------------------- @@ -29848,6 +29938,31 @@ function TBaseVirtualTree.GetVisibleParent(Node: PVirtualNode; IncludeFiltered: //---------------------------------------------------------------------------------------------------------------------- +function TBaseVirtualTree.GetTopInvisibleParent(Node: PVirtualNode): PVirtualNode; + +// Returns the last (furthest) parent node of Node which is invisible. + +var + Run: PVirtualNode; + +begin + Assert(Assigned(Node), 'Node must not be nil.'); + Assert(Node <> FRoot, 'Node must not be the hidden root node.'); + + Result := nil; + + Run := Node.Parent; + while (Run <> FRoot) do + begin + if not ( (vsVisible in Run.States) and (vsExpanded in Run.Parent.States) ) then + Result := Run; + Run := Run.Parent; + end; + +end; + +//---------------------------------------------------------------------------------------------------------------------- + function TBaseVirtualTree.HasAsParent(Node, PotentialParent: PVirtualNode): Boolean; // Determines whether Node has got PotentialParent as one of its parents. @@ -30570,6 +30685,7 @@ procedure TBaseVirtualTree.PaintTree(TargetCanvas: TCanvas; Window: TRect; Targe PaintWidth: Integer; CurrentNodeHeight: Integer; lUseSelectedBkColor: Boolean; // determines if the dotted grid lines need to be painted in selection color of background color + lEmptyListTextMargin: Integer; CellIsTouchingClientRight: Boolean; CellIsInLastColumn: Boolean; @@ -30833,13 +30949,11 @@ procedure TBaseVirtualTree.PaintTree(TargetCanvas: TCanvas; Window: TRect; Targe begin if BidiMode = bdLeftToRight then begin - DrawDottedHLine(PaintInfo, CellRect.Left + IfThen(toFixedIndent in FOptions.PaintOptions, 1, IndentSize) * Integer(FIndent), CellRect.Right - 1, - CellRect.Bottom - 1); + DrawDottedHLine(PaintInfo, CellRect.Left + PaintInfo.Offsets[ofsCheckBox] - fImagesMargin, CellRect.Right - 1, CellRect.Bottom - 1); end else begin - DrawDottedHLine(PaintInfo, CellRect.Left, CellRect.Right - IfThen(toFixedIndent in FOptions.PaintOptions, 1, IndentSize) * Integer(FIndent) - 1, - CellRect.Bottom - 1); + DrawDottedHLine(PaintInfo, CellRect.Left, CellRect.Right - IfThen(toFixedIndent in FOptions.PaintOptions, 1, IndentSize) * Integer(FIndent) - 1, CellRect.Bottom - 1); end; end else @@ -31139,12 +31253,14 @@ procedure TBaseVirtualTree.PaintTree(TargetCanvas: TCanvas; Window: TRect; Targe begin // output a message if no items are to display Canvas.Font := Self.Font; + Canvas.Font.Size := Round(Canvas.Font.Size * 1.25); SetBkMode(TargetCanvas.Handle, TRANSPARENT); - R.Left := OffSetX + 2; - R.Top := 2; - R.Right := R.Left + Width - 2; - R.Bottom := Height -2; - TargetCanvas.Font.Color := clGrayText; + lEmptyListTextMargin := ScaledPixels(Max(cDefaultTextMargin, Self.TextMargin) * 2); + R.Left := OffSetX + lEmptyListTextMargin; + R.Top := lEmptyListTextMargin; + R.Right := R.Left + Width - lEmptyListTextMargin; + R.Bottom := Height - lEmptyListTextMargin; + TargetCanvas.Font.Color := StyleServices.GetStyleFontColor(TStyleFont.sfTreeItemTextDisabled);//clGrayText; TargetCanvas.TextRect(R, FEmptyListMessage, [tfNoClip, tfLeft, tfWordBreak, tfExpandTabs]); end; @@ -31710,7 +31826,7 @@ procedure TBaseVirtualTree.ReinitNode(Node: PVirtualNode; Recursive: Boolean); InitNode(Node); end; - if Recursive then + if Recursive and (Node.ChildCount > 0) then // Prevent previoulsy uninitilaized children from being initialized. Issue #1145 ReinitChildren(Node, True); end; @@ -33781,7 +33897,7 @@ procedure TCustomVirtualStringTree.InitializeTextProperties(var PaintInfo: TVTPa if Node = FDropTargetNode then begin if ((FLastDropMode = dmOnNode) or (vsSelected in Node.States)) then - Canvas.Font.Color := FColors.GetSelectedNodeFontColor(Focused or (toPopupMode in FOptions.PaintOptions)); + Canvas.Font.Color := FColors.GetSelectedNodeFontColor(True); // See #1083, since drop highlight color is chosen independent of the focus state, we need to choose Font color also independent of it. end else if vsSelected in Node.States then @@ -33807,9 +33923,8 @@ procedure TCustomVirtualStringTree.PaintNormalText(var PaintInfo: TVTPaintInfo; TripleWidth: Integer; R: TRect; DrawFormat: Cardinal; - Size: TSize; Height: Integer; - + lNewNodeWidth: Integer; begin InitializeTextProperties(PaintInfo); with PaintInfo do @@ -33850,9 +33965,13 @@ procedure TCustomVirtualStringTree.PaintNormalText(var PaintInfo: TVTPaintInfo; // If the font has been changed then the ellipsis width must be recalculated. TripleWidth := 0; // Recalculate also the width of the normal text. - GetTextExtentPoint32W(Canvas.Handle, PWideChar(Text), Length(Text), Size); - NodeWidth := Size.cx + 2 * FTextMargin; - end; + lNewNodeWidth := DoTextMeasuring(Canvas, Node, Column, Text).cx + 2 * FTextMargin; + if lNewNodeWidth <> NodeWidth then + begin + NodeWidth := lNewNodeWidth; + InvalidateNode(Node); // repaint node and selection as the font chnaged, see #1084 + end;//if + end;// if FFontChanged DrawFormat := DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE; if BidiMode <> bdLeftToRight then @@ -34737,6 +34856,31 @@ procedure TCustomVirtualStringTree.AddToSelection(Node: PVirtualNode; NotifySync //---------------------------------------------------------------------------------------------------------------------- +procedure TCustomVirtualStringTree.AddToSelection(const NewItems: TNodeArray; NewLength: Integer; ForceInsert: Boolean); +var + i: Integer; + lSelectedNodeCaption: string; +begin + if (toRestoreSelection in TreeOptions.SelectionOptions) and Assigned(Self.OnGetText) and not (tsPreviouslySelectedLocked in FStates) then + begin + if not Assigned(FPreviouslySelected) then + begin + FPreviouslySelected := TStringList.Create(); + FPreviouslySelected.Duplicates := dupIgnore; + FPreviouslySelected.Sorted := True; //Improves performance, required to use Find() + FPreviouslySelected.CaseSensitive := False; + end; + for i := 0 to NewLength - 1 do + begin + Self.OnGetText(Self, NewItems[i], Header.RestoreSelectionColumnIndex, ttNormal, lSelectedNodeCaption); + FPreviouslySelected.Add(lSelectedNodeCaption); + end; + end; // if toRestoreSelection + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + procedure TCustomVirtualStringTree.RemoveFromSelection(Node: PVirtualNode); var lSelectedNodeCaption: string; diff --git a/VirtualTreesDevelopment.groupproj b/VirtualTreesDevelopment.groupproj new file mode 100644 index 000000000..34bab6c34 --- /dev/null +++ b/VirtualTreesDevelopment.groupproj @@ -0,0 +1,60 @@ + + + {C5F52E84-EC68-4F73-B3AD-3A9611000DFB} + + + + + + + + + + Packages\RAD Studio 10.4+\VirtualTreesR.dproj + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +