├── .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 |
--------------------------------------------------------------------------------