Re: TListView и прорисовка SubItem
От: Danchik Украина  
Дата: 20.10.05 13:59
Оценка:
Здравствуйте, yaser, Вы писали:

[Skip]

Y>Проблема в том, что в 3 колонке текст почему-то прорисовывается жирным стилем.

Y>Как с этим бороться?

Действительно такая проблема есть.
Можна решить ее так:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var
  aRect : TRect;
  aCanvas : TCanvas;
  K: Integer;
begin

  if SubItem = 1 then
  begin
    { вариант поточней вычислить прямоугольник }
    aRect := Item.DisplayRect(drBounds);
    aRect := Rect (0, aRect.Top, Sender.Column [SubItem].Width, aRect.Bottom);
    for K := 0 to SubItem - 1 do
      OffsetRect (aRect, Sender.Column [K].Width, 0); { может есть другой способ... }

    aCanvas := TCanvas.Create;
    try
      { делаем свою Canvas, борландовцы что то намутили (горе от ума :) ) }
      aCanvas.Handle := GetDC (Sender.Handle);
      try
        aCanvas.Pen.Color := clBlack;
        aCanvas.Pen.Style := psSolid;
        aCanvas.Brush.Color := clGray;
        aCanvas.Brush.Style := bsSolid;
        aCanvas.FillRect(aRect);
        aCanvas.Rectangle(aRect.Left, aRect.Top, aRect.Right, aRect.Bottom);
        DefaultDraw := False;
      finally
        ReleaseDC(Sender.Handle, aCanvas.Handle);
        aCanvas.Handle := 0;
      end;
    finally
      aCanvas.Free;
    end;
  end;
end;


Удачи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.