ListView Coloured Headers Example

Listview Colored Headers

The Listview control of VB 5.0, doesn't let the header control have a colored header buttons. So this code lets you have it, by subclassing the listview and intercepting the header painting to achieve the effect.

Module : mLVClrHdr :

Implementation of Subclassing function and CustomDraw notification of Header control to get colored header elements.

Main Logic:

Step 1 : Subclass the ListView and listen for WM_NOTIFY message from its child ( which is the Header Control)

Step 2 : when you get CustomDraw notification, set the appropriate Colors into the DC, at appropriate painting stage ITEMPREPAINT

Step 3 : The actual paiting work is left for the Default procedure.

Future work: For exotic paiting, you can create a OwnerDraw header button(s) and handle WM_DRAWITEM . It is possible.

I am working on this presently (24/7/99), and shall post it on the Codeguru (VB) site, once it is ready.

This is an enhancement of Colored Listview Items example taken from the Codeguru (VB) site. The original example is by Chris Eastwood. I tried to retain most of the Code, as it is. His code uses a subclassing control, while this uses none. But you have to follow some compulsory steps, so as not to have your VB IDE crashed:-)

** Important & compulsory steps to use this code:

Step 1: Setup the subclass :

Call HooktoLV(listview1.hwnd,True), where listview1 is the Listview control that you want to subclass. Put this line in the Form_load procedure of the form that has this listview.

Step 2 : Set the Foreground and Background colors of the listview header buttons using global variables glHdrTextClr and glHdrBkClr Note that changes take effect only at the next painting cycle.

So, for dynamic changing, use listview.refresh to paint immediately.

Step 3 : Remove the subclass :

Call HooktoLV(Byval 0& , False)

Preffered point of calling this is in Form_QueryUnload. Form_Unload will also work.


Known Bugs : Only one, as far as i could test:

This code paints the header buttons *ONLY*. So if you have the buttons not covering the entire list view, the portion between the last button and listview right edge, still looks "Grey". So, Look for Chris' code elsewhere on Codeguru site to set the last button to occupy the whole of Client area till right-edge of the ListView.

Download Zipped Project File (12k)

Screen shot



Comments

  • How to decrese the row height of ListView in VB.

    Posted by Legacy on 12/19/2002 12:00am

    Originally posted by: Sakshi

    In ListView Control I couldn't get proper output display. The data display in reportview of ListView comes with bigger rows.If you know how to set the row height in output display please tell me.

    • How to decrese the row height of ListView in VB.

      Posted by rajalo on 04/26/2004 05:12am

      Decrease the font size - Guess this will work -)

      Reply
    Reply
  • ListView Problem

    Posted by Legacy on 07/17/2002 12:00am

    Originally posted by: Nishita

    I have three columns in ListView control and if i click on first column header - the text in column header shouls appear in RED color. If you do, can you please send me a sample code or a web site where it shows how to do it. Thanks in advance. Ricky

    Reply
  • List view header color

    Posted by Legacy on 05/23/2002 12:00am

    Originally posted by: Cristina

    when i try to end the application from vb develpment
    environment I'm getting an assertion error.if Anyone
    knows how to solve it please help.
    Thanks in advance.
    Cristina

    Reply
  • Cool, I like this site

    Posted by Legacy on 12/20/2001 12:00am

    Originally posted by: Pingo James

    Thank author for his/her code.

    Reply
  • THANKS!!!

    Posted by Legacy on 06/26/2001 12:00am

    Originally posted by: Alberto Vasquez

    Thanks so much for this code.. I've been trying to find this change and this is the first place I found it at.

    Thanks again!

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

Top White Papers and Webcasts

  • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there is simply not enough quality talent to go around. Tiempo Development is a nearshore software development company. Our headquarters are in AZ, but we are a pioneer and leader in outsourcing to Mexico, based on our three software development centers there. We have a proven process and we are experts at providing our customers with powerful solutions. We transform ideas into reality.

  • Lenovo recommends Windows 8 Pro. "I dropped my laptop getting out of the taxi." This probably sounds familiar to most IT professionals. If your employees are traveling, you know their devices are in for a rough go. Whether it's a trip to the conference room or a convention out of town, any time equipment leaves a user's desk it is at risk of being put into harm's way. Stay connected at all times, whether at the office or on the go, with agile, durable, and flexible devices like the Lenovo® …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date