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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2013, 22:40   #1
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию Цвет строки ListBox через цикл в зависимости от параметра

Добрый вечер!

Имеется ListBox, в который загружается список файлов и в конце файла [0] или [1] - это параметр. В зависимости от параметра строка либо зеленая либо красная. У меня стоит сейчас CASE INDEX OF на 30 строк в котором проверка. Естественно если больше 30-ти строк то те не окрашиваются. Пробовал через цикл но тогда он окрашивает все строки в один цвет в зависимости от последней строки. В дальнейшем мне понадобится параметры [2], [3] и далее и тут нужно решение. Как сделать это правильно через цикл или подскажите иное решение.
waka2ebawer вне форума Ответить с цитированием
Старый 11.07.2013, 23:22   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Не надо цикл, обрабатывай DrawItem у ListBox'a. В параметре Index указывается строчка, которая отрисовывается. Извлекаешь текст, ищешь (pos или copy с конца) [0] или [1]. В зависимости от найденного окрашиваешь строку.
eoln вне форума Ответить с цитированием
Старый 11.07.2013, 23:28   #3
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию

проблема решена
Код:
procedure TForm1.lst1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
 text,str,a:string;
  begin
   with (Control as TListBox).Canvas do
    begin a:='[1]'; 
    text:=lst1.Items.Strings[Index];
    while pos('[',text)<>0 do begin str:=copy(text,pos('[',text),pos(']',text)); delete(text,1,pos(']',text));
    if Pos('[', str)>0 then 
    str:= Copy(str, 1, Pos(']', str));
    if str=a then begin 
    Font.Color:=clWhite; Brush.Color:=clGreen;
    end else begin
    Font.Color:=clWhite; Brush.Color:=clRed;
   end;end;
  FillRect(Rect);
TextOut(Rect.Left,Rect.Top,(Control as TListBox).Items[index]);
end;
end;
waka2ebawer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчитать функцию y(х) в зависимости от введенного параметра А gessi Компоненты Delphi 6 04.02.2020 21:34
Цвет заливки ячейки в зависимости от значений RGB nikcher Microsoft Office Excel 6 24.08.2016 16:52
цвет линии на Tchart в зависимости от значения SonicBob Общие вопросы Delphi 6 24.10.2011 08:44
Изменить цвет в строке ListBox Arxangelname Компоненты Delphi 2 20.09.2010 15:20
как изменять цвет ячейки в зависимости от условий ? Витёк Microsoft Office Excel 2 19.06.2007 13:10