├── .gitattributes ├── .gitignore ├── CBuilder ├── 11AndAbove │ ├── CBuilder.groupproj │ ├── EasyListviewC.cbproj │ ├── EasyListviewC.cpp │ ├── EasyListviewCD.cbproj │ └── EasyListviewCD.cpp ├── Berlin │ ├── CBuilder.groupproj │ ├── EasyListviewC.cbproj │ ├── EasyListviewC.cpp │ ├── EasyListviewC.res │ ├── EasyListviewCD.cbproj │ ├── EasyListviewCD.cpp │ └── EasyListviewCD.res ├── Rio │ ├── CBuilder.groupproj │ ├── EasyListviewC.cbproj │ ├── EasyListviewC.cpp │ ├── EasyListviewC.res │ ├── EasyListviewCD.cbproj │ ├── EasyListviewCD.cpp │ └── EasyListviewCD.res ├── Sydney │ ├── CBuilder.groupproj │ ├── EasyListviewC.cbproj │ ├── EasyListviewC.cpp │ ├── EasyListviewC.res │ ├── EasyListviewCD.cbproj │ ├── EasyListviewCD.cpp │ └── EasyListviewCD.res └── Tokyo │ ├── CBuilder.groupproj │ ├── EasyListviewC.cbproj │ ├── EasyListviewC.cpp │ ├── EasyListviewC.res │ ├── EasyListviewCD.cbproj │ ├── EasyListviewCD.cpp │ └── EasyListviewCD.res ├── Delphi ├── 11AndAbove │ ├── Delphi.groupproj │ ├── EasyListviewD.dpk │ ├── EasyListviewD.dproj │ ├── EasyListviewDD.dpk │ └── EasyListviewDD.dproj ├── Berlin │ ├── Delphi.groupproj │ ├── EasyListviewD.dpk │ ├── EasyListviewD.dproj │ ├── EasyListviewD.res │ ├── EasyListviewDD.dpk │ ├── EasyListviewDD.dproj │ └── EasyListviewDD.res ├── Rio │ ├── Delphi.groupproj │ ├── EasyListviewD.dpk │ ├── EasyListviewD.dproj │ ├── EasyListviewD.res │ ├── EasyListviewDD.dpk │ ├── EasyListviewDD.dproj │ └── EasyListviewDD.res ├── Sydney │ ├── Delphi.groupproj │ ├── EasyListviewD.dpk │ ├── EasyListviewD.dproj │ ├── EasyListviewD.res │ ├── EasyListviewDD.dpk │ ├── EasyListviewDD.dproj │ └── EasyListviewDD.res └── Tokyo │ ├── Delphi.groupproj │ ├── EasyListviewD.dpk │ ├── EasyListviewD.dproj │ ├── EasyListviewD.res │ ├── EasyListviewDD.dpk │ ├── EasyListviewDD.dproj │ └── EasyListviewDD.res ├── Demos ├── Basic │ ├── Custom Items │ │ ├── CustomProject.cfg │ │ ├── CustomProject.dof │ │ ├── CustomProject.dpr │ │ ├── CustomProject.res │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ └── Unit2.pas │ ├── Interfaced (Jim) │ │ ├── CustomInterfaceDataProjectGroup.bpg │ │ ├── Data.txt │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ └── UserInterfaceDataProject.dpr │ ├── Interfaced Part One │ │ ├── InterfacedPartOneProject.dpr │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ └── Unit2.pas │ ├── Interfaced Part Two │ │ ├── InterfacedPartTwoProject.dpr │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ └── Unit2.pas │ ├── Simple │ │ ├── SimpleProject.dpr │ │ ├── Unit1.dfm │ │ └── Unit1.pas │ └── Virtual │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ └── VirtualProject.dpr ├── Context Menus │ ├── ContextMenuProject.dpr │ ├── ProjectGroupContextMenus.bpg │ ├── README-WIN.TXT │ ├── Unit1.dfm │ └── Unit1.pas ├── DemoBuildProjectGroup.bpg ├── DesignTime Test │ ├── Project1.dpr │ ├── ProjectGroup1.bpg │ ├── Unit1.dfm │ └── Unit1.pas ├── DragDrop │ ├── OLE DragDrop Explorer │ │ ├── OLEDragDropExplorerProject.cfg │ │ ├── OLEDragDropExplorerProject.dof │ │ ├── OLEDragDropExplorerProject.dpr │ │ ├── OLEDragDropExplorerProject.res │ │ ├── Unit1.dfm │ │ └── Unit1.pas │ ├── OLE DragDrop │ │ ├── OLEDragDropProject.cfg │ │ ├── OLEDragDropProject.dof │ │ ├── OLEDragDropProject.dpr │ │ ├── OLEDragDropProject.res │ │ ├── OLEDragDropProjectGroup1.bpg │ │ ├── Unit1.dfm │ │ └── Unit1.pas │ └── VCL DragDrop │ │ ├── Unit1.dfm │ │ ├── Unit1.pas │ │ ├── VCLDragDropProject.dpr │ │ └── VCLDragDropProjectGroup1.bpg ├── Fulldemo │ ├── FullDemoProject.cfg │ ├── FullDemoProject.dof │ ├── FullDemoProject.dpr │ ├── FullDemoProject.res │ ├── ProjectGroup.bpg │ ├── Unit1.dfm │ └── Unit1.pas ├── Grid │ ├── GridProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── Hints │ ├── HintProject.dpr │ ├── HintsProjectGroup1.bpg │ ├── Unit1.dfm │ └── Unit1.pas ├── Image CustomDraw │ ├── ImageCustomDrawProject.dpr │ ├── Unit1.dfm │ ├── Unit1.pas │ ├── XPSearch.bmp │ └── XPSearch_Small.bmp ├── Item CustomDraw Advanced │ ├── Donkey.bmp │ ├── ItemCustomDrawProjectAdv.dpr │ ├── ItemCustomDrawProjectAdv.res │ ├── Unit1.dfm │ └── Unit1.pas ├── Item CustomDraw │ ├── ItemCustomDrawProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── ScrollButton │ ├── ScrollButtonProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── Shared Demo Data │ ├── DatamoduleImagelists.dfm │ └── DatamoduleImagelists.pas ├── Sorting │ ├── SortingProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── TaskPanel │ ├── ReplacePanel.dfm │ ├── ReplacePanel.pas │ ├── SearchPanel.dfm │ ├── SearchPanel.pas │ ├── TaskPanelProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── Taskband │ ├── TaskbandProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── Threaded Thumbnails │ ├── ProjectThreadedThumbnails.cfg │ ├── ProjectThreadedThumbnails.dof │ ├── ProjectThreadedThumbnails.dpr │ ├── ProjectThreadedThumbnails.res │ ├── Unit1.dfm │ └── Unit1.pas └── ThumbScroller │ ├── ThumbScrollerProject.dpr │ ├── Unit1.dfm │ └── Unit1.pas ├── Design ├── EasyCollectionEditor.dfm ├── EasyCollectionEditor.pas ├── EasyListviewReg.dcr └── EasyListviewReg.pas ├── Documentation ├── EasyListview.dox ├── EasyListview.doxdb └── Images │ ├── easylistview_logo2.jpg │ ├── easylistview_logo3.jpg │ ├── easylistview_tiles.png │ ├── scrollbuttons.png │ └── taskband.png ├── LICENCE ├── Source ├── EasyLVResources.pas ├── EasyListview.pas ├── EasyListviewAccessible.pas ├── EasyMSAAIntf.pas ├── EasyRes.res ├── EasyScrollFrame.pas └── EasyTaskPanelForm.pas └── readme.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.pas text 7 | *.dfm text 8 | *.md text 9 | *.txt text 10 | *.java text 11 | *.cs text 12 | *.dpk -text 13 | *.dproj -text 14 | *.groupproj -text 15 | 16 | # Declare files that will always have CRLF line endings on checkout. 17 | 18 | # Denote all files that are truly binary and should not be modified. 19 | *.exe binary 20 | *.res binary 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.dcu 4 | *.obj 5 | *.exe 6 | *.bpl 7 | *.bpi 8 | *.dcp 9 | *.rsm 10 | *.stat 11 | *.map 12 | *.lib 13 | 14 | # Generated source # 15 | ################### 16 | *.hpp 17 | 18 | # Backup files # 19 | ################### 20 | *.~* 21 | *.bak 22 | *.#00 23 | *.pch 24 | *.Patch 25 | /__history 26 | 27 | # IDE Files # 28 | ################### 29 | *.dproj.local 30 | *.groupproj.local 31 | *.identcache 32 | *.dsk 33 | *.tvsconfig 34 | *.otares 35 | *.drc 36 | *.rc 37 | *.res 38 | *.local 39 | 40 | # Output Folders # 41 | ################### 42 | /Win32 43 | /Win64 44 | /OSX32 45 | 46 | # C++ Files # 47 | ################### 48 | *.prjmgc 49 | 50 | -------------------------------------------------------------------------------- /CBuilder/11AndAbove/CBuilder.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B89D86B8-E874-4360-91DE-BC0B877FE5EE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /CBuilder/11AndAbove/EasyListviewC.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma link "oleacc.lib" 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/11AndAbove/EasyListviewCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | USEFORMNS("..\..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Berlin/CBuilder.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B89D86B8-E874-4360-91DE-BC0B877FE5EE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /CBuilder/Berlin/EasyListviewC.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma link "oleacc.lib" 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Berlin/EasyListviewC.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Berlin/EasyListviewC.res -------------------------------------------------------------------------------- /CBuilder/Berlin/EasyListviewCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | USEFORMNS("..\..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Berlin/EasyListviewCD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Berlin/EasyListviewCD.res -------------------------------------------------------------------------------- /CBuilder/Rio/CBuilder.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B89D86B8-E874-4360-91DE-BC0B877FE5EE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /CBuilder/Rio/EasyListviewC.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma link "oleacc.lib" 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Rio/EasyListviewC.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Rio/EasyListviewC.res -------------------------------------------------------------------------------- /CBuilder/Rio/EasyListviewCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | USEFORMNS("..\..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Rio/EasyListviewCD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Rio/EasyListviewCD.res -------------------------------------------------------------------------------- /CBuilder/Sydney/CBuilder.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B89D86B8-E874-4360-91DE-BC0B877FE5EE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /CBuilder/Sydney/EasyListviewC.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma link "oleacc.lib" 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Sydney/EasyListviewC.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Sydney/EasyListviewC.res -------------------------------------------------------------------------------- /CBuilder/Sydney/EasyListviewCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | USEFORMNS("..\..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Sydney/EasyListviewCD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Sydney/EasyListviewCD.res -------------------------------------------------------------------------------- /CBuilder/Tokyo/CBuilder.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B89D86B8-E874-4360-91DE-BC0B877FE5EE} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /CBuilder/Tokyo/EasyListviewC.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma link "oleacc.lib" 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Tokyo/EasyListviewC.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Tokyo/EasyListviewC.res -------------------------------------------------------------------------------- /CBuilder/Tokyo/EasyListviewCD.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | USEFORMNS("..\..\Design\EasyCollectionEditor.pas", Easycollectioneditor, FormEasyCollectionEditor); 6 | //--------------------------------------------------------------------------- 7 | #pragma package(smart_init) 8 | //--------------------------------------------------------------------------- 9 | 10 | // Package source. 11 | //--------------------------------------------------------------------------- 12 | 13 | #pragma argsused 14 | int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 15 | { 16 | return 1; 17 | } 18 | //--------------------------------------------------------------------------- 19 | -------------------------------------------------------------------------------- /CBuilder/Tokyo/EasyListviewCD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/CBuilder/Tokyo/EasyListviewCD.res -------------------------------------------------------------------------------- /Delphi/11AndAbove/Delphi.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {DB386164-1495-40C0-9BCA-5BFC3EB103C4} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Delphi/11AndAbove/EasyListviewD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewD; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'Muststang Peak EasyListview Delphi Runtime Package'} 29 | {$LIBSUFFIX AUTO} 30 | {$RUNONLY} 31 | {$IMPLICITBUILD OFF} 32 | 33 | requires 34 | MPCommonLibD, 35 | rtl, 36 | vcl; 37 | 38 | contains 39 | EasyListview in '..\..\Source\EasyListview.pas', 40 | EasyLVResources in '..\..\Source\EasyLVResources.pas', 41 | EasyScrollFrame in '..\..\Source\EasyScrollFrame.pas', 42 | EasyTaskPanelForm in '..\..\Source\EasyTaskPanelForm.pas', 43 | EasyListviewAccessible in '..\..\Source\EasyListviewAccessible.pas', 44 | EasyMSAAIntf in '..\..\Source\EasyMSAAIntf.pas'; 45 | 46 | end. 47 | -------------------------------------------------------------------------------- /Delphi/11AndAbove/EasyListviewDD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewDD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\EasyListviewReg.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} 30 | {$LIBSUFFIX AUTO} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | rtl, 36 | vcl, 37 | designide, 38 | vclactnband, 39 | vclx, 40 | EasyListviewD, 41 | MPCommonLibD, 42 | MPCommonLibDD; 43 | 44 | contains 45 | EasyListviewReg in '..\..\Design\EasyListviewReg.pas', 46 | EasyCollectionEditor in '..\..\Design\EasyCollectionEditor.pas'; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Delphi/Berlin/Delphi.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {DB386164-1495-40C0-9BCA-5BFC3EB103C4} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Delphi/Berlin/EasyListviewD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewD; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'Muststang Peak EasyListview Delphi Runtime Package'} 29 | {$LIBSUFFIX '240'} 30 | {$RUNONLY} 31 | {$IMPLICITBUILD OFF} 32 | 33 | requires 34 | MPCommonLibD, 35 | rtl, 36 | vcl; 37 | 38 | contains 39 | EasyListview in '..\..\Source\EasyListview.pas', 40 | EasyLVResources in '..\..\Source\EasyLVResources.pas', 41 | EasyScrollFrame in '..\..\Source\EasyScrollFrame.pas', 42 | EasyTaskPanelForm in '..\..\Source\EasyTaskPanelForm.pas', 43 | EasyListviewAccessible in '..\..\Source\EasyListviewAccessible.pas', 44 | EasyMSAAIntf in '..\..\Source\EasyMSAAIntf.pas'; 45 | 46 | end. 47 | -------------------------------------------------------------------------------- /Delphi/Berlin/EasyListviewD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Berlin/EasyListviewD.res -------------------------------------------------------------------------------- /Delphi/Berlin/EasyListviewDD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewDD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\EasyListviewReg.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} 30 | {$LIBSUFFIX '240'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | rtl, 36 | vcl, 37 | designide, 38 | vclactnband, 39 | vclx, 40 | EasyListviewD, 41 | MPCommonLibD, 42 | MPCommonLibDD; 43 | 44 | contains 45 | EasyListviewReg in '..\..\Design\EasyListviewReg.pas', 46 | EasyCollectionEditor in '..\..\Design\EasyCollectionEditor.pas'; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Delphi/Berlin/EasyListviewDD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Berlin/EasyListviewDD.res -------------------------------------------------------------------------------- /Delphi/Rio/Delphi.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {DB386164-1495-40C0-9BCA-5BFC3EB103C4} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Delphi/Rio/EasyListviewD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewD; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'Muststang Peak EasyListview Delphi Runtime Package'} 29 | {$LIBSUFFIX '260'} 30 | {$RUNONLY} 31 | {$IMPLICITBUILD OFF} 32 | 33 | requires 34 | MPCommonLibD, 35 | rtl, 36 | vcl; 37 | 38 | contains 39 | EasyListview in '..\..\Source\EasyListview.pas', 40 | EasyLVResources in '..\..\Source\EasyLVResources.pas', 41 | EasyScrollFrame in '..\..\Source\EasyScrollFrame.pas', 42 | EasyTaskPanelForm in '..\..\Source\EasyTaskPanelForm.pas', 43 | EasyListviewAccessible in '..\..\Source\EasyListviewAccessible.pas', 44 | EasyMSAAIntf in '..\..\Source\EasyMSAAIntf.pas'; 45 | 46 | end. 47 | -------------------------------------------------------------------------------- /Delphi/Rio/EasyListviewD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Rio/EasyListviewD.res -------------------------------------------------------------------------------- /Delphi/Rio/EasyListviewDD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewDD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\EasyListviewReg.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} 30 | {$LIBSUFFIX '260'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | rtl, 36 | vcl, 37 | designide, 38 | vclactnband, 39 | vclx, 40 | EasyListviewD, 41 | MPCommonLibD, 42 | MPCommonLibDD; 43 | 44 | contains 45 | EasyListviewReg in '..\..\Design\EasyListviewReg.pas', 46 | EasyCollectionEditor in '..\..\Design\EasyCollectionEditor.pas'; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Delphi/Rio/EasyListviewDD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Rio/EasyListviewDD.res -------------------------------------------------------------------------------- /Delphi/Sydney/Delphi.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {DB386164-1495-40C0-9BCA-5BFC3EB103C4} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Delphi/Sydney/EasyListviewD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewD; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'Muststang Peak EasyListview Delphi Runtime Package'} 29 | {$LIBSUFFIX '270'} 30 | {$RUNONLY} 31 | {$IMPLICITBUILD OFF} 32 | 33 | requires 34 | MPCommonLibD, 35 | rtl, 36 | vcl; 37 | 38 | contains 39 | EasyListview in '..\..\Source\EasyListview.pas', 40 | EasyLVResources in '..\..\Source\EasyLVResources.pas', 41 | EasyScrollFrame in '..\..\Source\EasyScrollFrame.pas', 42 | EasyTaskPanelForm in '..\..\Source\EasyTaskPanelForm.pas', 43 | EasyListviewAccessible in '..\..\Source\EasyListviewAccessible.pas', 44 | EasyMSAAIntf in '..\..\Source\EasyMSAAIntf.pas'; 45 | 46 | end. 47 | -------------------------------------------------------------------------------- /Delphi/Sydney/EasyListviewD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Sydney/EasyListviewD.res -------------------------------------------------------------------------------- /Delphi/Sydney/EasyListviewDD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewDD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\EasyListviewReg.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} 30 | {$LIBSUFFIX '270'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | rtl, 36 | vcl, 37 | designide, 38 | vclactnband, 39 | vclx, 40 | EasyListviewD, 41 | MPCommonLibD, 42 | MPCommonLibDD; 43 | 44 | contains 45 | EasyListviewReg in '..\..\Design\EasyListviewReg.pas', 46 | EasyCollectionEditor in '..\..\Design\EasyCollectionEditor.pas'; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Delphi/Sydney/EasyListviewDD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Sydney/EasyListviewDD.res -------------------------------------------------------------------------------- /Delphi/Tokyo/Delphi.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {DB386164-1495-40C0-9BCA-5BFC3EB103C4} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Delphi/Tokyo/EasyListviewD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewD; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'Muststang Peak EasyListview Delphi Runtime Package'} 29 | {$LIBSUFFIX '250'} 30 | {$RUNONLY} 31 | {$IMPLICITBUILD OFF} 32 | 33 | requires 34 | MPCommonLibD, 35 | rtl, 36 | vcl; 37 | 38 | contains 39 | EasyListview in '..\..\Source\EasyListview.pas', 40 | EasyLVResources in '..\..\Source\EasyLVResources.pas', 41 | EasyScrollFrame in '..\..\Source\EasyScrollFrame.pas', 42 | EasyTaskPanelForm in '..\..\Source\EasyTaskPanelForm.pas', 43 | EasyListviewAccessible in '..\..\Source\EasyListviewAccessible.pas', 44 | EasyMSAAIntf in '..\..\Source\EasyMSAAIntf.pas'; 45 | 46 | end. 47 | -------------------------------------------------------------------------------- /Delphi/Tokyo/EasyListviewD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Tokyo/EasyListviewD.res -------------------------------------------------------------------------------- /Delphi/Tokyo/EasyListviewDD.dpk: -------------------------------------------------------------------------------- 1 | package EasyListviewDD; 2 | 3 | {$R *.res} 4 | {$R '..\..\Design\EasyListviewReg.dcr'} 5 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 6 | {$ALIGN 8} 7 | {$ASSERTIONS ON} 8 | {$BOOLEVAL OFF} 9 | {$DEBUGINFO OFF} 10 | {$EXTENDEDSYNTAX ON} 11 | {$IMPORTEDDATA ON} 12 | {$IOCHECKS ON} 13 | {$LOCALSYMBOLS OFF} 14 | {$LONGSTRINGS ON} 15 | {$OPENSTRINGS ON} 16 | {$OPTIMIZATION ON} 17 | {$OVERFLOWCHECKS OFF} 18 | {$RANGECHECKS OFF} 19 | {$REFERENCEINFO OFF} 20 | {$SAFEDIVIDE OFF} 21 | {$STACKFRAMES OFF} 22 | {$TYPEDADDRESS OFF} 23 | {$VARSTRINGCHECKS ON} 24 | {$WRITEABLECONST OFF} 25 | {$MINENUMSIZE 1} 26 | {$IMAGEBASE $400000} 27 | {$DEFINE RELEASE} 28 | {$ENDIF IMPLICITBUILDING} 29 | {$DESCRIPTION 'MustangPeak EasyListview Designtime Package'} 30 | {$LIBSUFFIX '250'} 31 | {$DESIGNONLY} 32 | {$IMPLICITBUILD OFF} 33 | 34 | requires 35 | rtl, 36 | vcl, 37 | designide, 38 | vclactnband, 39 | vclx, 40 | EasyListviewD, 41 | MPCommonLibD, 42 | MPCommonLibDD; 43 | 44 | contains 45 | EasyListviewReg in '..\..\Design\EasyListviewReg.pas', 46 | EasyCollectionEditor in '..\..\Design\EasyCollectionEditor.pas'; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Delphi/Tokyo/EasyListviewDD.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Delphi/Tokyo/EasyListviewDD.res -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/CustomProject.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O- 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"d:\borland\delphi7\Projects\Bpl" 35 | -LN"d:\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/CustomProject.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=0 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;indy;vclie;xmlrtl;inetdbbde;inet;inetdbxpress;dbrtl;soaprtl;dsnap;VclSmp;dbexpress;vcldb;dbxcds;inetdb;bdertl;vcldbx;adortl;teeui;teedb;tee;ibxpress;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOfficeXP;TntUnicodeVcl_R70;tb2k_d7;SpTBXLib_d7 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Language] 109 | ActiveLang= 110 | ProjectLang= 111 | RootDir=D:\Borland\Delphi7\Bin\ 112 | [Version Info] 113 | IncludeVerInfo=0 114 | AutoIncBuild=0 115 | MajorVer=1 116 | MinorVer=0 117 | Release=0 118 | Build=0 119 | Debug=0 120 | PreRelease=0 121 | Special=0 122 | Private=0 123 | DLL=0 124 | Locale=1033 125 | CodePage=1252 126 | [Version Info Keys] 127 | CompanyName= 128 | FileDescription= 129 | FileVersion=1.0.0.0 130 | InternalName= 131 | LegalCopyright= 132 | LegalTrademarks= 133 | OriginalFilename= 134 | ProductName= 135 | ProductVersion=1.0.0.0 136 | Comments= 137 | -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/CustomProject.dpr: -------------------------------------------------------------------------------- 1 | program CustomProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}, 7 | Unit2 in 'Unit2.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TImagelists, Imagelists); 14 | Application.CreateForm(TForm1, Form1); 15 | Application.Run; 16 | end. 17 | 18 | -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/CustomProject.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Basic/Custom Items/CustomProject.res -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 134 3 | Top = 188 4 | Width = 595 5 | Height = 469 6 | Caption = 'Form1' 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object LV: TEasyListview 18 | Left = 0 19 | Top = 33 20 | Width = 587 21 | Height = 402 22 | Align = alClient 23 | CacheDoubleBufferBits = False 24 | UseDockManager = False 25 | Font.Charset = DEFAULT_CHARSET 26 | Font.Color = clWindowText 27 | Font.Height = -11 28 | Font.Name = 'MS Shell Dlg 2' 29 | Font.Style = [] 30 | GroupFont.Charset = DEFAULT_CHARSET 31 | GroupFont.Color = clWindowText 32 | GroupFont.Height = -11 33 | GroupFont.Name = 'MS Shell Dlg 2' 34 | GroupFont.Style = [] 35 | Header.Font.Charset = DEFAULT_CHARSET 36 | Header.Font.Color = clWindowText 37 | Header.Font.Height = -11 38 | Header.Font.Name = 'MS Shell Dlg 2' 39 | Header.Font.Style = [] 40 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 41 | PaintInfoItem.TileDetailCount = 2 42 | ParentFont = False 43 | TabOrder = 0 44 | View = elsIcon 45 | end 46 | object Panel1: TPanel 47 | Left = 0 48 | Top = 0 49 | Width = 587 50 | Height = 33 51 | Align = alTop 52 | BevelOuter = bvNone 53 | TabOrder = 1 54 | object Label1: TLabel 55 | Left = 8 56 | Top = 8 57 | Width = 22 58 | Height = 13 59 | Caption = 'View' 60 | end 61 | object cbViews: TComboBox 62 | Left = 36 63 | Top = 6 64 | Width = 165 65 | Height = 21 66 | Style = csDropDownList 67 | ItemHeight = 13 68 | TabOrder = 0 69 | OnChange = cbViewsChange 70 | end 71 | end 72 | end 73 | -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: how to use custom items. 4 | // 5 | // An EasyListview custom item is an item class which inherits from TEasyItem 6 | // or any subclass. The application defines this new item class and has full 7 | // control over it. It may introduce new properties and methods which deal 8 | // with application specific data. 9 | 10 | interface 11 | 12 | uses 13 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 14 | Dialogs, EasyListview, StdCtrls, ExtCtrls, Unit2, MPCommonObjects; 15 | 16 | type 17 | TForm1 = class(TForm) 18 | LV: TEasyListview; 19 | Panel1: TPanel; 20 | cbViews: TComboBox; 21 | Label1: TLabel; 22 | procedure cbViewsChange(Sender: TObject); 23 | procedure FormCreate(Sender: TObject); 24 | private 25 | procedure AddColumns(Count: Integer); 26 | procedure AddItems(Count: Integer); 27 | end; 28 | 29 | var 30 | Form1: TForm1; 31 | 32 | implementation 33 | 34 | uses DatamoduleImagelists, ImgList; 35 | 36 | {$R *.dfm} 37 | 38 | procedure TForm1.FormCreate(Sender: TObject); 39 | begin 40 | FillStringsWithEasyListStyles(cbViews.Items); 41 | cbViews.ItemIndex := Ord(LV.View); 42 | 43 | // Set up listview. This can be done at design time in the object inspector. 44 | // It is done here so that you can see which properties are changed. 45 | Imagelists.UseImagesForListview(LV); 46 | LV.Header.Visible := True; 47 | AddColumns(2); 48 | 49 | // Add a few items to play with. 50 | AddItems(5000); 51 | end; 52 | 53 | procedure TForm1.cbViewsChange(Sender: TObject); 54 | begin 55 | // Synchronize list style combobox with listview list style. 56 | LV.View := TEasyListStyle(cbViews.ItemIndex); 57 | end; 58 | 59 | procedure TForm1.AddColumns(Count: Integer); 60 | var 61 | Column: TEasyColumn; 62 | i: Integer; 63 | begin 64 | for i := 0 to Count - 1 do 65 | begin 66 | Column := LV.Header.Columns.Add; 67 | Column.Caption := 'Column ' + IntToStr(i); 68 | Column.ImageIndex := i; 69 | Column.Width := 150; 70 | end; 71 | end; 72 | 73 | procedure TForm1.AddItems(Count: Integer); 74 | var 75 | i: Integer; 76 | begin 77 | // Add items to the listview. Actually the items are added to the first 78 | // group. This group is created automatically when the first item is added. 79 | LV.BeginUpdate; 80 | try 81 | for i := 0 to Count - 1 do 82 | LV.Items.AddCustom(TMyEasyItem); 83 | finally 84 | LV.EndUpdate; 85 | end; 86 | end; 87 | 88 | end. 89 | 90 | -------------------------------------------------------------------------------- /Demos/Basic/Custom Items/Unit2.pas: -------------------------------------------------------------------------------- 1 | unit Unit2; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, EasyListview, DatamoduleImagelists, MPCommonObjects; 7 | 8 | type 9 | // Example custom item class. Derive from any of the item classes, 10 | // TEasyItemStored, TEasyItemVirtual or TEasyItemInterfaced and override 11 | // methods as needed. You can add any properties and fields to the item 12 | // class. 13 | // You may also derive from TEasyItem but then you will have to override 14 | // a lot more abstract methods. 15 | TMyEasyItem = class(TEasyItemVirtual) 16 | protected 17 | function GetCaptions(Column: Integer): string; override; 18 | function GetDetailCount: Integer; override; 19 | function GetDetails(Line: Integer): Integer; override; 20 | function GetImageIndexes(Column: Integer): TCommonImageIndexInteger; override; 21 | end; 22 | 23 | implementation 24 | 25 | { TMyEasyItem } 26 | 27 | function TMyEasyItem.GetCaptions(Column: Integer): string; 28 | begin 29 | if Column = 0 then 30 | Result := 'Item ' + IntToStr(Index) 31 | else 32 | Result := 'Detail ' + IntToStr(Index); 33 | end; 34 | 35 | function TMyEasyItem.GetDetailCount: Integer; 36 | begin 37 | Result := 2; 38 | end; 39 | 40 | function TMyEasyItem.GetDetails(Line: Integer): Integer; 41 | begin 42 | Result := Line; 43 | end; 44 | 45 | function TMyEasyItem.GetImageIndexes(Column: Integer): TCommonImageIndexInteger; 46 | begin 47 | if Column = 0 then 48 | Result := Index mod Imagelists.ImageListSmall.Count 49 | else 50 | Result := -1; 51 | end; 52 | 53 | end. 54 | 55 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced (Jim)/CustomInterfaceDataProjectGroup.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl UserInterfaceDataProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | UserInterfaceDataProject.exe: UserInterfaceDataProject.dpr 18 | $(DCC) 19 | 20 | EasyListviewD7.bpl: ..\..\..\Delphi\EasyListviewD7.dpk 21 | $(DCC) 22 | 23 | EasyListviewD7D.bpl: ..\..\..\Delphi\EasyListviewD7D.dpk 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced (Jim)/Data.txt: -------------------------------------------------------------------------------- 1 | John Smith 2 | 234 East Cherry Tree Lane 3 | 345-654-5578 4 | Tom Jones 5 | 4 East 5th Street 6 | 126-454-5578 7 | Mary McCormick 8 | 5344 North Elm St. 9 | 562-984-5568 10 | Henry Bottomsworth 11 | 657 Broadway 12 | 549-650-0534 13 | Fred Savage 14 | 23634 67th St. 15 | 234-654-5457 16 | Sue Smyth 17 | 234 East Cherry Tree Lane 18 | 267-567-6340 19 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced (Jim)/UserInterfaceDataProject.dpr: -------------------------------------------------------------------------------- 1 | program UserInterfaceDataProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part One/InterfacedPartOneProject.dpr: -------------------------------------------------------------------------------- 1 | program InterfacedPartOneProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}, 7 | Unit2 in 'Unit2.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TImagelists, Imagelists); 14 | Application.CreateForm(TForm1, Form1); 15 | Application.Run; 16 | end. 17 | 18 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part One/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 121 3 | Top = 212 4 | Caption = 'Form1' 5 | ClientHeight = 430 6 | ClientWidth = 579 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | OnDestroy = FormDestroy 16 | PixelsPerInch = 96 17 | TextHeight = 13 18 | object LV: TEasyListview 19 | Left = 0 20 | Top = 33 21 | Width = 579 22 | Height = 397 23 | Align = alClient 24 | EditManager.Font.Charset = DEFAULT_CHARSET 25 | EditManager.Font.Color = clWindowText 26 | EditManager.Font.Height = -11 27 | EditManager.Font.Name = 'MS Shell Dlg 2' 28 | EditManager.Font.Style = [] 29 | UseDockManager = False 30 | Font.Charset = DEFAULT_CHARSET 31 | Font.Color = clWindowText 32 | Font.Height = -11 33 | Font.Name = 'MS Shell Dlg 2' 34 | Font.Style = [] 35 | GroupFont.Charset = DEFAULT_CHARSET 36 | GroupFont.Color = clWindowText 37 | GroupFont.Height = -11 38 | GroupFont.Name = 'MS Shell Dlg 2' 39 | GroupFont.Style = [] 40 | Header.Columns.Items = { 41 | 0600000001000000110000005445617379436F6C756D6E53746F726564FFFECE 42 | 0006000000800800010100010000000000000140020000FFFFFF1F0001000000 43 | 00000000000000000000000000000000} 44 | Header.Font.Charset = DEFAULT_CHARSET 45 | Header.Font.Color = clWindowText 46 | Header.Font.Height = -11 47 | Header.Font.Name = 'MS Shell Dlg 2' 48 | Header.Font.Style = [] 49 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 50 | ParentFont = False 51 | TabOrder = 0 52 | end 53 | object Panel1: TPanel 54 | Left = 0 55 | Top = 0 56 | Width = 579 57 | Height = 33 58 | Align = alTop 59 | BevelOuter = bvNone 60 | TabOrder = 1 61 | object Label1: TLabel 62 | Left = 8 63 | Top = 8 64 | Width = 22 65 | Height = 13 66 | Caption = 'View' 67 | end 68 | object cbViews: TComboBox 69 | Left = 36 70 | Top = 6 71 | Width = 165 72 | Height = 21 73 | Style = csDropDownList 74 | TabOrder = 0 75 | OnChange = cbViewsChange 76 | end 77 | end 78 | end 79 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part One/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: connect your your existing data classes to list items and keep the 4 | // data handling code in one place: in your data class. 5 | // 6 | // This is part 1 of the interface demo which shows the basic usage. 7 | // 8 | // If you have a non-trivial application you probably also have some data 9 | // classes, business objects, etc. How can you display aspects of this data 10 | // without spreading data access code all over your different forms units? 11 | // 12 | // Let the data talk about itself and the associated list item will listen. 13 | // Implement one or more of the following interfaces in your class: 14 | // IEasyCaptions // Returns Captions for the control 15 | // IEasyCaptionsEditable // Sets Captions in the data from the Control 16 | // IEasyImages // Returns Images for the control 17 | // IEasyImagesEditable // Sets Images in the data from the Control 18 | // IEasyThumbnail // Returns Thumbnail for the control 19 | // IEasyThumbnailEditable // Sets Thumbnail in the data from the Control 20 | // IEasyChecks // Sets/Unsets the Checkbox State for the control 21 | // IEasyNotifier // Returns an Inteterface to allow data to notify Control of changes in the data 22 | // IEasyCompareData // Allows sorting of the data set 23 | // 24 | // They are all optional but usually you will want to implement at least 25 | // IEasyCaptions (otherwise you won't have text on your listitems). 26 | // Don't worry, the interfaces are all light weight, with only one or two 27 | // methods. 28 | // (We could have put all these methods into a single interface - but then 29 | // you would have to implement 10 methods everytime. Even if you don't 30 | // have thumbnails or don't need checkboxes...) 31 | // 32 | // Note the IEasyXXXEditable interfaces. If your data is readonly from the 33 | // listview, in other words the user should not be able to edit captions etc, 34 | // you don't need these. Otherwise, implement IEasyCaptionsEditable and your 35 | // data class will be notified once the user has edited a listitem's caption 36 | // and it may store the new caption in any way it wants to. 37 | // Of course even if you don't want to have the data editable it can still 38 | // change and the change can be reflected in the listitem. 39 | // 40 | // Editing and other things are demonstrated in the second part of this demo 41 | // in the "Interfaced Part 2" demo folder. 42 | 43 | interface 44 | 45 | uses 46 | Windows, 47 | Messages, 48 | SysUtils, 49 | Variants, 50 | Classes, 51 | Graphics, 52 | Controls, 53 | Forms, 54 | Dialogs, 55 | EasyListview, 56 | StdCtrls, 57 | ExtCtrls, 58 | Unit2, 59 | MPCommonObjects; 60 | 61 | type 62 | TForm1 = class(TForm) 63 | LV: TEasyListview; 64 | Panel1: TPanel; 65 | cbViews: TComboBox; 66 | Label1: TLabel; 67 | procedure FormDestroy(Sender: TObject); 68 | procedure cbViewsChange(Sender: TObject); 69 | procedure FormCreate(Sender: TObject); 70 | private 71 | FEmployees: TEmployees; 72 | procedure AddColumns(Count: Integer); 73 | procedure AddEmployees; 74 | end; 75 | 76 | var 77 | Form1: TForm1; 78 | 79 | implementation 80 | 81 | uses DatamoduleImagelists, ImgList; 82 | 83 | {$R *.dfm} 84 | 85 | procedure TForm1.FormCreate(Sender: TObject); 86 | begin 87 | FillStringsWithEasyListStyles(cbViews.Items); 88 | cbViews.ItemIndex := Ord(LV.View); 89 | 90 | // Set up listview. This can be done at design time in the object inspector. 91 | // It is done here so that you can see which properties are changed. 92 | Imagelists.UseImagesForListview(LV); 93 | LV.Header.Visible := True; 94 | AddColumns(2); 95 | 96 | // Add a few items to play with. 97 | FEmployees := TEmployees.Create; 98 | FEmployees.Load; 99 | AddEmployees; 100 | end; 101 | 102 | procedure TForm1.FormDestroy(Sender: TObject); 103 | begin 104 | // This is very important to do before freeing the employees 105 | LV.Groups.Clear; 106 | FEmployees.Free; 107 | end; 108 | 109 | procedure TForm1.cbViewsChange(Sender: TObject); 110 | begin 111 | // Synchronize list style combobox with listview list style. 112 | LV.View := TEasyListStyle(cbViews.ItemIndex); 113 | end; 114 | 115 | procedure TForm1.AddColumns(Count: Integer); 116 | var 117 | Column: TEasyColumn; 118 | i: Integer; 119 | begin 120 | for i := 0 to Count - 1 do 121 | begin 122 | Column := LV.Header.Columns.Add; 123 | Column.Caption := 'Column ' + IntToStr(i); 124 | Column.ImageIndex := i; 125 | Column.Width := 150; 126 | end; 127 | end; 128 | 129 | procedure TForm1.AddEmployees; 130 | var 131 | i: Integer; 132 | begin 133 | // Add items to the listview. Actually the items are added to the first 134 | // group. This group is created automatically when the first item is added. 135 | LV.BeginUpdate; 136 | try 137 | for i := 0 to FEmployees.Count - 1 do 138 | LV.Items.AddInterfaced(FEmployees[i]); 139 | finally 140 | LV.EndUpdate; 141 | end; 142 | end; 143 | 144 | end. 145 | 146 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part One/Unit2.pas: -------------------------------------------------------------------------------- 1 | unit Unit2; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, 7 | Classes, 8 | Contnrs, 9 | Variants, 10 | EasyListview; 11 | 12 | type 13 | TEmployee = class(TObject, // you could use any base class here 14 | IInterface, // the list item can only be associated with an IInterface 15 | IEasyCaptions, // implement only those interfaces you want to return data for 16 | IEasyImages, 17 | IEasyDetails) 18 | private 19 | FFirstname: string; 20 | FLastname: string; 21 | FImageIndex: Integer; 22 | // IUnknown: in this case we don't use reference counting (although we could) 23 | function _AddRef: Integer; stdcall; 24 | function _Release: Integer; stdcall; 25 | function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; 26 | protected 27 | function GetCaption(Column: Integer): Variant; // IEasyCaptions 28 | function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; // IEasyImages 29 | function GetDetail(Line: Integer): Integer; // IEasyDetails (for the tile view) 30 | function GetDetailCount: Integer; // IEasyDetails (for the tile view) 31 | public 32 | constructor Create(Firstname, Lastname: string; ImageIndex: Integer); 33 | destructor Destroy; override; 34 | property Firstname: string read FFirstname; 35 | property Lastname: string read FLastname; 36 | end; 37 | 38 | TEmployees = class 39 | private 40 | FList: TObjectList; 41 | function GetCount: Integer; 42 | function GetEmployee(Index: Integer): TEmployee; 43 | public 44 | constructor Create; 45 | destructor Destroy; override; 46 | procedure Load; 47 | property Count: Integer read GetCount; 48 | property Employees[Index: Integer]: TEmployee read GetEmployee; default; 49 | end; 50 | 51 | implementation 52 | 53 | { TEmployee } 54 | 55 | constructor TEmployee.Create(Firstname, Lastname: string; 56 | ImageIndex: Integer); 57 | begin 58 | inherited Create; 59 | FFirstname := Firstname; 60 | FLastname := Lastname; 61 | FImageIndex := ImageIndex; 62 | end; 63 | 64 | destructor TEmployee.Destroy; 65 | begin 66 | inherited Destroy; 67 | end; 68 | 69 | function TEmployee.GetCaption(Column: Integer): Variant; 70 | begin 71 | case Column of 72 | 0: Result := Firstname; 73 | 1: Result := Lastname; 74 | else 75 | Result := Null; 76 | end; 77 | end; 78 | 79 | function TEmployee.GetDetail(Line: Integer): Integer; 80 | begin 81 | Result := Line; 82 | end; 83 | 84 | function TEmployee.GetDetailCount: Integer; 85 | begin 86 | Result := 2; 87 | end; 88 | 89 | function TEmployee.GetImageIndex(Column: Integer; 90 | ImageKind: TEasyImageKind): Integer; 91 | begin 92 | if (Column = 0) and (ImageKind = eikNormal) then 93 | Result := FImageIndex 94 | else 95 | Result := -1; 96 | end; 97 | 98 | function TEmployee.QueryInterface(const IID: TGUID; out Obj): HResult; 99 | begin 100 | if GetInterface(IID, Obj) then 101 | Result := 0 102 | else 103 | Result := E_NOINTERFACE; 104 | end; 105 | 106 | function TEmployee._AddRef: Integer; 107 | begin 108 | Result := -1; 109 | end; 110 | 111 | function TEmployee._Release: Integer; 112 | begin 113 | Result := -1; 114 | end; 115 | 116 | { TEmployees } 117 | 118 | constructor TEmployees.Create; 119 | begin 120 | inherited Create; 121 | FList := TObjectList.Create; 122 | end; 123 | 124 | destructor TEmployees.Destroy; 125 | begin 126 | FList.Free; 127 | inherited; 128 | end; 129 | 130 | function TEmployees.GetCount: Integer; 131 | begin 132 | Result := FList.Count; 133 | end; 134 | 135 | function TEmployees.GetEmployee(Index: Integer): TEmployee; 136 | begin 137 | Result := TEmployee(FList[Index]); 138 | end; 139 | 140 | procedure TEmployees.Load; 141 | begin 142 | // We could load data from disk but for this demo it may suffice to have 143 | // some static data. 144 | FList.Clear; 145 | FList.Add(TEmployee.Create('Aniston', 'Jennifer', 0)); 146 | FList.Add(TEmployee.Create('Carrey', 'Jim', 1)); 147 | FList.Add(TEmployee.Create('Knightley', 'Keira', 2)); 148 | FList.Add(TEmployee.Create('Lester', 'Adrian', 3)); 149 | FList.Add(TEmployee.Create('Marceau', 'Sophie', 4)); 150 | FList.Add(TEmployee.Create('Reno', 'Jean', 5)); 151 | end; 152 | 153 | end. 154 | 155 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part Two/InterfacedPartTwoProject.dpr: -------------------------------------------------------------------------------- 1 | program InterfacedPartTwoProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}, 7 | Unit2 in 'Unit2.pas'; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TImagelists, Imagelists); 14 | Application.CreateForm(TForm1, Form1); 15 | Application.Run; 16 | end. 17 | 18 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part Two/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 223 3 | Top = 170 4 | Caption = 'Form1' 5 | ClientHeight = 430 6 | ClientWidth = 579 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | OnDestroy = FormDestroy 16 | PixelsPerInch = 96 17 | TextHeight = 13 18 | object LV: TEasyListview 19 | Left = 0 20 | Top = 33 21 | Width = 579 22 | Height = 397 23 | Align = alClient 24 | EditManager.Font.Charset = DEFAULT_CHARSET 25 | EditManager.Font.Color = clWindowText 26 | EditManager.Font.Height = -11 27 | EditManager.Font.Name = 'MS Shell Dlg 2' 28 | EditManager.Font.Style = [] 29 | UseDockManager = False 30 | Font.Charset = DEFAULT_CHARSET 31 | Font.Color = clWindowText 32 | Font.Height = -11 33 | Font.Name = 'MS Shell Dlg 2' 34 | Font.Style = [] 35 | GroupFont.Charset = DEFAULT_CHARSET 36 | GroupFont.Color = clWindowText 37 | GroupFont.Height = -11 38 | GroupFont.Name = 'MS Shell Dlg 2' 39 | GroupFont.Style = [] 40 | Header.Columns.Items = { 41 | 0600000001000000110000005445617379436F6C756D6E53746F726564FFFECE 42 | 0006000000800800010100010000000000000140020000FFFFFF1F0001000000 43 | 00000000000000000000000000000000} 44 | Header.Font.Charset = DEFAULT_CHARSET 45 | Header.Font.Color = clWindowText 46 | Header.Font.Height = -11 47 | Header.Font.Name = 'MS Shell Dlg 2' 48 | Header.Font.Style = [] 49 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 50 | ParentFont = False 51 | TabOrder = 0 52 | end 53 | object Panel1: TPanel 54 | Left = 0 55 | Top = 0 56 | Width = 579 57 | Height = 33 58 | Align = alTop 59 | BevelOuter = bvNone 60 | TabOrder = 1 61 | DesignSize = ( 62 | 579 63 | 33) 64 | object Label1: TLabel 65 | Left = 8 66 | Top = 8 67 | Width = 22 68 | Height = 13 69 | Caption = 'View' 70 | end 71 | object cbViews: TComboBox 72 | Left = 36 73 | Top = 6 74 | Width = 165 75 | Height = 21 76 | Style = csDropDownList 77 | TabOrder = 0 78 | OnChange = cbViewsChange 79 | end 80 | object bBeSilly: TButton 81 | Left = 508 82 | Top = 4 83 | Width = 75 84 | Height = 25 85 | Anchors = [akTop, akRight] 86 | Caption = 'Be Silly' 87 | TabOrder = 1 88 | OnClick = bBeSillyClick 89 | end 90 | end 91 | end 92 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part Two/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: connect your your existing data classes to list items and keep the 4 | // data handling code in one place: in your data class. 5 | // 6 | // Interfaced Demo Part 2: 7 | // 8 | // This demo extends part 1 and shows some of the more "involved" features. 9 | // If you did not look at part 1 already you should probably do that now 10 | // to get a feeling for this way of connecting data and listview. 11 | // 12 | // In this demo: 13 | // 14 | // 1. How can the listview know when data changes, although the data does not 15 | // know the listview and vice versa? 16 | // 17 | // This is were IEasyNotifier comes into play. If your class is implementing 18 | // this interface (two methods) the listitem will register itself with your 19 | // data by providing an IEasyNotificationSink. This sink can be used to talk 20 | // back to the listitem to have it repaint itself. Instead of long winded 21 | // explanations, just start the demo and click on the "Be Silly" button which 22 | // will trigger the data to change. Then see how IEasyNotifier and FNotifier 23 | // is used in TEmployee in Unit2. 24 | // Notice that Unit2 does not have any GUI accessing code, it is fully 25 | // separated from its display (similar to the model-view-controller design 26 | // pattern). 27 | // 28 | // 2. How can users edit captions and have the data changed? 29 | // 30 | // Enable editing in the listview's EditManager. In your data class implement 31 | // IEasyCaptionsEditable which has only a SetCaption method. In this method 32 | // verify that the input is ok and store it in your data fields. If the input 33 | // is not ok, simply return false from this method and the listview will 34 | // silently revert to the previous caption. 35 | // 36 | // 3. Sorting 37 | // 38 | // not implemented in ELV 39 | 40 | interface 41 | 42 | uses 43 | Windows, 44 | Messages, 45 | SysUtils, 46 | Variants, 47 | Classes, 48 | Graphics, 49 | Controls, 50 | Forms, 51 | Dialogs, 52 | EasyListview, 53 | StdCtrls, 54 | ExtCtrls, 55 | Unit2, 56 | MPCommonUtilities, MPCommonObjects; 57 | 58 | type 59 | TForm1 = class(TForm) 60 | LV: TEasyListview; 61 | Panel1: TPanel; 62 | cbViews: TComboBox; 63 | Label1: TLabel; 64 | bBeSilly: TButton; 65 | procedure bBeSillyClick(Sender: TObject); 66 | procedure FormDestroy(Sender: TObject); 67 | procedure cbViewsChange(Sender: TObject); 68 | procedure FormCreate(Sender: TObject); 69 | private 70 | FEmployees: TEmployees; 71 | procedure AddColumns(Count: Integer); 72 | procedure AddEmployees; 73 | end; 74 | 75 | var 76 | Form1: TForm1; 77 | 78 | implementation 79 | 80 | uses DatamoduleImagelists, ImgList; 81 | 82 | {$R *.dfm} 83 | 84 | procedure TForm1.FormCreate(Sender: TObject); 85 | begin 86 | FillStringsWithEasyListStyles(cbViews.Items); 87 | cbViews.ItemIndex := Ord(LV.View); 88 | 89 | // Set up listview. This can be done at design time in the object inspector. 90 | // It is done here so that you can see which properties are changed. 91 | Imagelists.UseImagesForListview(LV); 92 | LV.Header.Visible := True; 93 | LV.EditManager.Enabled := True; // allow editing 94 | AddColumns(2); 95 | 96 | // Add a few items to play with. 97 | FEmployees := TEmployees.Create; 98 | FEmployees.Load; 99 | AddEmployees; 100 | end; 101 | 102 | procedure TForm1.FormDestroy(Sender: TObject); 103 | begin 104 | // This is very important to do before freeing the employees 105 | LV.Groups.Clear; 106 | FEmployees.Free; 107 | end; 108 | 109 | procedure TForm1.cbViewsChange(Sender: TObject); 110 | begin 111 | // Synchronize list style combobox with listview list style. 112 | LV.View := TEasyListStyle(cbViews.ItemIndex); 113 | end; 114 | 115 | procedure TForm1.AddColumns(Count: Integer); 116 | var 117 | Column: TEasyColumn; 118 | i: Integer; 119 | begin 120 | for i := 0 to Count - 1 do 121 | begin 122 | Column := LV.Header.Columns.Add; 123 | Column.Caption := 'Column ' + IntToStr(i); 124 | Column.ImageIndex := i; 125 | Column.Width := 150; 126 | end; 127 | end; 128 | 129 | procedure TForm1.AddEmployees; 130 | var 131 | i: Integer; 132 | begin 133 | // Add items to the listview. Actually the items are added to the first 134 | // group. This group is created automatically when the first item is added. 135 | LV.BeginUpdate; 136 | try 137 | for i := 0 to FEmployees.Count - 1 do 138 | LV.Items.AddInterfaced(FEmployees[i]); 139 | finally 140 | LV.EndUpdate; 141 | end; 142 | end; 143 | 144 | procedure TForm1.bBeSillyClick(Sender: TObject); 145 | begin 146 | // This changes the name of a random employee. The listitem will be updated 147 | // automatically. Notice that this call could be anywhere in the application, 148 | // it does not need to be aware of the listview. 149 | FEmployees.BeSilly; 150 | end; 151 | 152 | end. 153 | 154 | -------------------------------------------------------------------------------- /Demos/Basic/Interfaced Part Two/Unit2.pas: -------------------------------------------------------------------------------- 1 | unit Unit2; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, 7 | Classes, 8 | Contnrs, 9 | Variants, 10 | StrUtils, 11 | EasyListview; 12 | 13 | type 14 | TEmployee = class(TObject, // you could use any base class here 15 | IInterface, // the list item can only be associated with an IInterface 16 | IEasyCaptions, // implement only those interfaces you want to return data for 17 | IEasyImages, 18 | IEasyDetails, 19 | IEasyNotifier, 20 | IEasyCaptionsEditable, 21 | IEasyCompare) 22 | private 23 | FFirstname: string; 24 | FImageIndex: Integer; 25 | FLastname: string; 26 | FNotifier: IEasyNotificationSink; 27 | protected 28 | // IUnknown: in this case we don't use reference counting (although we could) 29 | function _AddRef: Integer; stdcall; 30 | function _Release: Integer; stdcall; 31 | function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; 32 | // IEasyCaptions: provide captions for all columns and details for the tiled view 33 | function GetCaption(Column: Integer): Variant; 34 | // IEasyImages: provide imagelist indexes for normal, state and overlay images 35 | function GetImageIndex(Column: Integer; ImageKind: TEasyImageKind): Integer; 36 | // IEasyDetails: provide a few captions (columns) for the tiled view 37 | function GetDetail(Line: Integer): Integer; 38 | function GetDetailCount: Integer; 39 | // IEasyNotifier: report data changes back to the listitem 40 | procedure OnRegisterNotify(const ANotifier: IEasyNotificationSink); 41 | procedure OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); 42 | // IEasyCaptionsEditable: accept edits from the listitem 43 | function SetCaption(Column: Integer; const Value: Variant): Boolean; 44 | // IEasyCompareData: compare data to allow listitem sorting 45 | function Compare(const Data: IUnknown; Column: TEasyColumn): Integer; 46 | public 47 | constructor Create(Lastname, Firstname: string; ImageIndex: Integer); 48 | destructor Destroy; override; 49 | procedure ToggleFunnyName; 50 | property Firstname: string read FFirstname; 51 | property Lastname: string read FLastname; 52 | end; 53 | 54 | TEmployees = class 55 | private 56 | FList: TObjectList; 57 | function GetCount: Integer; 58 | function GetEmployee(Index: Integer): TEmployee; 59 | public 60 | constructor Create; 61 | destructor Destroy; override; 62 | procedure BeSilly; 63 | procedure Load; 64 | property Count: Integer read GetCount; 65 | property Employees[Index: Integer]: TEmployee read GetEmployee; default; 66 | end; 67 | 68 | implementation 69 | 70 | { TEmployee } 71 | 72 | function TEmployee.Compare(const Data: IUnknown; Column: TEasyColumn): Integer; 73 | begin 74 | Result := 0; // TODO 75 | end; 76 | 77 | constructor TEmployee.Create(Lastname, Firstname: string; 78 | ImageIndex: Integer); 79 | begin 80 | inherited Create; 81 | FFirstname := Firstname; 82 | FLastname := Lastname; 83 | FImageIndex := ImageIndex; 84 | end; 85 | 86 | destructor TEmployee.Destroy; 87 | begin 88 | inherited; 89 | end; 90 | 91 | function TEmployee.GetCaption(Column: Integer): Variant; 92 | begin 93 | case Column of 94 | 0: Result := Lastname; 95 | 1: Result := Firstname; 96 | else 97 | Result := Null; 98 | end; 99 | end; 100 | 101 | function TEmployee.GetDetail(Line: Integer): Integer; 102 | begin 103 | Result := Line; 104 | end; 105 | 106 | function TEmployee.GetDetailCount: Integer; 107 | begin 108 | Result := 2; 109 | end; 110 | 111 | function TEmployee.GetImageIndex(Column: Integer; 112 | ImageKind: TEasyImageKind): Integer; 113 | begin 114 | if (Column = 0) and (ImageKind = eikNormal) then 115 | Result := FImageIndex 116 | else 117 | Result := -1; 118 | end; 119 | 120 | procedure TEmployee.OnRegisterNotify(const ANotifier: IEasyNotificationSink); 121 | begin 122 | // Remember this notifier because we will use it later to talk back to the 123 | // list item. 124 | FNotifier := ANotifier; 125 | end; 126 | 127 | procedure TEmployee.OnUnRegisterNotify(const ANotifier: IEasyNotificationSink); 128 | begin 129 | // The list item will not be available anymore and we must forget its 130 | // then useless notifier. 131 | FNotifier := nil; 132 | end; 133 | 134 | function TEmployee.QueryInterface(const IID: TGUID; out Obj): HResult; 135 | begin 136 | if GetInterface(IID, Obj) then 137 | Result := 0 138 | else 139 | Result := E_NOINTERFACE; 140 | end; 141 | 142 | function TEmployee.SetCaption(Column: Integer; const Value: Variant): Boolean; 143 | var 144 | NewName: string; 145 | begin 146 | // The caption of the given column has been edited. For this demo we 147 | // allow editing column 0 only. 148 | // You may check the input and reject it, e.g. if it does not have a suitable 149 | // format. Let's require a minimum length of 3 characters. 150 | NewName := Value; 151 | Result := (Column = 0) and (Length(NewName) >= 3); 152 | if Result then 153 | FLastname := NewName // will be invalidated automatically via IEasyCaptions 154 | // else 155 | // raise Exception.Create('name must have at least 3 characters'); 156 | end; 157 | 158 | procedure TEmployee.ToggleFunnyName; 159 | begin 160 | FLastname := ReverseString(FLastname); 161 | if FNotifier <> nil then 162 | FNotifier.InvalidateItem(True); 163 | end; 164 | 165 | function TEmployee._AddRef: Integer; 166 | begin 167 | Result := -1; 168 | end; 169 | 170 | function TEmployee._Release: Integer; 171 | begin 172 | Result := -1; 173 | end; 174 | 175 | { TEmployees } 176 | 177 | procedure TEmployees.BeSilly; 178 | begin 179 | if Count > 0 then 180 | Employees[Random(Count)].ToggleFunnyName; 181 | end; 182 | 183 | constructor TEmployees.Create; 184 | begin 185 | inherited Create; 186 | FList := TObjectList.Create; 187 | end; 188 | 189 | destructor TEmployees.Destroy; 190 | begin 191 | FList.Free; 192 | inherited; 193 | end; 194 | 195 | function TEmployees.GetCount: Integer; 196 | begin 197 | Result := FList.Count; 198 | end; 199 | 200 | function TEmployees.GetEmployee(Index: Integer): TEmployee; 201 | begin 202 | Result := TEmployee(FList[Index]); 203 | end; 204 | 205 | procedure TEmployees.Load; 206 | begin 207 | // We could load data from disk but for this demo it may suffice to have 208 | // some static data. 209 | FList.Clear; 210 | FList.Add(TEmployee.Create('Aniston', 'Jennifer', 0)); 211 | FList.Add(TEmployee.Create('Carrey', 'Jim', 1)); 212 | FList.Add(TEmployee.Create('Knightley', 'Keira', 2)); 213 | FList.Add(TEmployee.Create('Lester', 'Adrian', 3)); 214 | FList.Add(TEmployee.Create('Marceau', 'Sophie', 4)); 215 | FList.Add(TEmployee.Create('Reno', 'Jean', 5)); 216 | end; 217 | 218 | end. 219 | 220 | -------------------------------------------------------------------------------- /Demos/Basic/Simple/SimpleProject.dpr: -------------------------------------------------------------------------------- 1 | program SimpleProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TImagelists, Imagelists); 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | 17 | -------------------------------------------------------------------------------- /Demos/Basic/Simple/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 135 3 | Top = 189 4 | Caption = 'Form1' 5 | ClientHeight = 428 6 | ClientWidth = 577 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object LV: TEasyListview 18 | Left = 0 19 | Top = 33 20 | Width = 577 21 | Height = 395 22 | Align = alClient 23 | EditManager.Font.Charset = DEFAULT_CHARSET 24 | EditManager.Font.Color = clWindowText 25 | EditManager.Font.Height = -11 26 | EditManager.Font.Name = 'MS Shell Dlg 2' 27 | EditManager.Font.Style = [] 28 | UseDockManager = False 29 | Font.Charset = DEFAULT_CHARSET 30 | Font.Color = clWindowText 31 | Font.Height = -11 32 | Font.Name = 'MS Shell Dlg 2' 33 | Font.Style = [] 34 | GroupFont.Charset = DEFAULT_CHARSET 35 | GroupFont.Color = clWindowText 36 | GroupFont.Height = -11 37 | GroupFont.Name = 'MS Shell Dlg 2' 38 | GroupFont.Style = [] 39 | Header.Columns.Items = { 40 | 0600000001000000110000005445617379436F6C756D6E53746F726564FFFECE 41 | 000600000080080001010001000000000000013E020000FFFFFF1F0001000000 42 | 00000000000000000000000000000000} 43 | Header.Font.Charset = DEFAULT_CHARSET 44 | Header.Font.Color = clWindowText 45 | Header.Font.Height = -11 46 | Header.Font.Name = 'MS Shell Dlg 2' 47 | Header.Font.Style = [] 48 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 49 | PaintInfoItem.TileDetailCount = 2 50 | ParentFont = False 51 | TabOrder = 0 52 | end 53 | object Panel1: TPanel 54 | Left = 0 55 | Top = 0 56 | Width = 577 57 | Height = 33 58 | Align = alTop 59 | BevelOuter = bvNone 60 | TabOrder = 1 61 | object Label1: TLabel 62 | Left = 8 63 | Top = 8 64 | Width = 22 65 | Height = 13 66 | Caption = 'View' 67 | end 68 | object cbViews: TComboBox 69 | Left = 36 70 | Top = 6 71 | Width = 165 72 | Height = 21 73 | Style = csDropDownList 74 | TabOrder = 0 75 | OnChange = cbViewsChange 76 | end 77 | end 78 | end 79 | -------------------------------------------------------------------------------- /Demos/Basic/Simple/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: simplest way to use EasyListview (very similar to TListview) 4 | 5 | interface 6 | 7 | uses 8 | Windows, 9 | Messages, 10 | SysUtils, 11 | Variants, 12 | Classes, 13 | Graphics, 14 | Controls, 15 | Forms, 16 | Dialogs, 17 | EasyListview, 18 | StdCtrls, 19 | ExtCtrls, 20 | MPCommonObjects; 21 | 22 | type 23 | TForm1 = class(TForm) 24 | LV: TEasyListview; 25 | Panel1: TPanel; 26 | cbViews: TComboBox; 27 | Label1: TLabel; 28 | procedure cbViewsChange(Sender: TObject); 29 | procedure FormCreate(Sender: TObject); 30 | private 31 | procedure AddColumns(Count: Integer); 32 | procedure AddItems(Count: Integer); 33 | end; 34 | 35 | var 36 | Form1: TForm1; 37 | 38 | implementation 39 | 40 | uses DatamoduleImagelists, ImgList; 41 | 42 | {$R *.dfm} 43 | 44 | procedure TForm1.FormCreate(Sender: TObject); 45 | begin 46 | FillStringsWithEasyListStyles(cbViews.Items); 47 | cbViews.ItemIndex := Ord(LV.View); 48 | 49 | // Set up listview. This can be done at design time in the object inspector. 50 | // It is done here so that you can see which properties are changed. 51 | Imagelists.UseImagesForListview(LV); 52 | LV.Header.Visible := True; 53 | AddColumns(2); 54 | 55 | // Add a few items to play with. 56 | AddItems(5000); 57 | end; 58 | 59 | procedure TForm1.cbViewsChange(Sender: TObject); 60 | begin 61 | // Synchronize list style combobox with listview list style. 62 | LV.View := TEasyListStyle(cbViews.ItemIndex); 63 | end; 64 | 65 | procedure TForm1.AddColumns(Count: Integer); 66 | var 67 | Column: TEasyColumn; 68 | i: Integer; 69 | begin 70 | for i := 0 to Count - 1 do 71 | begin 72 | Column := LV.Header.Columns.Add; 73 | Column.Caption := 'Column ' + IntToStr(i); 74 | Column.ImageIndex := i; 75 | Column.Width := 150; 76 | end; 77 | end; 78 | 79 | procedure TForm1.AddItems(Count: Integer); 80 | var 81 | i: Integer; 82 | Item: TEasyItem; 83 | begin 84 | // Add items to the listview. Actually the items are added to the first 85 | // group. This group is created automatically when the first item is added. 86 | LV.BeginUpdate; 87 | try 88 | for i := 0 to Count - 1 do 89 | begin 90 | Item := LV.Items.Add; 91 | Item.Caption := 'Item ' + IntToStr(i); // this is the same as Item.Captions[0] 92 | Item.Captions[1] := 'Detail ' + IntToStr(i); 93 | Item.ImageIndex := i mod LV.ImagesSmall.Count; 94 | Item.Details[0] := 0; // Use Report Column 0 for the first Tile View Detail 95 | Item.Details[1] := 1; // Use Report Column 1 for the second Tile View Detail 96 | end; 97 | finally 98 | LV.EndUpdate; 99 | end; 100 | end; 101 | 102 | end. 103 | 104 | -------------------------------------------------------------------------------- /Demos/Basic/Virtual/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 204 3 | Top = 221 4 | Caption = 'Form1' 5 | ClientHeight = 430 6 | ClientWidth = 579 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object LV: TEasyListview 18 | Left = 0 19 | Top = 33 20 | Width = 579 21 | Height = 397 22 | Align = alClient 23 | EditManager.Font.Charset = DEFAULT_CHARSET 24 | EditManager.Font.Color = clWindowText 25 | EditManager.Font.Height = -11 26 | EditManager.Font.Name = 'MS Shell Dlg 2' 27 | EditManager.Font.Style = [] 28 | UseDockManager = False 29 | Font.Charset = DEFAULT_CHARSET 30 | Font.Color = clWindowText 31 | Font.Height = -11 32 | Font.Name = 'MS Shell Dlg 2' 33 | Font.Style = [] 34 | GroupFont.Charset = DEFAULT_CHARSET 35 | GroupFont.Color = clWindowText 36 | GroupFont.Height = -11 37 | GroupFont.Name = 'MS Shell Dlg 2' 38 | GroupFont.Style = [] 39 | Header.Columns.Items = { 40 | 0600000001000000110000005445617379436F6C756D6E53746F726564FFFECE 41 | 0006000000800800010100010000000000000140020000FFFFFF1F0001000000 42 | 00000000000000000000000000000000} 43 | Header.Font.Charset = DEFAULT_CHARSET 44 | Header.Font.Color = clWindowText 45 | Header.Font.Height = -11 46 | Header.Font.Name = 'MS Shell Dlg 2' 47 | Header.Font.Style = [] 48 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 49 | ParentFont = False 50 | TabOrder = 0 51 | OnItemGetCaption = LVItemGetCaption 52 | OnItemGetImageIndex = LVItemGetImageIndex 53 | OnItemGetTileDetail = LVItemGetTileDetail 54 | OnItemGetTileDetailCount = LVItemGetTileDetailCount 55 | end 56 | object Panel1: TPanel 57 | Left = 0 58 | Top = 0 59 | Width = 579 60 | Height = 33 61 | Align = alTop 62 | BevelOuter = bvNone 63 | TabOrder = 1 64 | object Label1: TLabel 65 | Left = 8 66 | Top = 8 67 | Width = 22 68 | Height = 13 69 | Caption = 'View' 70 | end 71 | object cbViews: TComboBox 72 | Left = 36 73 | Top = 6 74 | Width = 165 75 | Height = 21 76 | Style = csDropDownList 77 | TabOrder = 0 78 | OnChange = cbViewsChange 79 | end 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /Demos/Basic/Virtual/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: use EasyListview with virtual data 4 | // 5 | // In this mode the listview does not store item captions, imageindexes etc but 6 | // asks for them on the fly when it needs them, using one of the data callback 7 | // events: 8 | // OnColumnGetCaption 9 | // OnColumnGetDetail 10 | // OnColumnGet... 11 | // OnGroupGetCaption 12 | // OnGroupGetDetail 13 | // OnGroupGet... 14 | // OnItemGetCaption 15 | // OnItemGetTileDetail 16 | // OnItemGet... 17 | // 18 | // This allows you to store the data anywhere you want. You can even reuse your 19 | // existing data structures and simply use the listview as view into your data. 20 | 21 | interface 22 | 23 | uses 24 | Windows, 25 | Messages, 26 | SysUtils, 27 | Variants, 28 | Classes, 29 | Graphics, 30 | Controls, 31 | Forms, 32 | Dialogs, 33 | EasyListview, 34 | StdCtrls, 35 | ExtCtrls, MPCommonObjects; 36 | 37 | type 38 | TForm1 = class(TForm) 39 | LV: TEasyListview; 40 | Panel1: TPanel; 41 | cbViews: TComboBox; 42 | Label1: TLabel; 43 | procedure LVItemGetImageIndex(Sender: TCustomEasyListview; 44 | const Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; 45 | var ImageIndex: TCommonImageIndexInteger); 46 | procedure LVItemGetCaption(Sender: TCustomEasyListview; 47 | const Item: TEasyItem; Column: Integer; var Caption: string); 48 | procedure cbViewsChange(Sender: TObject); 49 | procedure FormCreate(Sender: TObject); 50 | procedure LVItemGetTileDetailCount(Sender: TCustomEasyListview; 51 | const Item: TEasyItem; var Count: Integer); 52 | procedure LVItemGetTileDetail(Sender: TCustomEasyListview; 53 | const Item: TEasyItem; Line: Integer; var Detail: Integer); 54 | private 55 | procedure AddColumns(Count: Integer); 56 | procedure AddItems(Count: Integer); 57 | end; 58 | 59 | var 60 | Form1: TForm1; 61 | 62 | implementation 63 | 64 | uses DatamoduleImagelists, ImgList; 65 | 66 | {$R *.dfm} 67 | 68 | procedure TForm1.FormCreate(Sender: TObject); 69 | begin 70 | FillStringsWithEasyListStyles(cbViews.Items); 71 | cbViews.ItemIndex := Ord(LV.View); 72 | 73 | // Set up listview. This can be done at design time in the object inspector. 74 | // It is done here so that you can see which properties are changed. 75 | Imagelists.UseImagesForListview(LV); 76 | LV.Header.Visible := True; 77 | AddColumns(2); 78 | 79 | // Add a few items to play with. 80 | AddItems(5000); 81 | end; 82 | 83 | procedure TForm1.cbViewsChange(Sender: TObject); 84 | begin 85 | // Synchronize list style combobox with listview list style. 86 | LV.View := TEasyListStyle(cbViews.ItemIndex); 87 | end; 88 | 89 | procedure TForm1.AddColumns(Count: Integer); 90 | var 91 | Column: TEasyColumn; 92 | i: Integer; 93 | begin 94 | // Columns can also be virtual and query their caption (etc) on the fly. It 95 | // works in the same way as with items. Here, the columns are static for 96 | // simplicity. 97 | LV.Header.Columns.Clear; //Clear the first column if it exists 98 | for i := 0 to Count - 1 do 99 | begin 100 | Column := LV.Header.Columns.Add; 101 | Column.Caption := 'Column ' + IntToStr(i); 102 | Column.ImageIndex := i; 103 | Column.Width := 150; 104 | end; 105 | end; 106 | 107 | procedure TForm1.AddItems(Count: Integer); 108 | var 109 | i: Integer; 110 | begin 111 | // Add items to the listview. Actually the items are added to the first 112 | // group. This group is created automatically when the first item is added. 113 | LV.BeginUpdate; 114 | try 115 | for i := 0 to Count - 1 do 116 | LV.Items.AddVirtual; 117 | finally 118 | LV.EndUpdate; 119 | end; 120 | end; 121 | 122 | procedure TForm1.LVItemGetCaption(Sender: TCustomEasyListview; 123 | const Item: TEasyItem; Column: Integer; var Caption: string); 124 | begin 125 | case Column of 126 | 0: Caption := 'Item ' + IntToStr(Item.Index); 127 | 1: Caption := 'Detail ' + IntToStr(Item.Index); 128 | end; 129 | end; 130 | 131 | procedure TForm1.LVItemGetImageIndex(Sender: TCustomEasyListview; 132 | const Item: TEasyItem; Column: Integer; ImageKind: TEasyImageKind; 133 | var ImageIndex: TCommonImageIndexInteger); 134 | begin 135 | if ImageKind = eikNormal then // important, make sure you don't return normal images for states or overlays 136 | ImageIndex := Item.Index mod LV.ImagesSmall.Count; 137 | end; 138 | 139 | procedure TForm1.LVItemGetTileDetailCount(Sender: TCustomEasyListview; 140 | const Item: TEasyItem; var Count: Integer); 141 | begin 142 | Count := 2 143 | end; 144 | 145 | procedure TForm1.LVItemGetTileDetail(Sender: TCustomEasyListview; 146 | const Item: TEasyItem; Line: Integer; var Detail: Integer); 147 | begin 148 | // Map the Detail to a Header Column index 149 | Detail := Line; 150 | if Detail > LV.Header.Columns.Count - 1 then 151 | Detail := 0 152 | end; 153 | 154 | end. 155 | 156 | -------------------------------------------------------------------------------- /Demos/Basic/Virtual/VirtualProject.dpr: -------------------------------------------------------------------------------- 1 | program VirtualProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TImagelists, Imagelists); 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | 17 | -------------------------------------------------------------------------------- /Demos/Context Menus/ContextMenuProject.dpr: -------------------------------------------------------------------------------- 1 | program ContextMenuProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Context Menus/ProjectGroupContextMenus.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl ContextMenuProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | EasyListviewD7.bpl: ..\..\Delphi\EasyListviewD7.dpk 18 | $(DCC) 19 | 20 | EasyListviewD7D.bpl: ..\..\Delphi\EasyListviewD7D.dpk 21 | $(DCC) 22 | 23 | ContextMenuProject.exe: ContextMenuProject.dpr 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/Context Menus/README-WIN.TXT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Context Menus/README-WIN.TXT -------------------------------------------------------------------------------- /Demos/Context Menus/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, 7 | Messages, 8 | SysUtils, 9 | Variants, 10 | Classes, 11 | Graphics, 12 | Controls, 13 | Forms, 14 | Dialogs, 15 | ImgList, 16 | EasyListview, 17 | StdCtrls, 18 | ExtCtrls, 19 | Menus, MPCommonObjects; 20 | 21 | type 22 | TForm1 = class(TForm) 23 | ELV: TEasyListview; 24 | ImageListSmall: TImageList; 25 | ImageListLarge: TImageList; 26 | ImageListGroup: TImageList; 27 | Panel1: TPanel; 28 | cbViews: TComboBox; 29 | PopupMenuItem: TPopupMenu; 30 | PopupMenuGroup: TPopupMenu; 31 | PopupMenuColumn: TPopupMenu; 32 | ItemSelectetd1: TMenuItem; 33 | GroupSelected1: TMenuItem; 34 | ColumnSelected1: TMenuItem; 35 | PopupMenuGeneric: TPopupMenu; 36 | GenericPopup1: TMenuItem; 37 | CheckBoxSpecialItem: TCheckBox; 38 | CheckBoxSpecialGroup: TCheckBox; 39 | CheckBoxSpecialColumn: TCheckBox; 40 | PopupMenuHeaderBackground: TPopupMenu; 41 | HeaderBackgroundMenu1: TMenuItem; 42 | PopupMenuHeader: TPopupMenu; 43 | DefaultHeaderMenu1: TMenuItem; 44 | procedure FormShow(Sender: TObject); 45 | procedure cbViewsChange(Sender: TObject); 46 | procedure ELVColumnContextMenu(Sender: TCustomEasyListview; 47 | HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; 48 | var Menu: TPopupMenu); 49 | procedure ELVGroupContextMenu(Sender: TCustomEasyListview; 50 | HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; 51 | var Menu: TPopupMenu; var Handled: Boolean); 52 | procedure ELVItemContextMenu(Sender: TCustomEasyListview; 53 | HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; 54 | var Handled: Boolean); 55 | private 56 | { Private declarations } 57 | public 58 | { Public declarations } 59 | end; 60 | 61 | var 62 | Form1: TForm1; 63 | 64 | implementation 65 | 66 | {$R *.dfm} 67 | 68 | procedure TForm1.FormShow(Sender: TObject); 69 | var 70 | i, j: Integer; 71 | Group: TEasyGroup; 72 | Column: TEasyColumn; 73 | Item: TEasyItem; 74 | begin 75 | FillStringsWithEasyListStyles(cbViews.Items); 76 | cbViews.ItemIndex := Ord(ELV.View); 77 | 78 | ELV.BeginUpdate(); 79 | try 80 | for i := 0 to 2 do 81 | begin 82 | Column := ELV.Header.Columns.Add(); 83 | Column.Caption := 'Column: ' + IntToStr(i); 84 | Column.Width := 100; 85 | end; 86 | 87 | ELV.PaintInfoItem.TileDetailCount := 3; 88 | for i := 0 to 9 do 89 | begin 90 | Group := ELV.Groups.Add(); 91 | Group.Caption := 'Group: ' + IntToStr(i); 92 | Group.ImageIndex := i mod ImageListGroup.Count; 93 | for j := 0 to Random(10) + 10 do 94 | begin 95 | Item := Group.Items.Add(); 96 | Item.Caption := 'Item: ' + IntToStr(j); 97 | Item.ImageIndex := j mod ImageListSmall.Count; 98 | Item.Captions[1] := 'Detail 1'; 99 | Item.Captions[2] := 'Detail 2'; 100 | // Select which Column will supply the Detail in Tile view 101 | Item.Details[1] := 1; 102 | Item.Details[2] := 2; 103 | end 104 | end; 105 | finally 106 | ELV.ShowGroupMargins := True; 107 | ELV.EndUpdate(); 108 | end 109 | end; 110 | 111 | procedure TForm1.cbViewsChange(Sender: TObject); 112 | begin 113 | ELV.View := TEasyListStyle( cbViews.ItemIndex); 114 | end; 115 | 116 | procedure TForm1.ELVColumnContextMenu(Sender: TCustomEasyListview; 117 | HitInfo: TEasyHitInfoColumn; WindowPoint: TPoint; var Menu: TPopupMenu); 118 | begin 119 | if CheckBoxSpecialColumn.Checked then 120 | begin 121 | if Assigned(HitInfo.Column) then 122 | Menu := PopupMenuColumn 123 | else 124 | Menu := PopupMenuHeaderBackground 125 | end 126 | end; 127 | 128 | procedure TForm1.ELVGroupContextMenu(Sender: TCustomEasyListview; 129 | HitInfo: TEasyHitInfoGroup; WindowPoint: TPoint; var Menu: TPopupMenu; 130 | var Handled: Boolean); 131 | begin 132 | if CheckBoxSpecialGroup.Checked and (HitInfo.HitInfo <> []) then 133 | Menu := PopupMenuGroup 134 | end; 135 | 136 | procedure TForm1.ELVItemContextMenu(Sender: TCustomEasyListview; 137 | HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; 138 | var Handled: Boolean); 139 | begin 140 | // Only show the Item menu if it is on the Icon or the Text 141 | if CheckBoxSpecialItem.Checked and (HitInfo.HitInfo * [ehtOnIcon, ehtOnText] <> []) then 142 | Menu := PopupMenuItem 143 | end; 144 | 145 | end. 146 | 147 | 148 | -------------------------------------------------------------------------------- /Demos/DemoBuildProjectGroup.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = UserInterfaceDataProject.exe SimpleProject.exe VirtualProject.exe \ 13 | FullDemoProject.exe HintProject.exe ContextMenuProject.exe \ 14 | OLEDragDropProject.exe VCLDragDropProject.exe InterfacedPartOneProject.exe \ 15 | InterfacedPartTwoProject.exe ImageCustomDrawProject.exe GridProject.exe \ 16 | TaskbandProject.exe OLEDragDropExplorerProject.exe ThumbScrollerProject.exe \ 17 | ScrollButtonProject.exe CustomProject.exe ItemCustomDrawProject.exe \ 18 | ItemCustomDrawProjectAdv.exe SortingProject.exe TaskPanelProject.exe 19 | #------------------------------------------------------------------------------ 20 | default: $(PROJECTS) 21 | #------------------------------------------------------------------------------ 22 | 23 | SimpleProject.exe: Basic\Simple\SimpleProject.dpr 24 | $(DCC) 25 | 26 | VirtualProject.exe: Basic\Virtual\VirtualProject.dpr 27 | $(DCC) 28 | 29 | FullDemoProject.exe: Fulldemo\FullDemoProject.dpr 30 | $(DCC) 31 | 32 | HintProject.exe: Hints\HintProject.dpr 33 | $(DCC) 34 | 35 | ContextMenuProject.exe: Context Menus\ContextMenuProject.dpr 36 | $(DCC) 37 | 38 | OLEDragDropProject.exe: DragDrop\OLE DragDrop\OLEDragDropProject.dpr 39 | $(DCC) 40 | 41 | VCLDragDropProject.exe: DragDrop\VCL DragDrop\VCLDragDropProject.dpr 42 | $(DCC) 43 | 44 | UserInterfaceDataProject.exe: Basic\Interfaced (Jim)\UserInterfaceDataProject.dpr 45 | $(DCC) 46 | 47 | InterfacedPartOneProject.exe: Basic\Interfaced Part One\InterfacedPartOneProject.dpr 48 | $(DCC) 49 | 50 | InterfacedPartTwoProject.exe: Basic\Interfaced Part Two\InterfacedPartTwoProject.dpr 51 | $(DCC) 52 | 53 | ImageCustomDrawProject.exe: Image CustomDraw\ImageCustomDrawProject.dpr 54 | $(DCC) 55 | 56 | GridProject.exe: Grid\GridProject.dpr 57 | $(DCC) 58 | 59 | TaskbandProject.exe: Taskband\TaskbandProject.dpr 60 | $(DCC) 61 | 62 | OLEDragDropExplorerProject.exe: DragDrop\OLE DragDrop Explorer\OLEDragDropExplorerProject.dpr 63 | $(DCC) 64 | 65 | ThumbScrollerProject.exe: ThumbScroller\ThumbScrollerProject.dpr 66 | $(DCC) 67 | 68 | ScrollButtonProject.exe: ScrollButton\ScrollButtonProject.dpr 69 | $(DCC) 70 | 71 | CustomProject.exe: Basic\Custom Items\CustomProject.dpr 72 | $(DCC) 73 | 74 | ItemCustomDrawProject.exe: Item CustomDraw\ItemCustomDrawProject.dpr 75 | $(DCC) 76 | 77 | ItemCustomDrawProjectAdv.exe: Item CustomDraw Advanced\ItemCustomDrawProjectAdv.dpr 78 | $(DCC) 79 | 80 | SortingProject.exe: Sorting\SortingProject.dpr 81 | $(DCC) 82 | 83 | TaskPanelProject.exe: TaskPanel\TaskPanelProject.dpr 84 | $(DCC) 85 | 86 | 87 | -------------------------------------------------------------------------------- /Demos/DesignTime Test/Project1.dpr: -------------------------------------------------------------------------------- 1 | program Project1; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/DesignTime Test/ProjectGroup1.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl Project1.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | Project1.exe: Project1.dpr 18 | $(DCC) 19 | 20 | EasyListviewD7.bpl: ..\..\Delphi\EasyListviewD7.dpk 21 | $(DCC) 22 | 23 | EasyListviewD7D.bpl: ..\..\Delphi\EasyListviewD7D.dpk 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/DesignTime Test/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, 7 | Messages, 8 | SysUtils, 9 | Classes, 10 | Graphics, 11 | Controls, 12 | Forms, 13 | Dialogs, 14 | MPCommonObjects, 15 | MPCommonUtilities, 16 | EasyListview, 17 | ImgList, 18 | StdCtrls, 19 | ExtCtrls, 20 | ActiveX; 21 | 22 | type 23 | TForm1 = class(TForm) 24 | LV: TEasyListview; 25 | ImageListItemsSmall: TImageList; 26 | ImageListItemsLarge: TImageList; 27 | ImageListItemsExLarge: TImageList; 28 | ImageListGroups: TImageList; 29 | Panel1: TPanel; 30 | ComboBox1: TComboBox; 31 | ImageListColumns: TImageList; 32 | CheckBox1: TCheckBox; 33 | Button1: TButton; 34 | EasyListview1: TEasyListview; 35 | Button2: TButton; 36 | CheckBox2: TCheckBox; 37 | procedure ComboBox1Change(Sender: TObject); 38 | procedure FormCreate(Sender: TObject); 39 | procedure FormShow(Sender: TObject); 40 | procedure CheckBox1Click(Sender: TObject); 41 | procedure Button1Click(Sender: TObject); 42 | procedure Button2Click(Sender: TObject); 43 | procedure CheckBox2Click(Sender: TObject); 44 | procedure LVOLEDragOver(Sender: TCustomEasyListview; 45 | KeyState: TCommonKeyStates; WindowPt: TPoint; 46 | AvailableEffects: TCommonDropEffects; 47 | var DesiredDropEffect: TCommonDropEffect); 48 | procedure LVOLEDragStart(Sender: TCustomEasyListview; 49 | ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; 50 | var AllowDrag: Boolean); 51 | private 52 | { Private declarations } 53 | public 54 | { Public declarations } 55 | end; 56 | 57 | var 58 | Form1: TForm1; 59 | 60 | implementation 61 | 62 | {$R *.dfm} 63 | 64 | procedure TForm1.ComboBox1Change(Sender: TObject); 65 | begin 66 | LV.View := TEasyListStyle(ComboBox1.ItemIndex) 67 | end; 68 | 69 | procedure TForm1.FormCreate(Sender: TObject); 70 | begin 71 | ComboBox1.ItemIndex := 0; 72 | end; 73 | 74 | procedure TForm1.FormShow(Sender: TObject); 75 | begin 76 | ComboBox1.ItemIndex := Integer(LV.View); 77 | end; 78 | 79 | procedure TForm1.CheckBox1Click(Sender: TObject); 80 | begin 81 | LV.Selection.AlphaBlendSelRect := CheckBox1.Checked 82 | end; 83 | 84 | procedure TForm1.Button1Click(Sender: TObject); 85 | begin 86 | LV.Header.Columns[0].Position := 1; 87 | end; 88 | 89 | procedure TForm1.Button2Click(Sender: TObject); 90 | var 91 | i: Integer; 92 | begin 93 | for i := 0 to LV.Header.Columns.Count - 1 do 94 | begin 95 | if Integer(LV.Header.Columns[i].SortDirection) = 2 then 96 | LV.Header.Columns[i].SortDirection := esdNone 97 | else 98 | LV.Header.Columns[i].SortDirection := TEasySortDirection( Integer(LV.Header.Columns[i].SortDirection) + 1); 99 | end 100 | end; 101 | 102 | procedure TForm1.CheckBox2Click(Sender: TObject); 103 | var 104 | i: Integer; 105 | begin 106 | for i := 0 to LV.Header.Columns.Count - 1 do 107 | LV.Header.Columns[i].AutoToggleSortGlyph := CheckBox2.Checked 108 | end; 109 | 110 | procedure TForm1.LVOLEDragOver(Sender: TCustomEasyListview; 111 | KeyState: TCommonKeyStates; WindowPt: TPoint; 112 | AvailableEffects: TCommonDropEffects; 113 | var DesiredDropEffect: TCommonDropEffect); 114 | begin 115 | DesiredDropEffect := cdeMove; 116 | end; 117 | 118 | procedure TForm1.LVOLEDragStart(Sender: TCustomEasyListview; 119 | ADataObject: IDataObject; var AvailableEffects: TCommonDropEffects; 120 | var AllowDrag: Boolean); 121 | begin 122 | AllowDrag := True; 123 | AvailableEffects := [cdeMove] 124 | end; 125 | 126 | end. 127 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O- 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"d:\borland\delphi7\Projects\Bpl" 35 | -LN"d:\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=0 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;indy;vclie;xmlrtl;inetdbbde;inet;inetdbxpress;dbrtl;soaprtl;dsnap;VclSmp;dbexpress;vcldb;dbxcds;inetdb;bdertl;vcldbx;adortl;teeui;teedb;tee;ibxpress;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOfficeXP;TntUnicodeVcl_R70;tb2k_d7;SpTBXLib_d7 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Language] 109 | ActiveLang= 110 | ProjectLang= 111 | RootDir=D:\Borland\Delphi7\Bin\ 112 | [Version Info] 113 | IncludeVerInfo=0 114 | AutoIncBuild=0 115 | MajorVer=1 116 | MinorVer=0 117 | Release=0 118 | Build=0 119 | Debug=0 120 | PreRelease=0 121 | Special=0 122 | Private=0 123 | DLL=0 124 | Locale=1033 125 | CodePage=1252 126 | [Version Info Keys] 127 | CompanyName= 128 | FileDescription= 129 | FileVersion=1.0.0.0 130 | InternalName= 131 | LegalCopyright= 132 | LegalTrademarks= 133 | OriginalFilename= 134 | ProductName= 135 | ProductVersion=1.0.0.0 136 | Comments= 137 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.dpr: -------------------------------------------------------------------------------- 1 | program OLEDragDropExplorerProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/DragDrop/OLE DragDrop Explorer/OLEDragDropExplorerProject.res -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop/OLEDragDropProject.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O- 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"d:\borland\delphi7\Projects\Bpl" 35 | -LN"d:\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=0 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;indy;vclie;xmlrtl;inetdbbde;inet;inetdbxpress;dbrtl;soaprtl;dsnap;VclSmp;dbexpress;vcldb;dbxcds;inetdb;bdertl;vcldbx;adortl;teeui;teedb;tee;ibxpress;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOfficeXP;TntUnicodeVcl_R70;tb2k_d7;SpTBXLib_d7 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Language] 109 | ActiveLang= 110 | ProjectLang= 111 | RootDir=D:\Borland\Delphi7\Bin\ 112 | [Version Info] 113 | IncludeVerInfo=0 114 | AutoIncBuild=0 115 | MajorVer=1 116 | MinorVer=0 117 | Release=0 118 | Build=0 119 | Debug=0 120 | PreRelease=0 121 | Special=0 122 | Private=0 123 | DLL=0 124 | Locale=1033 125 | CodePage=1252 126 | [Version Info Keys] 127 | CompanyName= 128 | FileDescription= 129 | FileVersion=1.0.0.0 130 | InternalName= 131 | LegalCopyright= 132 | LegalTrademarks= 133 | OriginalFilename= 134 | ProductName= 135 | ProductVersion=1.0.0.0 136 | Comments= 137 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop/OLEDragDropProject.dpr: -------------------------------------------------------------------------------- 1 | program OLEDragDropProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop/OLEDragDropProject.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/DragDrop/OLE DragDrop/OLEDragDropProject.res -------------------------------------------------------------------------------- /Demos/DragDrop/OLE DragDrop/OLEDragDropProjectGroup1.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl OLEDragDropProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | OLEDragDropProject.exe: OLEDragDropProject.dpr 18 | $(DCC) 19 | 20 | EasyListviewD7.bpl: ..\..\..\Delphi\EasyListviewD7.dpk 21 | $(DCC) 22 | 23 | EasyListviewD7D.bpl: ..\..\..\Delphi\EasyListviewD7D.dpk 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/DragDrop/VCL DragDrop/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 7 | ExtCtrls, StdCtrls, ActiveX, ImgList, MPCommonObjects, EasyListview; 8 | 9 | type 10 | TForm1 = class(TForm) 11 | Panel1: TPanel; 12 | Label1: TLabel; 13 | Label2: TLabel; 14 | LabelDragItem: TLabel; 15 | LabelDraggingOverItem: TLabel; 16 | LabelDragDropItem: TLabel; 17 | LabelDragDroppedItem: TLabel; 18 | Splitter1: TSplitter; 19 | ImageList1: TImageList; 20 | Label3: TLabel; 21 | LabelTargetCC: TLabel; 22 | Label4: TLabel; 23 | LabelMousePosX: TLabel; 24 | LabelMousePosY: TLabel; 25 | Label5: TLabel; 26 | Label6: TLabel; 27 | ELV1: TEasyListview; 28 | ELV2: TEasyListview; 29 | Splitter2: TSplitter; 30 | cbViews: TComboBox; 31 | CheckBoxMultiSelect: TCheckBox; 32 | CheckBoxHeader: TCheckBox; 33 | CheckBoxEnable: TCheckBox; 34 | procedure FormCreate(Sender: TObject); 35 | procedure ELV1DragDrop(Sender, Source: TObject; X, Y: Integer); 36 | procedure ELV1DragOver(Sender, Source: TObject; X, Y: Integer; 37 | State: TDragState; var Accept: Boolean); 38 | procedure ELV2DragOver(Sender, Source: TObject; X, Y: Integer; 39 | State: TDragState; var Accept: Boolean); 40 | procedure ELV2StartDrag(Sender: TObject; var DragObject: TDragObject); 41 | procedure ELV1StartDrag(Sender: TObject; var DragObject: TDragObject); 42 | procedure ELV2DragDrop(Sender, Source: TObject; X, Y: Integer); 43 | procedure cbViewsChange(Sender: TObject); 44 | procedure CheckBoxMultiSelectClick(Sender: TObject); 45 | procedure CheckBoxHeaderClick(Sender: TObject); 46 | procedure CheckBoxEnableClick(Sender: TObject); 47 | procedure FormShow(Sender: TObject); 48 | private 49 | { Private declarations } 50 | public 51 | { Public declarations } 52 | end; 53 | 54 | var 55 | Form1: TForm1; 56 | 57 | implementation 58 | 59 | {$R *.dfm} 60 | 61 | procedure TForm1.FormCreate(Sender: TObject); 62 | var 63 | i: Integer; 64 | Item: TEasyCollectionItem; 65 | Group: TEasyCollectionItem; 66 | begin 67 | cbViews.ItemIndex := 0; 68 | ELV1.BeginUpdate(); 69 | ELV2.BeginUpdate(); 70 | Group := ELV1.Groups.Add; 71 | Group.Caption := 'Group 1'; 72 | for i := 0 to 99 do 73 | begin 74 | Item := ELV1.Groups[0].Items.Add; 75 | Item.Caption := 'Item: ' + IntToStr(Item.Index); 76 | Item.ImageIndex := 0; 77 | end; 78 | Group := ELV2.Groups.Add; 79 | Group.Caption := 'Group 2'; 80 | for i := 0 to 99 do 81 | begin 82 | Item := ELV2.Groups[0].Items.Add;; 83 | Item.Caption := 'Item: ' + IntToStr(Item.Index); 84 | Item.ImageIndex := 1; 85 | end; 86 | ELV1.EndUpdate(); 87 | ELV2.EndUpdate(); 88 | Mouse.DragImmediate := False; 89 | end; 90 | 91 | procedure TForm1.ELV1DragDrop(Sender, Source: TObject; X, Y: Integer); 92 | begin 93 | // Update the UI 94 | if Assigned(ELV1.DragManager.DropTarget) then 95 | LabelDragDroppedItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index) 96 | else 97 | LabelDragDroppedItem.Caption := '[Background]'; 98 | LabelTargetCC.Caption := '[None]'; 99 | end; 100 | 101 | procedure TForm1.ELV1DragOver(Sender, Source: TObject; X, Y: Integer; 102 | State: TDragState; var Accept: Boolean); 103 | begin 104 | case State of 105 | dsDragMove: 106 | begin 107 | // Update the UI 108 | if Assigned(ELV1.DragManager.DropTarget) then 109 | LabelDraggingOverItem.Caption := IntToStr(ELV1.DragManager.DropTarget.Index) 110 | else 111 | LabelDraggingOverItem.Caption := '-1'; 112 | LabelDragDroppedItem.Caption := '-1'; 113 | LabelTargetCC.Caption := '1'; 114 | LabelMousePosX.Caption := IntToStr(X); 115 | LabelMousePosY.Caption := IntToStr(Y); 116 | LabelDraggingOverItem.Update; 117 | end; 118 | dsDragLeave: 119 | begin 120 | LabelTargetCC.Caption := '[None]'; 121 | LabelMousePosX.Caption := '-1'; 122 | LabelMousePosY.Caption := '-1'; 123 | end; 124 | dsDragEnter: 125 | begin 126 | end 127 | end; 128 | end; 129 | 130 | procedure TForm1.ELV2DragOver(Sender, Source: TObject; X, Y: Integer; 131 | State: TDragState; var Accept: Boolean); 132 | begin 133 | case State of 134 | dsDragMove: 135 | begin 136 | // Update the UI 137 | if Assigned(ELV2.DragManager.DropTarget) then 138 | LabelDraggingOverItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index) 139 | else 140 | LabelDraggingOverItem.Caption := '-1'; 141 | LabelDragDroppedItem.Caption := '-1'; 142 | LabelTargetCC.Caption := '2'; 143 | LabelMousePosX.Caption := IntToStr(X); 144 | LabelMousePosY.Caption := IntToStr(Y); 145 | LabelDraggingOverItem.Update; 146 | end; 147 | dsDragLeave: 148 | begin 149 | LabelTargetCC.Caption := '[None]'; 150 | LabelMousePosX.Caption := '-1'; 151 | LabelMousePosY.Caption := '-1'; 152 | end; 153 | dsDragEnter: 154 | begin 155 | end 156 | end; 157 | end; 158 | 159 | procedure TForm1.ELV2StartDrag(Sender: TObject; 160 | var DragObject: TDragObject); 161 | begin 162 | // Update the UI 163 | if Assigned(ELV2.DragManager.DragItem) then 164 | LabelDragItem.Caption := IntToStr(ELV2.DragManager.DragItem.Index) 165 | else 166 | LabelDraggingOverItem.Caption := '-1'; 167 | LabelDragDroppedItem.Caption := IntToStr(-1); 168 | LabelDragItem.Update; 169 | LabelDragDroppedItem.Update; 170 | end; 171 | 172 | procedure TForm1.ELV1StartDrag(Sender: TObject; 173 | var DragObject: TDragObject); 174 | begin 175 | // Update the UI 176 | if Assigned(ELV1.DragManager.DragItem) then 177 | LabelDragItem.Caption := IntToStr(ELV1.DragManager.DragItem.Index) 178 | else 179 | LabelDraggingOverItem.Caption := '-1'; 180 | LabelDragDroppedItem.Caption := IntToStr(-1); 181 | LabelDragItem.Update; 182 | LabelDragDroppedItem.Update; 183 | end; 184 | 185 | procedure TForm1.ELV2DragDrop(Sender, Source: TObject; X, Y: Integer); 186 | begin 187 | // Update the UI 188 | if Assigned(ELV2.DragManager.DropTarget) then 189 | LabelDragDroppedItem.Caption := IntToStr(ELV2.DragManager.DropTarget.Index) 190 | else 191 | LabelDragDroppedItem.Caption := '[Background]'; 192 | 193 | LabelTargetCC.Caption := '[None]'; 194 | end; 195 | 196 | procedure TForm1.cbViewsChange(Sender: TObject); 197 | begin 198 | ELV1.View := TEasyListStyle(cbViews.ItemIndex); 199 | ELV2.View := TEasyListStyle(cbViews.ItemIndex); 200 | end; 201 | 202 | procedure TForm1.CheckBoxMultiSelectClick(Sender: TObject); 203 | begin 204 | ELV1.Selection.MultiSelect := CheckBoxMultiSelect.Checked; 205 | ELV1.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked; 206 | ELV2.Selection.MultiSelect := CheckBoxMultiSelect.Checked; 207 | ELV2.Selection.EnableDragSelect := CheckBoxMultiSelect.Checked; 208 | end; 209 | 210 | procedure TForm1.CheckBoxHeaderClick(Sender: TObject); 211 | begin 212 | ELV1.Header.Visible := CheckBoxHeader.Checked; 213 | ELV2.Header.Visible := CheckBoxHeader.Checked; 214 | end; 215 | 216 | procedure TForm1.CheckBoxEnableClick(Sender: TObject); 217 | begin 218 | ELV1.DragManager.Enabled := CheckBoxEnable.Checked; 219 | ELV2.DragManager.Enabled := CheckBoxEnable.Checked 220 | end; 221 | 222 | procedure TForm1.FormShow(Sender: TObject); 223 | begin 224 | FillStringsWithEasyListStyles(cbViews.Items); 225 | cbViews.ItemIndex := Ord(ELV1.View); 226 | end; 227 | 228 | end. 229 | -------------------------------------------------------------------------------- /Demos/DragDrop/VCL DragDrop/VCLDragDropProject.dpr: -------------------------------------------------------------------------------- 1 | program VCLDragDropProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/DragDrop/VCL DragDrop/VCLDragDropProjectGroup1.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl VCLDragDropProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | VCLDragDropProject.exe: VCLDragDropProject.dpr 18 | $(DCC) 19 | 20 | EasyListviewD7.bpl: ..\..\..\Delphi\EasyListviewD7.dpk 21 | $(DCC) 22 | 23 | EasyListviewD7D.bpl: ..\..\..\Delphi\EasyListviewD7D.dpk 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/Fulldemo/FullDemoProject.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O- 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"d:\borland\delphi7\Projects\Bpl" 35 | -LN"d:\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /Demos/Fulldemo/FullDemoProject.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=0 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;indy;vclie;xmlrtl;inetdbbde;inet;inetdbxpress;dbrtl;soaprtl;dsnap;VclSmp;dbexpress;vcldb;dbxcds;inetdb;bdertl;vcldbx;adortl;teeui;teedb;tee;ibxpress;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOfficeXP;TntUnicodeVcl_R70;tb2k_d7;SpTBXLib_d7 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Language] 109 | ActiveLang= 110 | ProjectLang= 111 | RootDir=D:\Borland\Delphi7\Bin\ 112 | [Version Info] 113 | IncludeVerInfo=0 114 | AutoIncBuild=0 115 | MajorVer=1 116 | MinorVer=0 117 | Release=0 118 | Build=0 119 | Debug=0 120 | PreRelease=0 121 | Special=0 122 | Private=0 123 | DLL=0 124 | Locale=1033 125 | CodePage=1252 126 | [Version Info Keys] 127 | CompanyName= 128 | FileDescription= 129 | FileVersion=1.0.0.0 130 | InternalName= 131 | LegalCopyright= 132 | LegalTrademarks= 133 | OriginalFilename= 134 | ProductName= 135 | ProductVersion=1.0.0.0 136 | Comments= 137 | -------------------------------------------------------------------------------- /Demos/Fulldemo/FullDemoProject.dpr: -------------------------------------------------------------------------------- 1 | program FullDemoProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TImagelists, Imagelists); 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Demos/Fulldemo/FullDemoProject.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Fulldemo/FullDemoProject.res -------------------------------------------------------------------------------- /Demos/Fulldemo/ProjectGroup.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl FullDemoProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | EasyListviewD7.bpl: ..\..\Delphi\EasyListviewD7.dpk 18 | $(DCC) 19 | 20 | EasyListviewD7D.bpl: ..\..\Delphi\EasyListviewD7D.dpk 21 | $(DCC) 22 | 23 | FullDemoProject.exe: FullDemoProject.dpr 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/Fulldemo/Unit1.dfm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Fulldemo/Unit1.dfm -------------------------------------------------------------------------------- /Demos/Grid/GridProject.dpr: -------------------------------------------------------------------------------- 1 | program GridProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Grid/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 192 3 | Top = 114 4 | Width = 696 5 | Height = 480 6 | Caption = 'Form1' 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnShow = FormShow 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object SG: TEasyListview 18 | Left = 209 19 | Top = 0 20 | Width = 479 21 | Height = 446 22 | Align = alClient 23 | UseDockManager = False 24 | Font.Charset = DEFAULT_CHARSET 25 | Font.Color = clWindowText 26 | Font.Height = -11 27 | Font.Name = 'MS Shell Dlg 2' 28 | Font.Style = [] 29 | GroupFont.Charset = DEFAULT_CHARSET 30 | GroupFont.Color = clWindowText 31 | GroupFont.Height = -11 32 | GroupFont.Name = 'MS Shell Dlg 2' 33 | GroupFont.Style = [] 34 | Header.Font.Charset = DEFAULT_CHARSET 35 | Header.Font.Color = clWindowText 36 | Header.Font.Height = -11 37 | Header.Font.Name = 'MS Shell Dlg 2' 38 | Header.Font.Style = [] 39 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 40 | ParentFont = False 41 | Selection.EnableDragSelect = True 42 | Selection.MouseButtonSelRect = [cmbLeft, cmbRight] 43 | Selection.MultiSelect = True 44 | TabOrder = 0 45 | View = elsGrid 46 | OnItemEditBegin = SGItemEditBegin 47 | OnItemImageDraw = SGItemImageDraw 48 | OnItemImageGetSize = SGItemImageGetSize 49 | OnItemImageDrawIsCustom = SGItemImageDrawIsCustom 50 | end 51 | object Panel1: TPanel 52 | Left = 0 53 | Top = 0 54 | Width = 209 55 | Height = 446 56 | Align = alLeft 57 | TabOrder = 1 58 | object Label1: TLabel 59 | Left = 16 60 | Top = 88 61 | Width = 40 62 | Height = 13 63 | Caption = 'Columns' 64 | FocusControl = EditRows 65 | end 66 | object Label2: TLabel 67 | Left = 16 68 | Top = 40 69 | Width = 26 70 | Height = 13 71 | Caption = 'Rows' 72 | end 73 | object EditRows: TEdit 74 | Left = 24 75 | Top = 56 76 | Width = 121 77 | Height = 21 78 | TabOrder = 0 79 | Text = '100' 80 | end 81 | object EditColumns: TEdit 82 | Left = 24 83 | Top = 104 84 | Width = 121 85 | Height = 21 86 | TabOrder = 1 87 | Text = '10' 88 | end 89 | object Button1: TButton 90 | Left = 16 91 | Top = 8 92 | Width = 75 93 | Height = 25 94 | Caption = 'Clear' 95 | TabOrder = 2 96 | OnClick = Button1Click 97 | end 98 | object Button2: TButton 99 | Left = 104 100 | Top = 8 101 | Width = 75 102 | Height = 25 103 | Caption = 'Load' 104 | TabOrder = 3 105 | OnClick = Button2Click 106 | end 107 | object CheckboxAllowOddEdits: TCheckBox 108 | Left = 24 109 | Top = 240 110 | Width = 177 111 | Height = 17 112 | Caption = 'Allow edit every other cell only' 113 | TabOrder = 4 114 | end 115 | object CheckBoxEnableEdit: TCheckBox 116 | Left = 8 117 | Top = 224 118 | Width = 97 119 | Height = 17 120 | Caption = 'Editable' 121 | TabOrder = 5 122 | OnClick = CheckBoxEnableEditClick 123 | end 124 | object CheckBoxTabMoveFocus: TCheckBox 125 | Left = 24 126 | Top = 256 127 | Width = 145 128 | Height = 17 129 | Caption = 'Tab move edit focus' 130 | TabOrder = 6 131 | OnClick = CheckBoxTabMoveFocusClick 132 | end 133 | object CheckBoxCustomDraw: TCheckBox 134 | Left = 8 135 | Top = 288 136 | Width = 97 137 | Height = 17 138 | Caption = 'Custom Draw' 139 | TabOrder = 7 140 | OnClick = CheckBoxCustomDrawClick 141 | end 142 | object CheckBoxShowHeader: TCheckBox 143 | Left = 8 144 | Top = 192 145 | Width = 97 146 | Height = 17 147 | Caption = 'Show Header' 148 | TabOrder = 8 149 | OnClick = CheckBoxShowHeaderClick 150 | end 151 | object CheckBoxShowFocusRect: TCheckBox 152 | Left = 8 153 | Top = 136 154 | Width = 129 155 | Height = 17 156 | Caption = 'Show Focus Rect' 157 | Checked = True 158 | State = cbChecked 159 | TabOrder = 9 160 | OnClick = CheckBoxShowFocusRectClick 161 | end 162 | object CheckBoxFullCellSelect: TCheckBox 163 | Left = 8 164 | Top = 152 165 | Width = 97 166 | Height = 17 167 | Caption = 'Full Cell Select' 168 | TabOrder = 10 169 | OnClick = CheckBoxFullCellSelectClick 170 | end 171 | end 172 | end 173 | -------------------------------------------------------------------------------- /Demos/Grid/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls, ExtCtrls, EasyListview, Grids, 8 | MPCommonObjects; 9 | 10 | type 11 | TForm1 = class(TForm) 12 | SG: TEasyListview; 13 | Panel1: TPanel; 14 | EditRows: TEdit; 15 | Label1: TLabel; 16 | EditColumns: TEdit; 17 | Label2: TLabel; 18 | Button1: TButton; 19 | Button2: TButton; 20 | CheckboxAllowOddEdits: TCheckBox; 21 | CheckBoxEnableEdit: TCheckBox; 22 | CheckBoxTabMoveFocus: TCheckBox; 23 | CheckBoxCustomDraw: TCheckBox; 24 | CheckBoxShowHeader: TCheckBox; 25 | CheckBoxShowFocusRect: TCheckBox; 26 | CheckBoxFullCellSelect: TCheckBox; 27 | procedure FormShow(Sender: TObject); 28 | procedure Button1Click(Sender: TObject); 29 | procedure Button2Click(Sender: TObject); 30 | procedure SGItemImageDrawIsCustom(Sender: TCustomEasyListview; 31 | Item: TEasyItem; Column: TEasyColumn; var IsCustom: Boolean); 32 | procedure SGItemImageGetSize(Sender: TCustomEasyListview; 33 | Item: TEasyItem; Column: TEasyColumn; var ImageWidth, 34 | ImageHeight: Integer); 35 | procedure SGItemImageDraw(Sender: TCustomEasyListview; Item: TEasyItem; 36 | Column: TEasyColumn; ACanvas: TCanvas; 37 | const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); 38 | procedure SGItemEditBegin(Sender: TCustomEasyListview; Item: TEasyItem; 39 | var Column: Integer; var Allow: Boolean); 40 | procedure CheckBoxEnableEditClick(Sender: TObject); 41 | procedure CheckBoxTabMoveFocusClick(Sender: TObject); 42 | procedure CheckBoxCustomDrawClick(Sender: TObject); 43 | procedure CheckBoxShowHeaderClick(Sender: TObject); 44 | procedure CheckBoxShowFocusRectClick(Sender: TObject); 45 | procedure CheckBoxFullCellSelectClick(Sender: TObject); 46 | private 47 | { Private declarations } 48 | public 49 | { Public declarations } 50 | procedure LoadGrid; 51 | end; 52 | 53 | var 54 | Form1: TForm1; 55 | 56 | implementation 57 | 58 | {$R *.dfm} 59 | 60 | procedure TForm1.LoadGrid; 61 | var 62 | Item: TEasyItem; 63 | Column: TEasyColumn; 64 | i, ItemCount: Integer; 65 | begin 66 | // 67 | // for better performance use VirtualItem by calling 68 | // Item := SG.Items.AddVirtual 69 | // then use the OnItemGetCaption event to return the caption on demand. 70 | // 71 | 72 | SG.BeginUpdate(); 73 | SG.Header.Columns.Clear(); 74 | SG.Items.Clear; 75 | try 76 | for i := 0 to StrToInt(EditColumns.Text) - 1 do 77 | begin 78 | Column := SG.Header.Columns.Add(); 79 | Column.Width := 120; 80 | Column.Caption := 'Column: ' + IntToStr(i); 81 | end; 82 | ItemCount := StrToInt(EditColumns.Text) * StrToInt(EditRows.Text); 83 | for i := 0 to ItemCount - 1 do 84 | begin 85 | Item := SG.Items.Add(); 86 | Item.Caption := 'Column: ' + IntToStr(i mod SG.Header.Columns.Count) + ' Row: ' + IntToStr(i div SG.Header.Columns.Count); 87 | end 88 | finally 89 | SG.EndUpdate(); 90 | end 91 | end; 92 | 93 | procedure TForm1.FormShow(Sender: TObject); 94 | begin 95 | LoadGrid 96 | end; 97 | 98 | procedure TForm1.Button1Click(Sender: TObject); 99 | begin 100 | SG.Items.Clear; 101 | end; 102 | 103 | procedure TForm1.Button2Click(Sender: TObject); 104 | begin 105 | LoadGrid; 106 | end; 107 | 108 | procedure TForm1.SGItemImageDrawIsCustom(Sender: TCustomEasyListview; 109 | Item: TEasyItem; Column: TEasyColumn; var IsCustom: Boolean); 110 | begin 111 | IsCustom := CheckBoxCustomDraw.Checked; 112 | end; 113 | 114 | procedure TForm1.SGItemImageGetSize(Sender: TCustomEasyListview; 115 | Item: TEasyItem; Column: TEasyColumn; var ImageWidth, 116 | ImageHeight: Integer); 117 | begin 118 | ImageWidth := 1; 119 | ImageHeight := 1; 120 | 121 | end; 122 | 123 | procedure TForm1.SGItemImageDraw(Sender: TCustomEasyListview; 124 | Item: TEasyItem; Column: TEasyColumn; ACanvas: TCanvas; 125 | const RectArray: TEasyRectArrayObject; AlphaBlender: TEasyAlphaBlender); 126 | var 127 | R: TRect; 128 | begin 129 | if Item.Selected and Item.OwnerListview.Focused then 130 | ACanvas.Brush.Color := clHighLight 131 | else 132 | ACanvas.Brush.Color := clBtnFace; 133 | R := RectArray.BoundsRect; 134 | ACanvas.FillRect(RectArray.BoundsRect); 135 | DrawEdge(ACanvas.Handle, R, EDGE_RAISED, BF_RECT); 136 | 137 | ACanvas.Brush.Color := clBtnFace; 138 | ACanvas.FillRect(RectArray.BoundsRect); 139 | if Item.Selected then 140 | DrawEdge(ACanvas.Handle, R, EDGE_SUNKEN, BF_RECT) 141 | else 142 | DrawEdge(ACanvas.Handle, R, EDGE_RAISED, BF_RECT); 143 | end; 144 | 145 | procedure TForm1.SGItemEditBegin(Sender: TCustomEasyListview; 146 | Item: TEasyItem; var Column: Integer; var Allow: Boolean); 147 | begin 148 | if CheckboxAllowOddEdits.Checked then 149 | Allow := Item.Index mod 2 = 0; 150 | end; 151 | 152 | procedure TForm1.CheckBoxEnableEditClick(Sender: TObject); 153 | begin 154 | SG.EditManager.Enabled := CheckBoxEnableEdit.Checked; 155 | end; 156 | 157 | procedure TForm1.CheckBoxTabMoveFocusClick(Sender: TObject); 158 | begin 159 | SG.EditManager.TabMoveFocus := CheckBoxTabMoveFocus.Checked; 160 | end; 161 | 162 | procedure TForm1.CheckBoxCustomDrawClick(Sender: TObject); 163 | begin 164 | if CheckBoxCustomDraw.Checked then 165 | SG.Selection.TextColor := clBlack 166 | else 167 | SG.Selection.TextColor := clHighlight; 168 | SG.Invalidate 169 | end; 170 | 171 | procedure TForm1.CheckBoxShowHeaderClick(Sender: TObject); 172 | begin 173 | SG.Header.Visible := CheckBoxShowHeader.Checked 174 | end; 175 | 176 | procedure TForm1.CheckBoxShowFocusRectClick(Sender: TObject); 177 | begin 178 | SG.Selection.UseFocusRect := CheckBoxShowFocusRect.Checked 179 | end; 180 | 181 | procedure TForm1.CheckBoxFullCellSelectClick(Sender: TObject); 182 | begin 183 | SG.Selection.FullCellPaint := CheckBoxFullCellSelect.Checked 184 | end; 185 | 186 | end. 187 | -------------------------------------------------------------------------------- /Demos/Hints/HintProject.dpr: -------------------------------------------------------------------------------- 1 | program HintProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Hints/HintsProjectGroup1.bpg: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | VERSION = BWS.01 3 | #------------------------------------------------------------------------------ 4 | !ifndef ROOT 5 | ROOT = $(MAKEDIR)\.. 6 | !endif 7 | #------------------------------------------------------------------------------ 8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** 9 | DCC = $(ROOT)\bin\dcc32.exe $** 10 | BRCC = $(ROOT)\bin\brcc32.exe $** 11 | #------------------------------------------------------------------------------ 12 | PROJECTS = EasyListviewD7.bpl EasyListviewD7D.bpl HintProject.exe 13 | #------------------------------------------------------------------------------ 14 | default: $(PROJECTS) 15 | #------------------------------------------------------------------------------ 16 | 17 | EasyListviewD7.bpl: ..\..\Delphi\EasyListviewD7.dpk 18 | $(DCC) 19 | 20 | EasyListviewD7D.bpl: ..\..\Delphi\EasyListviewD7D.dpk 21 | $(DCC) 22 | 23 | HintProject.exe: HintProject.dpr 24 | $(DCC) 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demos/Image CustomDraw/ImageCustomDrawProject.dpr: -------------------------------------------------------------------------------- 1 | program ImageCustomDrawProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Image CustomDraw/XPSearch.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Image CustomDraw/XPSearch.bmp -------------------------------------------------------------------------------- /Demos/Image CustomDraw/XPSearch_Small.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Image CustomDraw/XPSearch_Small.bmp -------------------------------------------------------------------------------- /Demos/Item CustomDraw Advanced/Donkey.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Item CustomDraw Advanced/Donkey.bmp -------------------------------------------------------------------------------- /Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.dpr: -------------------------------------------------------------------------------- 1 | program ItemCustomDrawProjectAdv; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Item CustomDraw Advanced/ItemCustomDrawProjectAdv.res -------------------------------------------------------------------------------- /Demos/Item CustomDraw/ItemCustomDrawProject.dpr: -------------------------------------------------------------------------------- 1 | program ItemCustomDrawProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Item CustomDraw/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, EasyListview, ImgList, StdCtrls, ExtCtrls, 8 | MPCommonObjects; 9 | 10 | type 11 | TForm1 = class(TForm) 12 | EasyListview1: TEasyListview; 13 | ImageList1: TImageList; 14 | Panel1: TPanel; 15 | CheckBoxFullWidth: TCheckBox; 16 | procedure FormShow(Sender: TObject); 17 | procedure CheckBoxFullWidthClick(Sender: TObject); 18 | procedure EasyListview1ItemCustomView(Sender: TCustomEasyListview; 19 | Item: TEasyItem; ViewStyle: TEasyListStyle; 20 | var View: TEasyViewItemClass); 21 | private 22 | { Private declarations } 23 | public 24 | { Public declarations } 25 | end; 26 | 27 | TCustomViewReportItem = class(TEasyViewReportItem) 28 | public 29 | procedure PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: string; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); override; 30 | end; 31 | 32 | var 33 | Form1: TForm1; 34 | 35 | implementation 36 | 37 | {$R *.dfm} 38 | 39 | { TCustomViewReportItem } 40 | procedure TCustomViewReportItem.PaintBefore(Item: TEasyItem; Column: TEasyColumn; const Caption: string; ACanvas: TCanvas; RectArray: TEasyRectArrayObject; var Handled: Boolean); 41 | var 42 | R: TRect; 43 | begin 44 | inherited PaintBefore(Item, Column, Caption, ACanvas, RectArray, Handled); 45 | if Item.Index mod 2 = 0 then 46 | begin 47 | ACanvas.Brush.Color := clMoneyGreen; 48 | if Form1.CheckBoxFullWidth.Checked then 49 | begin 50 | R := TEasyListview(Item.OwnerListview).Scrollbars.MapViewRectToWindowRect(RectArray.BoundsRect); 51 | R.Right := Form1.ClientWidth; 52 | R := TEasyListview(Item.OwnerListview).Scrollbars.MapWindowRectToViewRect(R); 53 | ACanvas.FillRect(R); 54 | end else 55 | ACanvas.FillRect(RectArray.BoundsRect) 56 | end 57 | end; 58 | 59 | procedure TForm1.FormShow(Sender: TObject); 60 | var 61 | i: Integer; 62 | Item: TEasyItem; 63 | begin 64 | for i := 0 to 999 do 65 | begin 66 | ITem := EasyListview1.Items.Add; 67 | Item.Caption := 'Item: ' + IntToStr(i); 68 | Item.Captions[1] := 'Column 2'; 69 | Item.ImageIndex := Item.Index mod ImageList1.Count; 70 | end; 71 | end; 72 | 73 | procedure TForm1.CheckBoxFullWidthClick(Sender: TObject); 74 | begin 75 | EasyListview1.Invalidate 76 | end; 77 | 78 | procedure TForm1.EasyListview1ItemCustomView(Sender: TCustomEasyListview; 79 | Item: TEasyItem; ViewStyle: TEasyListStyle; 80 | var View: TEasyViewItemClass); 81 | begin 82 | if ViewStyle = elsReport then 83 | View := TCustomViewReportItem 84 | end; 85 | 86 | end. 87 | 88 | -------------------------------------------------------------------------------- /Demos/ScrollButton/ScrollButtonProject.dpr: -------------------------------------------------------------------------------- 1 | program ScrollButtonProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/ScrollButton/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 291 3 | Top = 151 4 | Width = 408 5 | Height = 328 6 | Caption = 'Form1' 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | PixelsPerInch = 96 15 | TextHeight = 13 16 | object EasyScrollButton2: TEasyScrollButton 17 | Left = 72 18 | Top = 96 19 | Width = 17 20 | Height = 113 21 | OnClick = EasyScrollButton2Click 22 | TabOrder = 0 23 | end 24 | object EasyScrollButton3: TEasyScrollButton 25 | Left = 200 26 | Top = 96 27 | Width = 17 28 | Height = 113 29 | Direction = sbdRight 30 | OnClick = EasyScrollButton2Click 31 | TabOrder = 1 32 | end 33 | object EasyScrollButton1: TEasyScrollButton 34 | Left = 88 35 | Top = 80 36 | Width = 113 37 | Height = 17 38 | Direction = sbdUp 39 | OnClick = EasyScrollButton2Click 40 | TabOrder = 2 41 | end 42 | object EasyScrollButton4: TEasyScrollButton 43 | Left = 88 44 | Top = 208 45 | Width = 113 46 | Height = 17 47 | Direction = sbdDown 48 | OnClick = EasyScrollButton2Click 49 | TabOrder = 3 50 | end 51 | object CheckBoxThemed: TCheckBox 52 | Left = 248 53 | Top = 88 54 | Width = 97 55 | Height = 17 56 | Caption = 'Themed' 57 | Checked = True 58 | State = cbChecked 59 | TabOrder = 4 60 | OnClick = CheckBoxThemedClick 61 | end 62 | object CheckBoxFlat: TCheckBox 63 | Left = 248 64 | Top = 112 65 | Width = 97 66 | Height = 17 67 | Caption = 'Flat' 68 | TabOrder = 5 69 | OnClick = CheckBoxFlatClick 70 | end 71 | object CheckBoxAutoScroll: TCheckBox 72 | Left = 248 73 | Top = 136 74 | Width = 97 75 | Height = 17 76 | Caption = 'AutoScroll' 77 | TabOrder = 6 78 | OnClick = CheckBoxAutoScrollClick 79 | end 80 | object CheckBoxEnabled: TCheckBox 81 | Left = 248 82 | Top = 160 83 | Width = 97 84 | Height = 17 85 | Caption = 'Enabled' 86 | Checked = True 87 | State = cbChecked 88 | TabOrder = 7 89 | OnClick = CheckBoxEnabledClick 90 | end 91 | end 92 | -------------------------------------------------------------------------------- /Demos/ScrollButton/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, EasyListview, ImgList, ExtCtrls, 8 | EasyScrollFrame, StdCtrls, MPCommonObjects; 9 | 10 | type 11 | TForm1 = class(TForm) 12 | EasyScrollButton2: TEasyScrollButton; 13 | EasyScrollButton3: TEasyScrollButton; 14 | EasyScrollButton1: TEasyScrollButton; 15 | EasyScrollButton4: TEasyScrollButton; 16 | CheckBoxThemed: TCheckBox; 17 | CheckBoxFlat: TCheckBox; 18 | CheckBoxAutoScroll: TCheckBox; 19 | CheckBoxEnabled: TCheckBox; 20 | procedure EasyScrollButton2Click(Sender: TObject); 21 | procedure CheckBoxThemedClick(Sender: TObject); 22 | procedure CheckBoxFlatClick(Sender: TObject); 23 | procedure CheckBoxAutoScrollClick(Sender: TObject); 24 | procedure CheckBoxEnabledClick(Sender: TObject); 25 | private 26 | { Private declarations } 27 | public 28 | { Public declarations } 29 | end; 30 | 31 | var 32 | Form1: TForm1; 33 | 34 | implementation 35 | 36 | {$R *.dfm} 37 | 38 | procedure TForm1.EasyScrollButton2Click(Sender: TObject); 39 | begin 40 | beep; 41 | end; 42 | 43 | procedure TForm1.CheckBoxThemedClick(Sender: TObject); 44 | begin 45 | EasyScrollButton1.Themed := CheckBoxThemed.Checked; 46 | EasyScrollButton2.Themed := CheckBoxThemed.Checked; 47 | EasyScrollButton3.Themed := CheckBoxThemed.Checked; 48 | EasyScrollButton4.Themed := CheckBoxThemed.Checked; 49 | end; 50 | 51 | procedure TForm1.CheckBoxFlatClick(Sender: TObject); 52 | begin 53 | EasyScrollButton1.Flat := CheckBoxFlat.Checked; 54 | EasyScrollButton2.Flat := CheckBoxFlat.Checked; 55 | EasyScrollButton3.Flat := CheckBoxFlat.Checked; 56 | EasyScrollButton4.Flat := CheckBoxFlat.Checked; 57 | end; 58 | 59 | procedure TForm1.CheckBoxAutoScrollClick(Sender: TObject); 60 | begin 61 | EasyScrollButton1.AutoScroll := CheckBoxAutoScroll.Checked; 62 | EasyScrollButton2.AutoScroll := CheckBoxAutoScroll.Checked; 63 | EasyScrollButton3.AutoScroll := CheckBoxAutoScroll.Checked; 64 | EasyScrollButton4.AutoScroll := CheckBoxAutoScroll.Checked; 65 | end; 66 | 67 | procedure TForm1.CheckBoxEnabledClick(Sender: TObject); 68 | begin 69 | EasyScrollButton1.Enabled := CheckBoxEnabled.Checked; 70 | EasyScrollButton2.Enabled := CheckBoxEnabled.Checked; 71 | EasyScrollButton3.Enabled := CheckBoxEnabled.Checked; 72 | EasyScrollButton4.Enabled := CheckBoxEnabled.Checked; 73 | end; 74 | 75 | end. 76 | -------------------------------------------------------------------------------- /Demos/Shared Demo Data/DatamoduleImagelists.pas: -------------------------------------------------------------------------------- 1 | unit DatamoduleImagelists; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, 7 | Classes, 8 | ImgList, 9 | Controls, 10 | EasyListview; 11 | 12 | type 13 | TImagelists = class(TDataModule) 14 | ImageListSmall: TImageList; 15 | ImageListLarge: TImageList; 16 | ImageListExLarge: TImageList; 17 | ImageListGroups: TImageList; 18 | private 19 | { Private declarations } 20 | public 21 | procedure UseImagesForListview(Listview: TEasyListview); 22 | end; 23 | 24 | var 25 | Imagelists: TImagelists; 26 | 27 | implementation 28 | 29 | {$R *.dfm} 30 | 31 | { TImagelists } 32 | 33 | procedure TImagelists.UseImagesForListview(Listview: TEasyListview); 34 | begin 35 | Listview.ImagesGroup := ImageListGroups; 36 | Listview.ImagesSmall := ImageListSmall; 37 | Listview.ImagesLarge := ImageListLarge; 38 | Listview.ImagesExLarge := ImageListExLarge; 39 | end; 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Demos/Sorting/SortingProject.dpr: -------------------------------------------------------------------------------- 1 | program SortingProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DatamoduleImagelists in '..\Shared Demo Data\DatamoduleImagelists.pas' {Imagelists: TDataModule}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TImagelists, Imagelists); 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | 17 | -------------------------------------------------------------------------------- /Demos/Sorting/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 197 3 | Top = 200 4 | Caption = 'Form1' 5 | ClientHeight = 430 6 | ClientWidth = 620 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object LV: TEasyListview 18 | Left = 0 19 | Top = 57 20 | Width = 620 21 | Height = 373 22 | Align = alClient 23 | EditManager.Font.Charset = DEFAULT_CHARSET 24 | EditManager.Font.Color = clWindowText 25 | EditManager.Font.Height = -11 26 | EditManager.Font.Name = 'MS Shell Dlg 2' 27 | EditManager.Font.Style = [] 28 | UseDockManager = False 29 | Font.Charset = DEFAULT_CHARSET 30 | Font.Color = clWindowText 31 | Font.Height = -11 32 | Font.Name = 'MS Shell Dlg 2' 33 | Font.Style = [] 34 | GroupFont.Charset = DEFAULT_CHARSET 35 | GroupFont.Color = clWindowText 36 | GroupFont.Height = -13 37 | GroupFont.Name = 'MS Shell Dlg 2' 38 | GroupFont.Style = [fsBold] 39 | Header.Columns.Items = { 40 | 0600000001000000110000005445617379436F6C756D6E53746F726564FFFECE 41 | 0006000000800800000000000000000000000101000000FFFFFF1F0001000000 42 | 0500000000000000000000000000000000000000000000000000000000000000 43 | 00000000} 44 | Header.Font.Charset = DEFAULT_CHARSET 45 | Header.Font.Color = clWindowText 46 | Header.Font.Height = -11 47 | Header.Font.Name = 'MS Shell Dlg 2' 48 | Header.Font.Style = [] 49 | Header.Visible = True 50 | PaintInfoGroup.CaptionIndent = 6 51 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 52 | PaintInfoItem.TileDetailCount = 2 53 | ParentFont = False 54 | TabOrder = 0 55 | View = elsReport 56 | OnAutoGroupGetKey = LVAutoGroupGetKey 57 | OnAutoSortGroupCreate = LVAutoSortGroupCreate 58 | end 59 | object Panel1: TPanel 60 | Left = 0 61 | Top = 0 62 | Width = 620 63 | Height = 57 64 | Align = alTop 65 | BevelOuter = bvNone 66 | TabOrder = 1 67 | object Label1: TLabel 68 | Left = 8 69 | Top = 8 70 | Width = 22 71 | Height = 13 72 | Caption = 'View' 73 | end 74 | object Label2: TLabel 75 | Left = 384 76 | Top = 12 77 | Width = 45 78 | Height = 13 79 | Caption = 'Algorithm' 80 | end 81 | object LabelItems: TLabel 82 | Left = 8 83 | Top = 32 84 | Width = 27 85 | Height = 13 86 | Caption = 'Items' 87 | end 88 | object cbViews: TComboBox 89 | Left = 40 90 | Top = 6 91 | Width = 161 92 | Height = 21 93 | Style = csDropDownList 94 | TabOrder = 0 95 | OnChange = cbViewsChange 96 | end 97 | object cAutosort: TCheckBox 98 | Left = 292 99 | Top = 24 100 | Width = 97 101 | Height = 17 102 | Caption = 'Autosort' 103 | TabOrder = 1 104 | OnClick = cAutosortClick 105 | end 106 | object cAutoGroup: TCheckBox 107 | Left = 292 108 | Top = 8 109 | Width = 73 110 | Height = 17 111 | Caption = 'AutoGroup' 112 | TabOrder = 2 113 | OnClick = cAutoGroupClick 114 | end 115 | object cbSort: TComboBox 116 | Left = 440 117 | Top = 8 118 | Width = 145 119 | Height = 21 120 | Style = csDropDownList 121 | TabOrder = 3 122 | end 123 | object ButtonRebuild: TButton 124 | Left = 208 125 | Top = 8 126 | Width = 75 127 | Height = 25 128 | Caption = 'Rebuild' 129 | TabOrder = 4 130 | OnClick = ButtonRebuildClick 131 | end 132 | object EditItems: TEdit 133 | Left = 40 134 | Top = 32 135 | Width = 121 136 | Height = 21 137 | TabOrder = 5 138 | Text = '100' 139 | end 140 | end 141 | end 142 | -------------------------------------------------------------------------------- /Demos/Sorting/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | // Demo: simplest way to use EasyListview (very similar to TListview) 4 | 5 | interface 6 | 7 | uses 8 | Windows, 9 | Messages, 10 | SysUtils, 11 | Variants, 12 | Classes, 13 | Graphics, 14 | Controls, 15 | Forms, 16 | Dialogs, 17 | EasyListview, 18 | StdCtrls, 19 | ExtCtrls, 20 | DatamoduleImagelists, 21 | ImgList, MPCommonObjects; 22 | 23 | const 24 | DetailType1Array: array[0..6] of string = ( 25 | 'Detail 1 Type 1', 26 | 'Detail 1 Type 2', 27 | 'Detail 1 Type 3', 28 | 'Detail 1 Type 4', 29 | 'Detail 1 Type 5', 30 | 'Detail 1 Type 6', 31 | 'Detail 1 Type 7' 32 | ); 33 | 34 | DetailType2Array: array[0..4] of string = ( 35 | 'Detail 2 Type 1', 36 | 'Detail 2 Type 2', 37 | 'Detail 2 Type 3', 38 | 'Detail 2 Type 4', 39 | 'Detail 2 Type 5' 40 | ); 41 | 42 | 43 | type 44 | TForm1 = class(TForm) 45 | LV: TEasyListview; 46 | Panel1: TPanel; 47 | cbViews: TComboBox; 48 | Label1: TLabel; 49 | cAutosort: TCheckBox; 50 | cAutoGroup: TCheckBox; 51 | cbSort: TComboBox; 52 | Label2: TLabel; 53 | ButtonRebuild: TButton; 54 | EditItems: TEdit; 55 | LabelItems: TLabel; 56 | procedure cAutosortClick(Sender: TObject); 57 | procedure cbViewsChange(Sender: TObject); 58 | procedure FormCreate(Sender: TObject); 59 | procedure cAutoGroupClick(Sender: TObject); 60 | procedure LVAutoSortGroupCreate(Sender: TCustomEasyListview; 61 | Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; 62 | var Group: TEasyGroup; var DoDefaultAction: Boolean); 63 | procedure ButtonRebuildClick(Sender: TObject); 64 | procedure LVAutoGroupGetKey(Sender: TCustomEasyListview; 65 | Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; 66 | var Key: Cardinal); 67 | 68 | private 69 | function RandomString: string; 70 | procedure AddItems(Count: Integer); 71 | end; 72 | 73 | var 74 | Form1: TForm1; 75 | 76 | implementation 77 | 78 | {$R *.dfm} 79 | 80 | procedure TForm1.FormCreate(Sender: TObject); 81 | begin 82 | FillStringsWithEasyListStyles(cbViews.Items); 83 | cbViews.ItemIndex := Ord(LV.View); 84 | FillStringsWithEasySortAlgorithms(cbSort.Items); 85 | cbSort.ItemIndex := Ord(LV.Sort.Algorithm); 86 | Imagelists.UseImagesForListview(LV); 87 | cAutosort.Checked := LV.Sort.AutoSort; 88 | cAutoGroup.Checked := LV.Sort.AutoRegroup; 89 | AddItems(StrToInt(EditItems.Text)); 90 | end; 91 | 92 | procedure TForm1.cbViewsChange(Sender: TObject); 93 | begin 94 | LV.View := TEasyListStyle(cbViews.ItemIndex); 95 | end; 96 | 97 | procedure TForm1.AddItems(Count: Integer); 98 | var 99 | i, j, RandomIndex: Integer; 100 | Item: TEasyItem; 101 | begin 102 | LV.BeginUpdate; 103 | try 104 | LV.Items.Clear; 105 | for i := 0 to Count - 1 do 106 | begin 107 | Item := LV.Items.Add; 108 | Item.ImageIndex := i mod LV.ImagesSmall.Count; 109 | Item.Details[0] := 0; 110 | Item.Details[1] := 1; 111 | for j := 0 to LV.Header.Columns.Count - 1 do 112 | begin 113 | LV.Header.Columns[j].AutoSpring := True; 114 | Item.Captions[0] := RandomString; 115 | // Let ELV sort the first column with the first letter of the Caption (default) 116 | // So don't do anything with Item.GroupKey[0] 117 | 118 | RandomIndex := Random(Length(DetailType1Array)); 119 | Item.Captions[1] := DetailType1Array[RandomIndex]; 120 | Item.GroupKey[1] := RandomIndex; 121 | 122 | RandomIndex := Random(Length(DetailType2Array)); 123 | Item.Captions[2] := DetailType2Array[RandomIndex]; 124 | Item.GroupKey[2] := RandomIndex; 125 | 126 | // Invents some keys for groups of Detail numbers 127 | RandomIndex := Random(100); 128 | Item.Captions[3] := IntToStr(RandomIndex) 129 | end 130 | end; 131 | finally 132 | LV.EndUpdate; 133 | end; 134 | end; 135 | 136 | function TForm1.RandomString: string; 137 | begin 138 | Result := ''; 139 | while (Length(Result) < 5) or (Random < 0.3) do 140 | if Random < 0.65 then 141 | Result := Result + 'aeoui'[1 + Trunc(Random * 5)] 142 | else 143 | Result := Result + 'bcdfghjklmnpqrstvwxyz'[1 + Trunc(Random * 21)]; 144 | end; 145 | 146 | procedure TForm1.cAutosortClick(Sender: TObject); 147 | begin 148 | LV.Sort.AutoSort := cAutoSort.Checked; 149 | end; 150 | 151 | procedure TForm1.cAutoGroupClick(Sender: TObject); 152 | begin 153 | LV.Sort.AutoRegroup := cAutoGroup.Checked; 154 | end; 155 | 156 | 157 | procedure TForm1.LVAutoSortGroupCreate(Sender: TCustomEasyListview; 158 | Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; 159 | var Group: TEasyGroup; var DoDefaultAction: Boolean); 160 | begin 161 | // Here we customize the Group that is created for the AutoGrouping 162 | if ColumnIndex = 3 then 163 | begin 164 | // Create a custom specialied TEasyGroup if desired, here we create a 165 | // basic stored group. 166 | Group := Groups.Add; 167 | 168 | case Item.GroupKey[ColumnIndex] of 169 | 0: Group.Caption := 'Size is between 0 and 10'; 170 | 1: Group.Caption := 'Size is between 11 and 20'; 171 | 2: Group.Caption := 'Size is between 21 and 30'; 172 | 3: Group.Caption := 'Size is between 31 and 40'; 173 | 4: Group.Caption := 'Size is between 41 and 50'; 174 | 5: Group.Caption := 'Size is between 51 and 60'; 175 | 6: Group.Caption := 'Size is between 61 and 70'; 176 | 7: Group.Caption := 'Size is between 71 and 80'; 177 | 8: Group.Caption := 'Size is between 81 and 90'; 178 | 9: Group.Caption := 'Size is between 91 and 100'; 179 | end; 180 | DoDefaultAction := False; 181 | end 182 | end; 183 | 184 | procedure TForm1.ButtonRebuildClick(Sender: TObject); 185 | begin 186 | AddItems(StrToInt(EditItems.Text)); 187 | end; 188 | 189 | procedure TForm1.LVAutoGroupGetKey(Sender: TCustomEasyListview; 190 | Item: TEasyItem; ColumnIndex: Integer; Groups: TEasyGroups; 191 | var Key: Cardinal); 192 | begin 193 | // Custom Grouping if third column is pressed 194 | if ColumnIndex = 3 then 195 | begin 196 | case StrToInt(Item.Captions[3]) of 197 | 0..10: Key := 0; 198 | 11..20: Key := 1; 199 | 21..30: Key := 2; 200 | 31..40: Key := 3; 201 | 41..50: Key := 4; 202 | 51..60: Key := 5; 203 | 61..70: Key := 6; 204 | 71..80: Key := 7; 205 | 81..90: Key := 8; 206 | 91..100: Key := 9; 207 | end; 208 | end 209 | end; 210 | 211 | end. 212 | 213 | -------------------------------------------------------------------------------- /Demos/TaskPanel/ReplacePanel.dfm: -------------------------------------------------------------------------------- 1 | object EasyTaskPanelFormReplace: TEasyTaskPanelFormReplace 2 | Left = 135 3 | Top = 227 4 | Width = 213 5 | Height = 234 6 | Caption = 'EasyTaskPanelFormReplace' 7 | Color = clWindow 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Sans Serif' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | DesignSize = ( 15 | 205 16 | 200) 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | object Label1: TLabel 20 | Left = 8 21 | Top = 8 22 | Width = 186 23 | Height = 13 24 | Caption = 'Replace some object or another.' 25 | Font.Charset = DEFAULT_CHARSET 26 | Font.Color = clWindowText 27 | Font.Height = -11 28 | Font.Name = 'MS Sans Serif' 29 | Font.Style = [fsBold] 30 | ParentFont = False 31 | end 32 | object Label2: TLabel 33 | Left = 16 34 | Top = 32 35 | Width = 115 36 | Height = 13 37 | Caption = 'Enter the search criteria:' 38 | end 39 | object Button1: TButton 40 | Left = 120 41 | Top = 168 42 | Width = 75 43 | Height = 25 44 | Caption = 'Run Search' 45 | TabOrder = 0 46 | end 47 | object Edit1: TEdit 48 | Left = 16 49 | Top = 48 50 | Width = 177 51 | Height = 21 52 | Anchors = [akLeft, akTop, akRight] 53 | TabOrder = 1 54 | Text = 'Edit1' 55 | end 56 | object RadioGroup1: TRadioGroup 57 | Left = 16 58 | Top = 80 59 | Width = 177 60 | Height = 81 61 | Anchors = [akLeft, akTop, akRight] 62 | Caption = 'Options' 63 | Columns = 2 64 | Items.Strings = ( 65 | 'Option1 ' 66 | 'Option2' 67 | 'Option3 ' 68 | 'Option4 ' 69 | 'Option5 ' 70 | 'Option6') 71 | TabOrder = 2 72 | end 73 | end 74 | -------------------------------------------------------------------------------- /Demos/TaskPanel/ReplacePanel.pas: -------------------------------------------------------------------------------- 1 | unit ReplacePanel; 2 | 3 | // ********************************************************************** 4 | // 5 | // Create a new Task Panel from the Object Repository. 6 | // 7 | // File > New > Other... 8 | // The select the "New" tab and double click on the "EasyListview TaskPanel" icon 9 | // 10 | // ********************************************************************** 11 | 12 | interface 13 | 14 | 15 | uses 16 | Windows, 17 | Messages, 18 | SysUtils, 19 | Classes, 20 | Controls, 21 | Forms, 22 | Dialogs, 23 | Graphics, 24 | EasyTaskPanelForm, StdCtrls, MPCommonObjects, EasyListview, ExtCtrls; 25 | 26 | 27 | type 28 | TEasyTaskPanelFormReplace = class(TEasyTaskPanelForm) 29 | Label1: TLabel; 30 | Button1: TButton; 31 | Edit1: TEdit; 32 | RadioGroup1: TRadioGroup; 33 | Label2: TLabel; 34 | private 35 | { Private declarations } 36 | public 37 | { Public declarations } 38 | end; 39 | 40 | var 41 | EasyTaskPanelFormReplace: TEasyTaskPanelFormReplace; 42 | 43 | implementation 44 | 45 | {$R *.dfm} 46 | 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Demos/TaskPanel/SearchPanel.dfm: -------------------------------------------------------------------------------- 1 | object EasyTaskPanelFormSearch: TEasyTaskPanelFormSearch 2 | Left = 192 3 | Top = 114 4 | Width = 255 5 | Height = 273 6 | HorzScrollBar.Tracking = True 7 | VertScrollBar.Tracking = True 8 | Color = clWindow 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'MS Sans Serif' 13 | Font.Style = [] 14 | OldCreateOrder = True 15 | OnShow = EasyTaskPanelFormShow 16 | DesignSize = ( 17 | 247 18 | 239) 19 | PixelsPerInch = 96 20 | TextHeight = 13 21 | object Label1: TLabel 22 | Left = 8 23 | Top = 88 24 | Width = 128 25 | Height = 13 26 | Caption = 'A word or phrase in the file:' 27 | end 28 | object Label2: TLabel 29 | Left = 8 30 | Top = 16 31 | Width = 235 32 | Height = 13 33 | Caption = 'Search by any or all of the criteria below.' 34 | Font.Charset = DEFAULT_CHARSET 35 | Font.Color = clWindowText 36 | Font.Height = -11 37 | Font.Name = 'MS Sans Serif' 38 | Font.Style = [fsBold] 39 | ParentFont = False 40 | WordWrap = True 41 | end 42 | object Label3: TLabel 43 | Left = 8 44 | Top = 40 45 | Width = 122 46 | Height = 13 47 | Caption = 'All or part of the file name:' 48 | end 49 | object Label4: TLabel 50 | Left = 8 51 | Top = 136 52 | Width = 38 53 | Height = 13 54 | Caption = 'Look in:' 55 | end 56 | object Edit1: TEdit 57 | Left = 8 58 | Top = 56 59 | Width = 225 60 | Height = 21 61 | Anchors = [akLeft, akTop, akRight] 62 | TabOrder = 0 63 | end 64 | object TEdit 65 | Left = 8 66 | Top = 104 67 | Width = 225 68 | Height = 21 69 | Anchors = [akLeft, akTop, akRight] 70 | TabOrder = 1 71 | end 72 | object ComboBox1: TComboBox 73 | Left = 8 74 | Top = 152 75 | Width = 225 76 | Height = 21 77 | Anchors = [akLeft, akTop, akRight] 78 | ItemHeight = 13 79 | TabOrder = 2 80 | Items.Strings = ( 81 | 'Local Disk (C:)' 82 | 'Local Disk (D:)' 83 | 'Network' 84 | 'Some other place...') 85 | end 86 | object Button1: TButton 87 | Left = 72 88 | Top = 200 89 | Width = 75 90 | Height = 25 91 | Anchors = [akTop, akRight] 92 | Caption = 'Back' 93 | TabOrder = 3 94 | end 95 | object Button2: TButton 96 | Left = 160 97 | Top = 200 98 | Width = 75 99 | Height = 25 100 | Anchors = [akTop, akRight] 101 | Caption = 'Search' 102 | TabOrder = 4 103 | end 104 | end 105 | -------------------------------------------------------------------------------- /Demos/TaskPanel/SearchPanel.pas: -------------------------------------------------------------------------------- 1 | unit SearchPanel; 2 | 3 | // ********************************************************************** 4 | // 5 | // Create a new Task Panel from the Object Repository. 6 | // 7 | // File > New > Other... 8 | // The select the "New" tab and double click on the "EasyListview TaskPanel" icon 9 | // 10 | // ********************************************************************** 11 | 12 | interface 13 | 14 | 15 | uses 16 | Windows, 17 | Messages, 18 | SysUtils, 19 | Classes, 20 | Controls, 21 | Forms, 22 | Dialogs, 23 | Graphics, 24 | EasyTaskPanelForm, 25 | StdCtrls, 26 | ExtCtrls; 27 | 28 | 29 | type 30 | TEasyTaskPanelFormSearch = class(TEasyTaskPanelForm) 31 | Edit1: TEdit; 32 | Label1: TLabel; 33 | Label2: TLabel; 34 | Label3: TLabel; 35 | Label4: TLabel; 36 | ComboBox1: TComboBox; 37 | Button1: TButton; 38 | Button2: TButton; 39 | procedure EasyTaskPanelFormShow(Sender: TObject); 40 | private 41 | { Private declarations } 42 | public 43 | { Public declarations } 44 | end; 45 | 46 | var 47 | EasyTaskPanelFormSearch: TEasyTaskPanelFormSearch; 48 | 49 | implementation 50 | 51 | {$R *.dfm} 52 | 53 | 54 | procedure TEasyTaskPanelFormSearch.EasyTaskPanelFormShow(Sender: TObject); 55 | begin 56 | ComboBox1.ItemIndex := 0; 57 | end; 58 | 59 | end. -------------------------------------------------------------------------------- /Demos/TaskPanel/TaskPanelProject.dpr: -------------------------------------------------------------------------------- 1 | program TaskPanelProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | SearchPanel in 'SearchPanel.pas' {EasyTaskPanelFormSearch: TEasyTaskPanelForm}, 7 | ReplacePanel in 'ReplacePanel.pas' {EasyTaskPanelFormReplace: TEasyTaskPanelForm}; 8 | 9 | {$R *.res} 10 | 11 | begin 12 | Application.Initialize; 13 | Application.CreateForm(TForm1, Form1); 14 | Application.Run; 15 | end. 16 | -------------------------------------------------------------------------------- /Demos/TaskPanel/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 7 | Dialogs, MPCommonObjects, EasyListview, EasyTaskPanelForm, 8 | SearchPanel, ReplacePanel, StdCtrls, ImgList, ExtCtrls, XPMan; 9 | 10 | type 11 | TForm1 = class(TForm) 12 | ImageList1: TImageList; 13 | EasyTaskPanelBand1: TEasyTaskPanelBand; 14 | Splitter1: TSplitter; 15 | Panel1: TPanel; 16 | XPManifest1: TXPManifest; 17 | procedure Button1Click(Sender: TObject); 18 | procedure EasyTaskPanelBand1TEasyGroupsTaskPanelTEasyGroupTaskPanelGetTaskPanel( 19 | Sender: TCustomEasyListview; Group: TEasyGroup; 20 | var TaskPanel: TEasyTaskPanelFormClass); 21 | procedure EasyTaskPanelBand1GetTaskPanel(Sender: TCustomEasyListview; 22 | Group: TEasyGroup; var TaskPanel: TEasyTaskPanelFormClass); 23 | private 24 | { Private declarations } 25 | public 26 | { Public declarations } 27 | end; 28 | 29 | var 30 | Form1: TForm1; 31 | 32 | implementation 33 | 34 | {$R *.dfm} 35 | 36 | procedure TForm1.Button1Click(Sender: TObject); 37 | begin 38 | 39 | // EasyTaskPanelBand1.Groups[0].Panel := EasyTaskPanelFormSearch 40 | end; 41 | 42 | procedure TForm1.EasyTaskPanelBand1TEasyGroupsTaskPanelTEasyGroupTaskPanelGetTaskPanel( 43 | Sender: TCustomEasyListview; Group: TEasyGroup; 44 | var TaskPanel: TEasyTaskPanelFormClass); 45 | begin 46 | TaskPanel := TEasyTaskPanelFormSearch 47 | end; 48 | 49 | procedure TForm1.EasyTaskPanelBand1GetTaskPanel( 50 | Sender: TCustomEasyListview; Group: TEasyGroup; 51 | var TaskPanel: TEasyTaskPanelFormClass); 52 | begin 53 | case Group.Index of 54 | 0: TaskPanel := TEasyTaskPanelFormSearch; 55 | 1: TaskPanel := TEasyTaskPanelFormReplace; 56 | end 57 | end; 58 | 59 | end. 60 | -------------------------------------------------------------------------------- /Demos/Taskband/TaskbandProject.dpr: -------------------------------------------------------------------------------- 1 | program TaskbandProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Taskband/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 7 | Dialogs, EasyListview, ExtCtrls, ImgList, StdCtrls, 8 | MPCommonObjects, MPCommonUtilities; 9 | 10 | type 11 | TForm1 = class(TForm) 12 | EasyTaskBand1: TEasyTaskBand; 13 | Splitter1: TSplitter; 14 | Panel1: TPanel; 15 | ImageList1: TImageList; 16 | ImageList2: TImageList; 17 | Label1: TLabel; 18 | Label2: TLabel; 19 | CheckBoxSpecialGroup: TCheckBox; 20 | CheckBoxOneAtATime: TCheckBox; 21 | procedure EasyTaskBand1ItemHotTrack(Sender: TCustomEasyListview; 22 | Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); 23 | procedure EasyTaskBand1GroupHotTrack(Sender: TCustomEasyListview; 24 | Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); 25 | procedure CheckBoxSpecialGroupClick(Sender: TObject); 26 | procedure EasyTaskBand1ItemFocusChanged(Sender: TCustomEasyListview; 27 | Item: TEasyItem); 28 | procedure EasyTaskBand1ItemClick(Sender: TCustomEasyListview; 29 | Item: TEasyItem; KeyStates: TCommonKeyStates; 30 | HitInfo: TEasyItemHitTestInfoSet); 31 | procedure EasyTaskBand1GroupExpand(Sender: TCustomEasyListview; 32 | Group: TEasyGroup); 33 | procedure EasyTaskBand1GroupCollapse(Sender: TCustomEasyListview; 34 | Group: TEasyGroup); 35 | procedure CheckBoxOneAtATimeClick(Sender: TObject); 36 | private 37 | { Private declarations } 38 | public 39 | { Public declarations } 40 | end; 41 | 42 | var 43 | Form1: TForm1; 44 | 45 | implementation 46 | 47 | {$R *.dfm} 48 | 49 | procedure TForm1.EasyTaskBand1ItemHotTrack(Sender: TCustomEasyListview; 50 | Item: TEasyItem; State: TEasyHotTrackState; MousePos: TPoint); 51 | begin 52 | if State = ehsEnable then 53 | Label2.Caption := 'Item: ' + IntToStr(Item.Index) + ' HotTracking' 54 | else 55 | Label2.Caption := 'Item not HotTracking' 56 | end; 57 | 58 | procedure TForm1.EasyTaskBand1GroupHotTrack(Sender: TCustomEasyListview; 59 | Group: TEasyGroup; State: TEasyHotTrackState; MousePos: TPoint); 60 | begin 61 | if State = ehsEnable then 62 | Label1.Caption := 'Group: ' + IntToStr(Group.Index) + ' HotTracking' 63 | else 64 | Label1.Caption := 'Group not HotTracking' 65 | end; 66 | 67 | procedure TForm1.CheckBoxSpecialGroupClick(Sender: TObject); 68 | begin 69 | if EasyTaskBand1.Groups.Count > 0 then 70 | EasyTaskBand1.Groups[0].Bold := CheckBoxSpecialGroup.Checked 71 | end; 72 | 73 | procedure TForm1.EasyTaskBand1ItemFocusChanged(Sender: TCustomEasyListview; 74 | Item: TEasyItem); 75 | begin 76 | beep; 77 | end; 78 | 79 | procedure TForm1.EasyTaskBand1ItemClick(Sender: TCustomEasyListview; 80 | Item: TEasyItem; KeyStates: TCommonKeyStates; 81 | HitInfo: TEasyItemHitTestInfoSet); 82 | begin 83 | ShowMessage('clicked'); 84 | end; 85 | 86 | procedure TForm1.EasyTaskBand1GroupExpand(Sender: TCustomEasyListview; 87 | Group: TEasyGroup); 88 | var 89 | I : Integer; 90 | begin 91 | if CheckBoxOneAtATime.Checked then 92 | begin 93 | For I := 0 to EasyTaskBand1.Groups.Count - 1 do 94 | if EasyTaskBand1.Groups[I] <> Group then 95 | EasyTaskBand1.Groups[I].Expanded := False; 96 | Group.Bold := True; 97 | end; 98 | 99 | if Group.Items.Count > 0 then //<<<<< my code 100 | begin 101 | EasyTaskBand1.Selection.FocusedItem := Group.Items[0]; 102 | EasyTaskBand1.Selection.FocusedItem.Bold := True; 103 | end 104 | 105 | end; 106 | 107 | procedure TForm1.EasyTaskBand1GroupCollapse(Sender: TCustomEasyListview; 108 | Group: TEasyGroup); 109 | begin 110 | if CheckBoxOneAtATime.Checked then 111 | Group.Bold := False; 112 | end; 113 | 114 | procedure TForm1.CheckBoxOneAtATimeClick(Sender: TObject); 115 | begin 116 | if CheckBoxOneAtATime.Checked then 117 | EasyTaskBand1.Groups.CollapseAll 118 | end; 119 | 120 | end. 121 | -------------------------------------------------------------------------------- /Demos/Threaded Thumbnails/ProjectThreadedThumbnails.cfg: -------------------------------------------------------------------------------- 1 | -$A8 2 | -$B- 3 | -$C+ 4 | -$D+ 5 | -$E- 6 | -$F- 7 | -$G+ 8 | -$H+ 9 | -$I+ 10 | -$J- 11 | -$K- 12 | -$L+ 13 | -$M- 14 | -$N+ 15 | -$O- 16 | -$P+ 17 | -$Q- 18 | -$R- 19 | -$S- 20 | -$T- 21 | -$U- 22 | -$V+ 23 | -$W- 24 | -$X+ 25 | -$YD 26 | -$Z1 27 | -cg 28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 29 | -H+ 30 | -W+ 31 | -M 32 | -$M16384,1048576 33 | -K$00400000 34 | -LE"d:\borland\delphi7\Projects\Bpl" 35 | -LN"d:\borland\delphi7\Projects\Bpl" 36 | -w-UNSAFE_TYPE 37 | -w-UNSAFE_CODE 38 | -w-UNSAFE_CAST 39 | -------------------------------------------------------------------------------- /Demos/Threaded Thumbnails/ProjectThreadedThumbnails.dof: -------------------------------------------------------------------------------- 1 | [FileVersion] 2 | Version=7.0 3 | [Compiler] 4 | A=8 5 | B=0 6 | C=1 7 | D=1 8 | E=0 9 | F=0 10 | G=1 11 | H=1 12 | I=1 13 | J=0 14 | K=0 15 | L=1 16 | M=0 17 | N=1 18 | O=0 19 | P=1 20 | Q=0 21 | R=0 22 | S=0 23 | T=0 24 | U=0 25 | V=1 26 | W=0 27 | X=1 28 | Y=1 29 | Z=1 30 | ShowHints=1 31 | ShowWarnings=1 32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; 33 | NamespacePrefix= 34 | SymbolDeprecated=1 35 | SymbolLibrary=1 36 | SymbolPlatform=1 37 | UnitLibrary=1 38 | UnitPlatform=1 39 | UnitDeprecated=1 40 | HResultCompat=1 41 | HidingMember=1 42 | HiddenVirtual=1 43 | Garbage=1 44 | BoundsError=1 45 | ZeroNilCompat=1 46 | StringConstTruncated=1 47 | ForLoopVarVarPar=1 48 | TypedConstVarPar=1 49 | AsgToTypedConst=1 50 | CaseLabelRange=1 51 | ForVariable=1 52 | ConstructingAbstract=1 53 | ComparisonFalse=1 54 | ComparisonTrue=1 55 | ComparingSignedUnsigned=1 56 | CombiningSignedUnsigned=1 57 | UnsupportedConstruct=1 58 | FileOpen=1 59 | FileOpenUnitSrc=1 60 | BadGlobalSymbol=1 61 | DuplicateConstructorDestructor=1 62 | InvalidDirective=1 63 | PackageNoLink=1 64 | PackageThreadVar=1 65 | ImplicitImport=1 66 | HPPEMITIgnored=1 67 | NoRetVal=1 68 | UseBeforeDef=1 69 | ForLoopVarUndef=1 70 | UnitNameMismatch=1 71 | NoCFGFileFound=1 72 | MessageDirective=1 73 | ImplicitVariants=1 74 | UnicodeToLocale=1 75 | LocaleToUnicode=1 76 | ImagebaseMultiple=1 77 | SuspiciousTypecast=1 78 | PrivatePropAccessor=1 79 | UnsafeType=0 80 | UnsafeCode=0 81 | UnsafeCast=0 82 | [Linker] 83 | MapFile=0 84 | OutputObjs=0 85 | ConsoleApp=1 86 | DebugInfo=0 87 | RemoteSymbols=0 88 | MinStackSize=16384 89 | MaxStackSize=1048576 90 | ImageBase=4194304 91 | ExeDescription= 92 | [Directories] 93 | OutputDir= 94 | UnitOutputDir= 95 | PackageDLLOutputDir= 96 | PackageDCPOutputDir= 97 | SearchPath= 98 | Packages=vcl;rtl;vclx;indy;vclie;xmlrtl;inetdbbde;inet;inetdbxpress;dbrtl;soaprtl;dsnap;VclSmp;dbexpress;vcldb;dbxcds;inetdb;bdertl;vcldbx;adortl;teeui;teedb;tee;ibxpress;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOfficeXP;TntUnicodeVcl_R70;tb2k_d7;SpTBXLib_d7 99 | Conditionals= 100 | DebugSourceDirs= 101 | UsePackages=0 102 | [Parameters] 103 | RunParams= 104 | HostApplication= 105 | Launcher= 106 | UseLauncher=0 107 | DebugCWD= 108 | [Language] 109 | ActiveLang= 110 | ProjectLang= 111 | RootDir=D:\Borland\Delphi7\Bin\ 112 | [Version Info] 113 | IncludeVerInfo=0 114 | AutoIncBuild=0 115 | MajorVer=1 116 | MinorVer=0 117 | Release=0 118 | Build=0 119 | Debug=0 120 | PreRelease=0 121 | Special=0 122 | Private=0 123 | DLL=0 124 | Locale=1033 125 | CodePage=1252 126 | [Version Info Keys] 127 | CompanyName= 128 | FileDescription= 129 | FileVersion=1.0.0.0 130 | InternalName= 131 | LegalCopyright= 132 | LegalTrademarks= 133 | OriginalFilename= 134 | ProductName= 135 | ProductVersion=1.0.0.0 136 | Comments= 137 | -------------------------------------------------------------------------------- /Demos/Threaded Thumbnails/ProjectThreadedThumbnails.dpr: -------------------------------------------------------------------------------- 1 | program ProjectThreadedThumbnails; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/Threaded Thumbnails/ProjectThreadedThumbnails.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Demos/Threaded Thumbnails/ProjectThreadedThumbnails.res -------------------------------------------------------------------------------- /Demos/ThumbScroller/ThumbScrollerProject.dpr: -------------------------------------------------------------------------------- 1 | program ThumbScrollerProject; 2 | 3 | uses 4 | Forms, 5 | Unit1 in 'Unit1.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.CreateForm(TForm1, Form1); 12 | Application.Run; 13 | end. 14 | -------------------------------------------------------------------------------- /Demos/ThumbScroller/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 193 3 | Top = 115 4 | Caption = 'Form1' 5 | ClientHeight = 442 6 | ClientWidth = 686 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'MS Shell Dlg 2' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | PixelsPerInch = 96 15 | TextHeight = 13 16 | object Image1: TImage 17 | Left = 89 18 | Top = 13 19 | Width = 597 20 | Height = 272 21 | Align = alClient 22 | Stretch = True 23 | ExplicitHeight = 267 24 | end 25 | object Label1: TLabel 26 | Left = 0 27 | Top = 0 28 | Width = 686 29 | Height = 13 30 | Align = alTop 31 | Caption = 32 | 'WARNING: This Demo is not to show off my graphics (in)abilities' + 33 | '. It is slow so don'#39't load too many images.' 34 | Font.Charset = DEFAULT_CHARSET 35 | Font.Color = clWindowText 36 | Font.Height = -11 37 | Font.Name = 'MS Shell Dlg 2' 38 | Font.Style = [fsBold] 39 | ParentFont = False 40 | ExplicitWidth = 598 41 | end 42 | object Panel1: TPanel 43 | Left = 0 44 | Top = 285 45 | Width = 686 46 | Height = 157 47 | Align = alBottom 48 | TabOrder = 0 49 | object EasyScrollButton2: TEasyScrollButton 50 | Left = 1 51 | Top = 1 52 | Width = 17 53 | Height = 155 54 | Align = alLeft 55 | AutoScroll = True 56 | OnClick = EasyScrollButton2Click 57 | TabOrder = 0 58 | end 59 | object EasyScrollButton3: TEasyScrollButton 60 | Left = 668 61 | Top = 1 62 | Width = 17 63 | Height = 155 64 | Align = alRight 65 | AutoScroll = True 66 | Direction = sbdRight 67 | OnClick = EasyScrollButton3Click 68 | TabOrder = 1 69 | end 70 | object EasyListview1: TEasyListview 71 | Left = 18 72 | Top = 1 73 | Width = 650 74 | Height = 155 75 | Align = alClient 76 | UseDockManager = False 77 | Font.Charset = DEFAULT_CHARSET 78 | Font.Color = clWindowText 79 | Font.Height = -11 80 | Font.Name = 'MS Shell Dlg 2' 81 | Font.Style = [] 82 | GroupFont.Charset = DEFAULT_CHARSET 83 | GroupFont.Color = clWindowText 84 | GroupFont.Height = -11 85 | GroupFont.Name = 'MS Shell Dlg 2' 86 | GroupFont.Style = [] 87 | Header.Font.Charset = DEFAULT_CHARSET 88 | Header.Font.Color = clWindowText 89 | Header.Font.Height = -11 90 | Header.Font.Name = 'MS Shell Dlg 2' 91 | Header.Font.Style = [] 92 | PaintInfoGroup.MarginBottom.CaptionIndent = 4 93 | ParentFont = False 94 | Scrollbars.HorzEnabled = False 95 | Scrollbars.VertEnabled = False 96 | Selection.MouseButtonSelRect = [cmbLeft, cmbRight] 97 | TabOrder = 2 98 | View = elsFilmStrip 99 | OnItemFreeing = EasyListview1ItemFreeing 100 | OnItemSelectionChanged = EasyListview1ItemSelectionChanged 101 | OnItemThumbnailDraw = EasyListview1ItemThumbnailDraw 102 | end 103 | end 104 | object Panel2: TPanel 105 | Left = 0 106 | Top = 13 107 | Width = 89 108 | Height = 272 109 | Align = alLeft 110 | TabOrder = 1 111 | object Button1: TButton 112 | Left = 8 113 | Top = 8 114 | Width = 75 115 | Height = 25 116 | Caption = 'Browse...' 117 | TabOrder = 0 118 | OnClick = Button1Click 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /Demos/ThumbScroller/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | {$WARN UNIT_PLATFORM OFF} 6 | 7 | uses 8 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 9 | Dialogs, EasyListview, ImgList, ExtCtrls, 10 | EasyScrollFrame, StdCtrls, FileCtrl, MPCommonUtilities, Jpeg, 11 | MPCommonObjects; 12 | 13 | type 14 | TForm1 = class(TForm) 15 | Panel1: TPanel; 16 | EasyScrollButton2: TEasyScrollButton; 17 | EasyScrollButton3: TEasyScrollButton; 18 | EasyListview1: TEasyListview; 19 | Image1: TImage; 20 | Panel2: TPanel; 21 | Button1: TButton; 22 | Label1: TLabel; 23 | procedure EasyListview1ItemThumbnailDraw(Sender: TCustomEasyListview; 24 | Item: TEasyItem; ACanvas: TCanvas; ARect: TRect; 25 | AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); 26 | procedure EasyScrollButton3Click(Sender: TObject); 27 | procedure EasyScrollButton2Click(Sender: TObject); 28 | procedure Button1Click(Sender: TObject); 29 | procedure EasyListview1ItemFreeing(Sender: TCustomEasyListview; 30 | Item: TEasyItem); 31 | procedure EasyListview1ItemSelectionChanged( 32 | Sender: TCustomEasyListview; Item: TEasyItem); 33 | private 34 | { Private declarations } 35 | public 36 | { Public declarations } 37 | Dir: String; 38 | end; 39 | 40 | var 41 | Form1: TForm1; 42 | 43 | implementation 44 | 45 | {$R *.dfm} 46 | 47 | function IsImageFile(Filename: string): Boolean; 48 | var 49 | Ext: string; 50 | begin 51 | Ext := SysUtils.AnsiLowerCase(ExtractFileExt(Filename)); 52 | Result := (Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.jif') or 53 | (Ext = '.bmp') or (Ext = '.wmf') or (Ext = '.emf') or (Ext = '.ico'); 54 | end; 55 | 56 | procedure TForm1.EasyListview1ItemThumbnailDraw( 57 | Sender: TCustomEasyListview; Item: TEasyItem; ACanvas: TCanvas; 58 | ARect: TRect; AlphaBlender: TEasyAlphaBlender; var DoDefault: Boolean); 59 | var 60 | Picture: TPicture; 61 | Bitmap: TBitmap; 62 | Stream: TMemoryStream; 63 | begin 64 | Bitmap := TBitmap.Create; 65 | try 66 | // If the item doesn't have a thumbnail bitmap create one from the file 67 | if (Item.Tag = 0) and FileExists(Item.Captions[1]) then 68 | begin 69 | Stream := TMemoryStream.Create; 70 | Picture := TPicture.Create; 71 | try 72 | try 73 | Picture.LoadFromFile(Item.Captions[1]); 74 | Bitmap.Width := RectWidth(ARect); 75 | Bitmap.Height := RectHeight(ARect); 76 | Bitmap.Canvas.StretchDraw(Rect(0, 0, Bitmap.Width, Bitmap.Height), Picture.Graphic); 77 | Bitmap.SaveToStream(Stream); 78 | Item.Tag := Integer(Stream); 79 | Stream := nil; 80 | except 81 | end 82 | finally 83 | Stream.Free; 84 | Picture.Free; 85 | end 86 | end; 87 | 88 | // Paint the thumbnail 89 | if Item.Tag <> 0 then 90 | begin 91 | Stream := TMemoryStream(Item.Tag); 92 | Stream.Position := 0; 93 | Bitmap.LoadFromStream(Stream); 94 | ACanvas.Draw(ARect.Left, ARect.Top, Bitmap); 95 | end 96 | finally 97 | Bitmap.Free; 98 | end; 99 | end; 100 | 101 | procedure TForm1.EasyScrollButton3Click(Sender: TObject); 102 | begin 103 | EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX + EasyListview1.CellSizes.Thumbnail.Width; 104 | end; 105 | 106 | procedure TForm1.EasyScrollButton2Click(Sender: TObject); 107 | begin 108 | EasyListview1.Scrollbars.OffsetX := EasyListview1.Scrollbars.OffsetX - EasyListview1.CellSizes.Thumbnail.Width; 109 | end; 110 | 111 | procedure TForm1.Button1Click(Sender: TObject); 112 | 113 | procedure Add(Data: TWin32FindData); 114 | var 115 | Item: TEasyItem; 116 | begin 117 | if IsImageFile(Data.cFileName) then 118 | begin 119 | Item := EasyListview1.Items.Add(); 120 | Item.Caption := ExtractFileName(Data.cFileName); 121 | Item.Captions[1] := Dir + '\' + Data.cFileName; 122 | end; 123 | end; 124 | 125 | var 126 | FindData: TWin32FindData; 127 | FindHandle: THandle; 128 | begin 129 | if SelectDirectory('Browse for Picture Folder', '', Dir) then 130 | begin 131 | EasyListview1.BeginUpdate; 132 | try 133 | EasyListview1.Items.Clear; 134 | FindHandle := FindFirstFile(PChar(Dir + '\*.*'), FindData); 135 | if FindHandle <> INVALID_HANDLE_VALUE then 136 | begin 137 | Add(FindData); 138 | while FindNextFile(FindHandle, FindData) do 139 | Add(FindData); 140 | Windows.FindClose(FindHandle); 141 | end 142 | finally 143 | EasyListview1.EndUpdate(); 144 | end 145 | end 146 | end; 147 | 148 | procedure TForm1.EasyListview1ItemFreeing(Sender: TCustomEasyListview; 149 | Item: TEasyItem); 150 | begin 151 | if Item.Tag <> 0 then 152 | TObject(Item.Tag).Free; 153 | end; 154 | 155 | procedure TForm1.EasyListview1ItemSelectionChanged( 156 | Sender: TCustomEasyListview; Item: TEasyItem); 157 | begin 158 | if FileExists(Item.Captions[1]) then 159 | Image1.Picture.LoadFromFile(Item.Captions[1]) 160 | end; 161 | 162 | end. 163 | -------------------------------------------------------------------------------- /Design/EasyListviewReg.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Design/EasyListviewReg.dcr -------------------------------------------------------------------------------- /Design/EasyListviewReg.pas: -------------------------------------------------------------------------------- 1 | unit EasyListviewReg; 2 | 3 | // Version 2.0.0 4 | // 5 | // The contents of this file are subject to the Mozilla Public License 6 | // Version 1.1 (the "License"); you may not use this file except in compliance 7 | // with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ 8 | // 9 | // Alternatively, you may redistribute this library, use and/or modify it under the terms of the 10 | // GNU Lesser General Public License as published by the Free Software Foundation; 11 | // either version 2.1 of the License, or (at your option) any later version. 12 | // You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. 13 | // 14 | // Software distributed under the License is distributed on an "AS IS" basis, 15 | // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 16 | // specific language governing rights and limitations under the License. 17 | // 18 | // The initial developer of this code is Jim Kueneman 19 | // Special thanks to the following in no particular order for their help/support/code 20 | // Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec 21 | // 22 | //---------------------------------------------------------------------------- 23 | 24 | interface 25 | 26 | uses 27 | ToolsApi, 28 | Classes, 29 | DesignIntf, 30 | DesignEditors, 31 | PropertyCategories, 32 | Forms, 33 | ColnEdit, 34 | SysUtils, 35 | Controls, 36 | EasyListview, 37 | EasyScrollFrame, 38 | MPCommonWizardHelpers, 39 | MPCommonObjects, 40 | EasyTaskPanelForm; 41 | 42 | const 43 | NEW_PAGE = 'New'; 44 | 45 | type 46 | TEasyListviewEditor = class(TDefaultEditor) 47 | public 48 | procedure Edit; override; 49 | end; 50 | 51 | TEasyDelphiTaskFormWizard = class(TCommonWizardDelphiForm) 52 | public 53 | procedure InitializeWizard; override; 54 | end; 55 | 56 | // Only used in BDS 4.0 and up 57 | TEasyBuilderTaskFormWizard = class(TCommonWizardBuilderForm) 58 | public 59 | procedure InitializeWizard; override; 60 | end; 61 | 62 | TEasyTaskPanelCreator = class(TCommonWizardEmptyFormCreator) 63 | public 64 | procedure InitializeCreator; override; 65 | end; 66 | 67 | const 68 | sELVColumnCategory = 'Column Objects'; 69 | sELVItemCategory = 'Item Objects'; 70 | sELVGroupCategory = 'Group Objects'; 71 | sELVIncrementalCategory = 'Incremental Search'; 72 | sELVMouseCategory = 'Mouse'; 73 | sELVHintCategory = 'Hint'; 74 | sELVOLECategory = 'OLE Drag Drop'; 75 | sImageListCategory = 'ImageLists'; 76 | sPaintInfoCategory = 'Paint Information'; 77 | sELVClipboardCategory = 'Clipboard'; 78 | sELVHeaderCategory = 'Header'; 79 | sELVPaintCategory = 'Paint and Drawing'; 80 | sAutoCategory = 'Auto'; 81 | sELVViewCategory = 'View'; 82 | sELVContextMenuCategory = 'ContextMenu'; 83 | 84 | procedure Register; 85 | 86 | implementation 87 | 88 | uses 89 | EasyCollectionEditor; 90 | 91 | var 92 | DelphiCategory, BuilderCategory: IOTAGalleryCategory; 93 | 94 | procedure Register; 95 | begin 96 | RegisterComponents('MustangPeak', [TEasyListview, TEasyTaskBand, TEasyScrollButton, TEasyTaskPanelBand]); 97 | RegisterPropertyEditor(TypeInfo(TEasyCollection), nil, '', TEasyCollectionEditor); 98 | RegisterComponentEditor(TEasyListview, TEasyListviewEditor); 99 | RegisterComponentEditor(TEasyTaskPanelBand, TEasyListviewEditor); 100 | RegisterComponentEditor(TEasyTaskBand, TEasyListviewEditor); 101 | 102 | RegisterCustomModule(TEasyTaskPanelForm, TCustomModule); 103 | RegisterPackageWizard(TEasyDelphiTaskFormWizard.Create); 104 | RegisterPackageWizard(TEasyBuilderTaskFormWizard.Create); 105 | 106 | RegisterPropertyEditor(TypeInfo(TCommonImageIndexInteger), nil, '', TCommonImageIndexProperty); 107 | 108 | RegisterPropertiesInCategory(sELVColumnCategory, TCustomEasyListview, 109 | ['OnColumn*']); 110 | 111 | RegisterPropertiesInCategory(sELVItemCategory, TCustomEasyListview, 112 | ['OnItem*']); 113 | 114 | RegisterPropertiesInCategory(sELVGroupCategory, TCustomEasyListview, 115 | ['OnGroup*'] ); 116 | 117 | RegisterPropertiesInCategory(sELVHintCategory, TCustomEasyListview, 118 | ['*Hint*'] ); 119 | 120 | RegisterPropertiesInCategory(sELVOLECategory, TCustomEasyListview, 121 | ['*OLE*', 122 | 'OnGetDragImage'] ); 123 | 124 | RegisterPropertiesInCategory(sELVOLECategory, TCustomEasyListview, 125 | ['*PaintInfo*'] ); 126 | 127 | RegisterPropertiesInCategory(sELVClipboardCategory, TCustomEasyListview, 128 | ['*Clipboard*'] ); 129 | 130 | RegisterPropertiesInCategory(sELVHeaderCategory, TCustomEasyListview, 131 | ['*Header*'] ); 132 | 133 | RegisterPropertiesInCategory(sELVPaintCategory, TCustomEasyListview, 134 | ['OnAfterPaint', 135 | 'OnPaintHeaderBkGnd', 136 | 'OnPaintBkGnd'] ); 137 | 138 | RegisterPropertiesInCategory(sELVHeaderCategory, TCustomEasyListview, 139 | ['Header*'] ); 140 | 141 | RegisterPropertiesInCategory(sELVViewCategory, TCustomEasyListview, 142 | ['OnViewChange'] ); 143 | 144 | RegisterPropertiesInCategory(sInputCategoryName, TCustomEasyListview, 145 | ['OnDblClick'] ); 146 | 147 | RegisterPropertiesInCategory(sAutoCategory, TCustomEasyListview, 148 | ['OnAuto*'] ); 149 | 150 | RegisterPropertiesInCategory(sELVIncrementalCategory, TCustomEasyListview, 151 | ['*Incremental*'] ); 152 | 153 | RegisterPropertiesInCategory(sELVContextMenuCategory, TCustomEasyListview, 154 | ['OnContextMenu*'] ); 155 | end; 156 | 157 | { TEasyListviewEditor } 158 | 159 | procedure TEasyListviewEditor.Edit; 160 | begin 161 | // Show column collection editor on listview doubleclick. 162 | if (Component is TEasyTaskPanelBand) or (Component is TEasyTaskBand) then 163 | ShowEasyCollectionEditor(Designer, TEasyListview(Component).Groups) 164 | else 165 | ShowEasyCollectionEditor(Designer, TEasyListview(Component).Header.Columns); 166 | end; 167 | 168 | { TEasyDelphiTaskForm } 169 | 170 | procedure TEasyDelphiTaskFormWizard.InitializeWizard; 171 | begin 172 | inherited; 173 | Caption := 'EasyListview TaskPanel'; 174 | Author := 'Mustangpeak'; 175 | Comment := 'Creates a task band panel for the EasyTaskPanelBand component'; 176 | GlyphResourceID := ''; // use the default icon 177 | Page := NEW_PAGE; // use the New page for Forms 178 | UniqueID := 'mustangpeak.easy.delphi.task.form'; 179 | State := []; 180 | CreatorClass := TEasyTaskPanelCreator; 181 | GalleryCategory := DelphiCategory; 182 | end; 183 | 184 | { TEasyBuilderTaskForm } 185 | 186 | procedure TEasyBuilderTaskFormWizard.InitializeWizard; 187 | begin 188 | inherited; 189 | Caption := 'EasyTaskPanel C++Builder Form'; 190 | Author := 'Mustangpeak'; 191 | Comment := 'Creates a task band panel for the EasyTaskPanelBand component'; 192 | GlyphResourceID := ''; // use the default icon 193 | Page := ''; // use the default page for Forms 194 | UniqueID := 'mustangpeak.easy.builder.task.form'; 195 | State := []; 196 | CreatorClass := TEasyTaskPanelCreator; 197 | GalleryCategory := BuilderCategory; 198 | end; 199 | 200 | { TEasyTaskPanelCreator } 201 | 202 | procedure TEasyTaskPanelCreator.InitializeCreator; 203 | begin 204 | inherited; 205 | AncestorName := 'EasyTaskPanelForm'; 206 | if IsDelphi then 207 | IncludeIdent.Add('EasyTaskPanelForm') 208 | else 209 | IncludeIdent.Add('EasyTaskPanelForm.hpp') 210 | end; 211 | 212 | initialization 213 | DelphiCategory := AddDelphiCategory('mustangpeak.delphi.easylistview', 'EasyListview for Delphi'); 214 | BuilderCategory := AddBuilderCategory('mustangpeak.builder.easylistview', 'EasyListview for C++ Builder'); 215 | finalization 216 | RemoveCategory(BuilderCategory); 217 | RemoveCategory(DelphiCategory); 218 | 219 | end. 220 | 221 | -------------------------------------------------------------------------------- /Documentation/EasyListview.dox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/EasyListview.dox -------------------------------------------------------------------------------- /Documentation/Images/easylistview_logo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/Images/easylistview_logo2.jpg -------------------------------------------------------------------------------- /Documentation/Images/easylistview_logo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/Images/easylistview_logo3.jpg -------------------------------------------------------------------------------- /Documentation/Images/easylistview_tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/Images/easylistview_tiles.png -------------------------------------------------------------------------------- /Documentation/Images/scrollbuttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/Images/scrollbuttons.png -------------------------------------------------------------------------------- /Documentation/Images/taskband.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Documentation/Images/taskband.png -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | Mustangpeak Common Library 2 | 3 | The contents of this file are subject to the Mozilla Public License 4 | Version 1.1 (the "License"); you may not use this file except 5 | in compliance with the License. You may obtain a copy of the 6 | License at http://www.mozilla.org/MPL/. 7 | 8 | Alternatively, you may redistribute this library, use and/or modify it under the terms of the 9 | GNU Lesser General Public License as published by the Free Software Foundation; 10 | either version 2.1 of the License, or (at your option) any later version. 11 | You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. 12 | 13 | Software distributed under the License is distributed on an 14 | "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or 15 | implied. See the License for the specific language governing rights 16 | and limitations under the License. 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/EasyLVResources.pas: -------------------------------------------------------------------------------- 1 | unit EasyLVResources; 2 | 3 | // Version 2.1.0 4 | // 5 | // The contents of this file are subject to the Mozilla Public License 6 | // Version 1.1 (the "License"); you may not use this file except in compliance 7 | // with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ 8 | // 9 | // Alternatively, you may redistribute this library, use and/or modify it under the terms of the 10 | // GNU Lesser General Public License as published by the Free Software Foundation; 11 | // either version 2.1 of the License, or (at your option) any later version. 12 | // You may obtain a copy of the LGPL at http://www.gnu.org/copyleft/. 13 | // 14 | // Software distributed under the License is distributed on an "AS IS" basis, 15 | // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 16 | // specific language governing rights and limitations under the License. 17 | // 18 | // The initial developer of this code is Jim Kueneman 19 | // Special thanks to the following in no particular order for their help/support/code 20 | // Danijel Malik, Robert Lee, Werner Lehmann, Alexey Torgashin, Milan Vandrovec 21 | // 22 | //---------------------------------------------------------------------------- 23 | 24 | interface 25 | 26 | {$B-} 27 | 28 | const 29 | STR_NONEXISTENTCOLUMN = 'ERROR: Accessing a non-existent column index'; 30 | STR_NONEXISTENTCOLUMNBANDROW = 'ERROR: Accessing a non-existent Column Band Row'; 31 | STR_NONEXISTENTGROUP = 'ERROR: Accessing a non-existent Group ID'; 32 | STR_BACKGROUNDALPHABLEND = 'Error: Background AlphaBlend mode requires an AlphaImage'; 33 | 34 | implementation 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /Source/EasyRes.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TurboPack/MustangpeakEasyListview/c458e867d703900f4199f28acccc8da22bc78bbf/Source/EasyRes.res -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | MustangpeakEasyListView 2 | ======================= 3 | 4 | ### Table of contents 5 | 1. [Introduction](#Introduction) 6 | 2. [Package names](#Package-names) 7 | 3. [Installation](#Installation) 8 | 9 | ## Introduction 10 | 11 | The Turbopak Mustangpeak library for Delphi and C++Builder was originally developed by **Jim 12 | Kueneman** and contains the EasyListView and the VirutalShellExplorer components. 13 | The Mustangpeak EasyListView is a fast and very customizable TListview replacement. It can also be used with the VirtualShellTools component of the MustangPeak Library. 14 | 15 | This is a source-only release of Mustangpeak EasyListView. It includes 16 | designtime and runtime packages for Delphi and CBuilder and supports 17 | Win32 and Win64. 18 | 19 | ## Package names 20 | 21 | MustangpeakEasyListView package names have the following form: 22 | 23 | - EasyListviewD.dpk (Delphi runtime package) 24 | - EasyListviewDD.dpk (Delphi design time package) 25 | 26 | - EasyListviewC.bpl (C++Builder Runtime for all platforms) 27 | - EasyListviewCD.bpl (C++Builder Runtime for the VCL) 28 | 29 | *RAD STUDIO Berlin or later supported.* 30 | 31 | ## Installation 32 | 33 | To install Mustangpeak EasyListView into your IDE, take the following 34 | steps: 35 | 36 | 1. Install first [MustangpeakCommonLib](https://github.com/TurboPack/MustangpeakCommonLib). 37 | 38 | 2. Clone or download and unzip the Github repository into a directory (e.g., D:\MustangpeakEasyListView). 39 | 40 | 3. Start RAD Studio. 41 | 42 | 4. Add the source subdirectory (i.e., D:\MustangpeakEasyListView\Source) to the 43 | IDE's library path. 44 | 45 | 5. Open and compile the runtime package specific to the IDE being used. 46 | 47 | 6. Open & install the corresponding designtime package. 48 | --------------------------------------------------------------------------------