Click here to Skip to main content
15,860,859 members
Articles / Desktop Programming / MFC

SuperGrid - Yet Another listview control

Rate me:
Please Sign up or sign in to vote.
4.77/5 (98 votes)
8 Dec 1999CPOL3 min read 1M   11.4K   345   192
A combination list control and tree control with checkbox capability

Sample Image

Okay yet another full blown ownerdraw listview control with a tree like thing in the first column.

What´s new:

  • subitems now supports images
  • improved sorting
  • bugfixes reported by you.

please see the history section in the SuperGridCtrl.cpp file for further reading.

Features:

The listview control has support for editing subitems and basic user navigation. To edit an item hit the Enter key to start editing, when done editing, hit the Enter Key again. The listview control also has support for sorting items, drag and drop, basic scroll, autoscroll and autoexpand when dragging an item over another item. The listview control supports Insert/Delete items and you can use the +,-,* keys to expand/collapse items. The listview control does NOT support header drag/drop operations. Thanks for all them positive emails I have recived. If you have any suggestions to some future version let me know.

Note:

The class CSuperGridCtrl is derived from CListCtrl and it has a nested class called CTreeItem. The CTreeItem represents a node in a linked list. Each CTreeItem has a CObList representing its children and a few data members telling you the current status on the node e.g expanded, haschildren etc. Each listview item has a pointer to the CTreeItem(stored in the lParam of course). The CTreeItem has an associated class called CItemInfo. The CItemInfo class represents the data in the listview. This class is just a wrapper for the CStringArray, each item in the array represents a subitem. You may have to modify this class to suit your logical data-representation in the listview. In each CItemInfo you may associate a controltype: default controltype is an edit-control. In the source code you will find an example on how to associate a combobox control to a specific CItemInfo and how to initalize the combobox with default values.

Another standard control which is implicit in the listview control are the checkbox-control, by using the LVS_EX_CHECKBOXES style you will have this control for free, nothing new here....but in the CItemInfo class you will be able to test which items are checked. The class CMySuperGrid which is derived from CSuperGridCtrl shows you how to initalize the grid, insert root items, insert items, sort items, associate controltypes and how to implement 'print preview' selected or checked items depending on which extended style you have set, it also shows you have to search for items, select items, delete items and how to set the current listview icon and individual cell color. The source code shows you how to use the listview control in a CView derived class and in a CDialog derived class.

The listview control was built with Visual C++ 6.0 (sp10) level 8 on Windows 2000 beta 9, I don't remember the Netcard ID ;-).

In the SuperGridCtrl.h header file you will find further information/documentation on how to use this listview control. I have included a "history" section in the SuperGridCtrl.cpp file.

Drop me a line when you find that bug or if you have any comments / suggestions / improvement at all to this listview control.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Switzerland Switzerland
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 3 Pin
lemon8632-Dec-15 21:44
lemon8632-Dec-15 21:44 
BugBug on CSuperGrid::GetCount - The *Bug* and the *Solution*. Pin
wangjianhua20059-Oct-14 17:16
wangjianhua20059-Oct-14 17:16 
GeneralMy vote of 5 Pin
mxs8108-Aug-13 0:04
mxs8108-Aug-13 0:04 
QuestionFOUND How Implement CheckBox Capture Event Pin
Herusetiyadi7-Jun-13 8:24
Herusetiyadi7-Jun-13 8:24 
Questionocx file for use in VB6 Pin
L B Choudhury28-Jan-13 19:06
L B Choudhury28-Jan-13 19:06 
QuestionHow to real delete all, include column header? Pin
Jason Tian19-Nov-11 19:55
Jason Tian19-Nov-11 19:55 
GeneralRe: How to real delete all, include column header? Pin
@llan9-Dec-11 5:26
@llan9-Dec-11 5:26 
Questionhow to add Icon To this SuperList Pin
so0_lanhlung27-Mar-11 16:54
so0_lanhlung27-Mar-11 16:54 
QuestionIs there a way to edit the fields? Pin
matt200023-Jan-09 9:03
matt200023-Jan-09 9:03 
QuestionDialog based application [modified] Pin
krishnanand2-Jul-08 3:16
krishnanand2-Jul-08 3:16 
QuestionColumn problem when dynamic setting Pin
Eva ranee17-Sep-07 23:50
Eva ranee17-Sep-07 23:50 
QuestionMultiple column sortin Pin
sharathgowda10-Jul-07 2:35
sharathgowda10-Jul-07 2:35 
GeneralIt looks so good. Pin
N1i2c3k8-Jun-07 19:31
N1i2c3k8-Jun-07 19:31 
QuestionI need some help about delete items Pin
Starsrain4-Apr-07 15:37
Starsrain4-Apr-07 15:37 
my data is dynamic load from database,and i have carried it out only in the this

control.
my problem is i used the tree to control the data display in the list
tree control.On this way,i selchanged on the my tree control need display the data

in the list tree.at first,In my tree control selchange function i used the

deleteAll() function to delete the list tree all items and display the new

data.when i use the deleteall function the program will be intermitted. when i

used the DeleteAllItems() function to delete the list tree data,itself delete the

child node and display the child node function will be error.it display the data

not right.
like this:
+Root1
+Root2
+Root3
expend the Root1 then Root2 node will be delete and collapsed the Root1 it can't

delete itself children.

someone can help me or give me some suggestion,thanks
QuestionDo you have a VB OO compatible version or OCX ? Pin
MCMikey6921-Mar-07 7:40
MCMikey6921-Mar-07 7:40 
GeneralBug in check boxes Pin
_faraz12-Mar-07 0:48
_faraz12-Mar-07 0:48 
GeneralRe: Bug in check boxes Pin
_faraz12-Mar-07 1:33
_faraz12-Mar-07 1:33 
Questionhow do you implement it ? Pin
shuaicarr25-Jan-07 18:24
shuaicarr25-Jan-07 18:24 
QuestionNested List-Control with Column-Headers ? Pin
VMbuseck7-Dec-06 4:34
VMbuseck7-Dec-06 4:34 
GeneralReally useful but is it possible? [modified] Pin
crazydave2223-Oct-06 4:27
crazydave2223-Oct-06 4:27 
Question1. Does anybody know how to implement Multiselection ( Rows ) into this fine piece of code? Pin
hawonjeon10-Oct-06 20:26
hawonjeon10-Oct-06 20:26 
AnswerRe: 1. Does anybody know how to implement Multiselection ( Rows ) into this fine piece of code? Pin
tangshengye29-Oct-08 2:24
tangshengye29-Oct-08 2:24 
Generalproblem with add 100 000 nodes Pin
nikomsj14-Sep-06 3:16
nikomsj14-Sep-06 3:16 
Generalbug Pin
kingship9-Aug-06 6:32
kingship9-Aug-06 6:32 
GeneralNeed Some help Pin
konstantinos_100028-Jul-06 0:42
konstantinos_100028-Jul-06 0:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.