Report Control - An Outlook 2000-Style SuperGrid Control



Click here for larger image

Environment: VC6, Windows 98, NT4 (IE4), Windows 2000.

This ReportCtrl control is an Outlook 98/2000 style SuperGrid control. I've seen many implementations, most of them based on the standard CListCtrl. All implementations have their specific weaknesses. This implementation tries to overcome some of the weaknesses, although for some purposes it may introduce others.

The documentation is sparse, because I do not have much time to write documentation. However, the included demo is a great help in understanding how to use the features of the control and many features are demonstrated in a practical manner. The interfaces of the controls highly resemble the interfaces of similiar MFC controls, like the list control and header control. So, for the more experienced MFC coder, it should not be a big problem to understand how to use the control in their own projects...

Version history excerpt (refer to source file for complete history):

2.0.1

  • Fixed bug in DeleteItem for tree control mode.
  • Fixed item expansion for single subitem hierarchy items.
  • Added GetExpandedItemText to allow expanded items to show different text from the subitem text.
  • Added support for radio button and disabled check marks and radio buttons.
  • Added RVP_ENABLEFLATCHECKMARK property, to control the visual style of check marks or radio buttons.
  • Added support for check mark and radio button image list.
  • Changed CurrentFocus() to GetCurrentFocus().
  • Changed OnKillFocus to recognize all child windows.
  • Extended MeasureItem function.
  • Fixed GetNextItem() for RVTI_ROOT.
  • Added support for SetRedraw suggested by Phil J Pearson.
  • Optimized InsertItem performance by skipping GetRowFromItem when the focus is not on an reorderable row, as suggested by Phil J Pearson.
  • Added disabled background function to CReportSubItemListCtrl.
  • Added pre-create style passing to CReportView.
  • Adjusted edit box position.
  • Fixed a bug related to keydown messages in unfocused state.
  • Fixed tip redraw problem and tip background color mismatch.
  • Fixed kill tip on WM_KILLFOCUS, finally fixing click and double click on expanded subitems.
  • Added GetSelectedItems method.
  • Fixed a selection bug in ClearSelection.
  • Made GetReportCtrlPtr virtual and changed CReportView to use overriden function to get a pointer to the embedded CReportCtrl. This allows control derived from CReportCtrl to be embedded in CReportView.
  • Added UpdateWindow to SetRedraw when re-enabling redrawing.
  • Removed legacy definitions from header file.
  • Added blended image support through state bits, focus and selection through the RVP_ENABLEIMAGEBLENDING and RVP_BLENDCOLOR properties.
  • Added support for overlay images.
  • Added Win2K tip fading to CReportTipCtrl.
  • Fixed nFormat subitem member update in OnHdnItemChanged, as suggested by Sven Ritter.
  • Added selective item cache flush to SetItemCount.
  • Added GetItemString() function to retrieve an item as a string.
  • Added clipboard Copy support and clipboard separator and indent properties.
  • Fixed OnRvnEndItemEdit to not loose lParam, as suggested by Paul Hurley.
  • Added GetSortSettings() to retrieve sorting settings.
  • Made SelectRows virtual to allow owner data multiple selection management.
  • Fixed a bug in DeleteItem for trees.
  • Fixed various mouse button, keyboard selection/focus issues.

The control uses Keith Rules MemDC class for flicker free drawing.

Enjoy!

Download demo project - 183 KB

Download source - 68 KB

Original


Comments

  • how to deal with the OnRvnItemDrawPreview part ?

    Posted by zyfzzzz on 06/07/2012 06:30pm

    when the items are large , I mean when it scrolls,the preview seems wrong,guess it needs some kind of control with the scrollbar,can you help ?

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: August 13, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT If you are developing applications, you'll want to join us to learn how applications are changing as a result of gesture recognition. This technology will change how you and your users interact - not simply with your devices, but with the world around you. Your devices will be able to see and hear what your users are doing. Are your applications ready for this? Join us to learn about Intel® RealSense™ Technology, including never been …

  • Live Event Date: July 30, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT You may already know about some of the benefits of Bluemix, IBM's open platform for developing and deploying mobile and web applications. Check out this upcoming eSeminar that focuses on building an Android application using the MobileData service, with a walk-through of the real process and workflow used to build and link the MobileData service within your application. Join IBM's subject matter experts as they show you the way to build a base …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds