Solved

display sorting triangle in ListView column header

Posted on 1998-08-16
4
576 Views
Last Modified: 2010-04-03
How can I display in a ListView column header a triangle that shows after which column are sorted the items, and in which direction (like in the Microsoft Internet Mail and News)?
0
Comment
Question by:biroadam
  • 2
4 Comments
 
LVL 4

Accepted Solution

by:
erajoj earned 50 total points
ID: 1336098
Hi,
You could do something like this:

uses
  ...ComCtrls, Commctrl;

var
  MyBMP : TBitmap;
  hditem: THDItem;

  MyBMP := TBitmap.Create;
  with MyBMP do begin
    Canvas.Brush.Color := clBtnFace;
    Width  := 10;
    Height := 10;
// down...
    Canvas.Polyline([Point(0,0),Point(4,8),Point(8,0),Point(0,0)]);
//  up...
//  Canvas.Polyline([Point(0,8),Point(4,0),Point(8,8),Point(0,8)]);
  end;

 ...

  hditem.Mask := HDI_FORMAT;
  Header_GetItem( GetDlgItem( ListView1.Handle, 0 ), 1, hditem );
  hditem.Mask := HDI_BITMAP or HDI_FORMAT;
  hditem.fmt  := hditem.fmt or HDF_BITMAP;
  hditem.hbm := MyBMP.Handle;
  Header_SetItem( GetDlgItem( ListView1.Handle, 0 ), 1, hditem );

/// John

0
 
LVL 5

Expert Comment

by:ronit051397
ID: 1336099
Did you check it? It doesn't seem to work.
0
 

Author Comment

by:biroadam
ID: 1336100
 Thank you, it was a good answer.

  I have two further questions:

  1. How can I move the bitmap on the RIGHT side of the column header’s caption (the bitmap generated by your code is on the left side)?

  2. How can I resolve the transparency problem for this bitmap? I must have a triangle on a clButtonFace background, so I have two choises: A. making a procedure which calls the CreateGrayMappedBmp function every time the system colors changes, or B. I have a transparent color.

  I couldn’t use the solution B because setting my bitmap’s Transparency, TransparentColor and TransparentMode properties, the transparency didn’t work on the column header.
0
 
LVL 5

Expert Comment

by:ronit051397
ID: 1336101
Does it work on NT4?
Does it work when the listview is not on the main form?

If yes, can you please send me the sample code?  ronith@cmr.co.il

Thanks,
Ronit
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question