It provides an easy way to add the commands Copy, Cut, Paste, Duplicate, Delete, Move, Drag, Undo and Redo.
Features:
- Edit functions: Copy, Cut, Paste, Duplicate, Delete, Move, Drag, CopyTo and MoveTo.
- History functions: Add, Undo and Redo.
- Group functions: EnableGroups, InsertGroup, RemoveGroup, InsertAtGroup, RemoveAtGroup, SetGroups, GetGroups, SetGroupCollapisable, RemoveAllGroups, CollapseAll and RefreshGroups.
- Copy, cut and paste between different ListViews.
- Keep history of individual ListViews to be used with Undo and Redo.
- Drag-and-Drop shows a destination bar to indicate where selected rows will be moved to.
- Auto-Scrolls ListViews when dragging above or below them.
- Easily add and manage ListView Groups.
- Supports Right-Click drag.
- Supports Checked ListViews.
- Supports ListViews with Icons.
- Customize Auto-Scroll delay, thickness and color of destination bar.
Spoiler
Notes:
- They all operate on the active ListView control, like AHK built-in functions.
- Edit functions can be called directly as easy as ^c::LV_Rows.Copy() (except CopyTo and MoveTo that need to be initialized with a HWND).
- History and Group functions must be initialized via Handle := New LV_Rows().
- To keep original icons you must initialize it passing the ListView's HWND, e.g. Handle := New LV_Rows(Hwnd).
- The Drag function must be called from the LV G-Label when the Drag event occurs.
- You can manage multiple listviews with the same Handle.
- Pass the HWND's in inialization, e.g. Handle := New LV_Rows(Hwnd1, Hwnd2, Hwnd3...) and use SetHwnd() to select them.
- Use SetHwnd() or InsertHwnd() to add more HWND's to the Handle.
Special thanks to Micahs for the base code for the Drag function and to just me for the LV_EX library used for the Group functions.
See also TV_DragAndDrop