[Lazarus] How to draw a progressbar under a column of a listview?

Graeme Geldenhuys graemeg.lists at gmail.com
Sat Apr 11 08:43:21 CEST 2009

2009/4/11 闫程远 <yanchengyuan at gmail.com>:
> first i wanted to draw a progressbar.i know there is a method of a TListItem
> called "DisplayRect",but whatever i do,the rect it returns is (0,0,0,0)

As far as I can see you have found a bug. Please report this in Mantis.

I have tried the following code and the DisplaySubItemRect() is also
always (0,0,0,0). The other thing is that I use Sender
(TCustomListView type) to retrieve the canvas. If the code below runs,
the whole Form is painted Green, whereas at least it should only have
been inside the ListView.

I use Lazarus (latest trunk revision) with GTK2 widgetset.  Can you
try to reproduce this and give feedback?

Steps to reproduce:
* New LCL application
* Drop TListView on form
* Create 3 new items.
* Create 1 new subitem for each item.
* Add the event handler below
* Run from command line (so writeln() statements work)

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem;
  SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
  rect: TRect;
  if Item.Caption = 'Item1' then
//    if cdsDefault in State then
//      DefaultDraw := False;
      Rect := Item.DisplayRectSubItem(SubItem, drBounds);
      writeln('r.right = ', rect.Right);
      Brush.Color := clGreen;
      Rect.Right := Trunc(Rect.Right * 0.75); // 75%

> and whatever i wrote for the drawsubitem/drawitem method it just doesn't
> work.
> then i tried to put a Tprogressbar under a column,and it failed again.
> can anyone help me?
> regard,
> Yan Chengyuan
> --
> I'm sure that I will win.
> _______________________________________________
> Lazarus mailing list
> Lazarus at lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus

  - Graeme -

fpGUI - a cross-platform Free Pascal GUI toolkit

More information about the Lazarus mailing list