Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Выделение цветом нужного item в Listview


Автор: Solne4naya 8.11.2007, 14:44
У меня вопрос :
В цикле необходимо двигаться по строкам listview. Порядок следования задается произвольно.
Ту строку, на которой находимся, необходимо выдлить цветом.
Как это сделать!??????
Пробовала 
Код

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); 
begin 
defaultdraw:=false;
if item.Index=nom
then ListView1.Canvas.Brush.Color:= clred;
defaultdraw:=true;
end;


где nom- индекс нужного итема. объявлен глобально и считывается с поля edit.
Работает как-то странно.... Запуталась совсем smile 
Помогите разобраться

Автор: ama_kid 8.11.2007, 17:06
Solne4naya, может что-нить типа такого:
Код
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
 OldColor:TColor;
 ARect:TRect;
begin
 DefaultDraw:=true;
  if Item.Index = 2 then    // Здесь задаем номер нужного итема
   begin
    DefaultDraw:=false;
    OldColor:=Canvas.Brush.Color;
    (Sender as TCustomListView).Canvas.Brush.Color:=clYellow;
    ARect:=Item.DisplayRect(drLabel);
    (Sender as TCustomListView).Canvas.Rectangle(ARect);
    (Sender as TCustomListView).Canvas.TextRect(ARect,ARect.Left+1,ARect.Top,Item.Caption);
    (Sender as TCustomListView).Canvas.Brush.Color:=OldColor;
   end;
end;

Автор: Rennigth 8.11.2007, 17:11
ama_kid, 
А зачем это (Sender as TCustomListView) преобразование?  smile тайный смысл или по привык что Sender в виде TObject-а приходит? ;)

Автор: ama_kid 8.11.2007, 17:18
Rennigth, а, ну да smile Привычка...

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