Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Окраска ListView


Автор: andrey_post 7.4.2004, 12:12
Вообщем есть у меня ListView, есть постоянно изменяющееся значение N от 1 до ListView.Items.Count.

Мне необходимо, что бы все items и SubItems до N оставались окрашены прежним цветом, item со значением N выделялось желтым цветом, а все от Item[N] до Items.Count серым.
Как сие воплотить в жизнь? withstupid.gif

ListView Style = Report

Автор: z-END 8.4.2004, 01:56
ну наверное вот такой вариант будет самый простой smile.gif
Код
procedure TForm1.ListBox1DrawItem (Control: TWinControl; Index: Integer;  Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1.Canvas do begin
  If Index<N then Font.Color:=clWindowText;
  if Index=N then Font.Color:=clYellow
  if Index >N then Font.Color:=clGray;
  TextRect (Rect, Rect.Left, Rect.Top, ListBox1.Items [Index]);
end;
end;

ps вообще на форуме этот вопрос неоднократно обсуждался cool.gif

Автор: z-END 8.4.2004, 02:38
Упс незнаметил что ListView:)
ну тогда можно так: (но это уже не лучишй вариант) ставиш OwnerDraw:=true и событии OnDrawItem такой код суешь:
Код
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
 Item: TListItem; Rect: TRect; State: TOwnerDrawState);
var
x: Integer;
S: String;
L: Integer;
begin
with ListVIew1.Canvas do begin
 If Item.Index < N then Font.Color:=clWindowText;
 if Item.Index = N then Font.Color:=clYellow;
 if Item.Index > N then Font.Color:=clGray;
 TextOut (Rect.Left, Rect.Top, Item.Caption);
 L := 0;
 for x := 0 to   ListVIew1.Columns.Count-1 do
  begin
   if x < Item.SubItems.Count then
   S := Item.SubItems[x] else S:='';
   L := L+ListVIew1.Columns.Items[x].Width;
   TextOut (L, Rect.Top,S);
  end;
end;
end;

ps и все равно че-то похожее на форуме былоsmile.gif
блин спать мне уже пора так что может код еще и не рабочий...
че точно не будет работать так это подсветка выделенного элемента (ну это можно обыграть if Item.Selected then ... )

Автор: andrey_post 8.4.2004, 06:19
nJIaKca.spb

Огромное спасибо! Код полностью рабочий!!! biggrin.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)