Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 17:17   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как покрасить строки в ListView начиная со второй (не считая заголовка)?

Добрый вечер! Нашел какой-то код. Нужно, чтобы раскраска осуществлялась со второй по счету строки. Не от заголовка надо отсчет вести, а от первой строки. Помогите доработать сей код:
Код:
procedure TForm1.lv2CustomDrawItem(Sender: TCustomListView; Item: TListItem;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
 i: integer;
begin
 with Form1.lv2.Canvas.Brush do
 begin
//  for i := 1 to Form1.lv2.Items.Count - 1 do
//  begin
   case Item.Index of
    0: Color:=$006262FF;
//    1: Color:=clGreen;
//    2: Color:=clRed;
   end;
//   Form1.lv2.Items[i].SubItems.
//  end;
 end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 09.03.2012, 17:18   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showpost....7&postcount=10
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2012, 17:40   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

За исходник спасибо, но он слишком сложен наверное для решения моего вопроса . Неужели нельзя просто в цикле передать как-то? Без указателей и т.д.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 09.03.2012, 18:02   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

artemavd, обращение к OnCustomDrawItem идет для каждого Item-а, а не для всего ListView в целом. Ни какого цикла по всем Item-ам там не нужно. Item.Index=0 и есть первая строка, для неё или умолчательная покраска, или ничего не надо красить (не помню точно, что будет, если не красить)

ADD cм. http://programmersforum.ru/showthread.php?t=174029
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.03.2012 в 18:05.
Аватар вне форума Ответить с цитированием
Старый 09.03.2012, 18:09   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Нужно, чтобы раскраска осуществлялась со второй по счету строки. Не от заголовка надо отсчет вести, а от первой строки.
Можно скрином показать что и как?

Ибо шапка с названиями колонок, вообще за Item не принимается.
А то что, после шапки и есть стартовый элемент списка(Его индекс = 0).

[updated]

Вот закрашивание др. элементов кроме 0-го(1-го для нас) в списке:
Код:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
const
  col:array[0..7] of TColor = (clRed,clGreen,clBlue,clBlack,clLime,clMaroon,clDkGray,clYellow);
begin
  if Item.index > 0 then //Если мы не первыев списке. 
   Sender.Canvas.Brush.Color:=Col[RandomRange(0,7)]; //Math Unit for RandomRange needed. 
end;

procedure TForm1.Button1Click(Sender: TObject);
var
LI:TListItem;
i:Integer;
begin
 for i:=0 to 10 do
 begin
   li:=ListView1.Items.Add;
   LI.Caption:=IntToStr(i);
 end;
end;

end.

Последний раз редактировалось Человек_Борща; 09.03.2012 в 18:21.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление всех строк из RichEdit, начиная с определённой строки ondar Компоненты Delphi 5 07.06.2011 06:48
Как найти среднее значение не считая нули. SNV75_13 Microsoft Office Excel 16 24.02.2011 13:37
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку Dimak24 Помощь студентам 1 19.12.2008 15:45
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45