Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Окрасить строку LIstBox другим цветом

14K
17 июня 2008 года
Дрон
37 / / 29.06.2007
Здрастувуте подскажите пожалуйста как можно пометить стрку в LIstBox др. цветом?

Зарание благодарен!!!
6
17 июня 2008 года
George
4.1K / / 05.01.2007
легко.
1. Значение св-ва Style у ListBox'a измени на FixedOwnerDraw
2. В событии ListBox'a OnDrawItem пропиши это:
[highlight=delphi]
with TListbox(Control).Canvas do begin
Brush.Color:=<нужный цвет>;
FillRect(Rect);
TextOut(Rect.Left+2, Rect.Top, TListbox(Control).Items[Index]);
end;
[/highlight]
14K
17 июня 2008 года
Дрон
37 / / 29.06.2007
Спасибо, но немножко нет...

У меня в ListBox постояно идёт запись, проверяются значения и мне необходимо при не совпадении закрасить данную строку...

Возможно ли это? подскажите как?

Код:
flag:=0;
 y3:=StrToInt(Table1.Fields.Fields[0].AsString);
 y4:=StrToInt(Table1.Fields.Fields[3].AsString);
 IF (y4<dan[y3,1])and(dan[y3,1]<>0) then flag:=1;
 IF (y4>dan[y3,2])and(dan[y3,2]<>0) then flag:=2;
 If flag>0 then
    begin
     case flag of
      1:Label1.Caption:='Вывожу сообшение №1'+IntToStr(y3)+'!!!';
      2:Label1.Caption:='Вывожу сообшение №2'+IntToStr(y3)+'!!!';
     end;
    end;
Table1.Next;
ListBox1.Items.Add('вывожу здесь все значения');
6
17 июня 2008 года
George
4.1K / / 05.01.2007
я делал так - флаг писал в начало строки, при прорисовке проверял его и вырезал.
[highlight=delphi]
with TListbox(Control).Canvas do begin
len := length(TListbox(Control).Items[Index]);
flag := copy(TListbox(Control).Items[Index],1,1);
case flag of
'1': Brush.Color := <нужный цвет>;
'2': Brush.Color := <нужный цвет>;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, copy(TListbox(Control).Items[Index]), 2, len - 1);
end;
[/highlight]
Возможно метод индейский, но у меня работал исправно. Возьми идею и переделай под свои нужды.
303
17 июня 2008 года
makbeth
1.0K / / 25.11.2004
А зачем портить исходные данные, когда каждый элемент ListBox имеет дополнительное свойство для данных (TListBox.Items.Objects[Index])? ИМХО, самый нормальный вариант - под флаги состояний использовать именно его ;) .
6
18 июня 2008 года
George
4.1K / / 05.01.2007
Можно и так. Видимо это будет то же самое, но не по индейски ;)
14K
18 июня 2008 года
Дрон
37 / / 29.06.2007
makbeth если не составит труда напиши рабочий код плз.

в любом случае спасибо!!!
303
18 июня 2008 года
makbeth
1.0K / / 25.11.2004
Ok. Код на примере твоего и Washington должен быть примерно таким:
Код:
begin
    // ...
    flag:=0;
    y3:=StrToInt(Table1.Fields.Fields[0].AsString);
    y4:=StrToInt(Table1.Fields.Fields[3].AsString);
    if (y4 < dan[y3, 1]) and (dan[y3, 1] <> 0) then flag:=1;
    if (y4 > dan[y3, 2]) and (dan[y3, 2] <> 0) then flag:=2;
    ListBox1.AddItem(value, TObject(flag)); // value - значение элемента в TListBox
    Table1.Next;
    // ...
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
    Rect: TRect; State: TOwnerDrawState);
begin
    with Control as TListBox do
    begin
        case Integer(Items.Objects[Index]) of
            1: Brush.Color:=<нужный цвет>;
            2: Brush.Color:=<нужный цвет>;
        end;
        Canvas.FillRect(Rect);
        Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
    end;
end;
14K
19 июня 2008 года
Дрон
37 / / 29.06.2007
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index], 2, len - 1);

пишит что не найден идентификатор 'Items'
если описываю как Integer пишит: Array type required

и ешё вопросик: Что есть ...,2, len-1);? если можно распишите что указывают эти значения. И переменая len чему здась равна?
в приведёном коде нету ни кого присваения этой переной

Заранее спасибо.
303
19 июня 2008 года
makbeth
1.0K / / 25.11.2004
Упс!... Ступил :) Подправил код в своем предыдущем посте ;)
14K
19 июня 2008 года
Дрон
37 / / 29.06.2007
makbeth и Washington Огромнейшее спасибо, как раз то что мне надо!!:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог