Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизListBox Найти похожие ветки
← →
Лана Розанова (2003-11-26 20:38) [0]Возможно ли как-то подсветить строчку или фон в ListBox, к примеру красным цветом?
СПАСИБО!!!
← →
Лана Розанова (2003-11-26 20:46) [1]Простите, я напутала. Не ListBox, а ListView.
← →
SancheS (2003-11-26 21:43) [2]Через событие TListView.DrawItem
← →
Лана Розанова (2003-11-27 00:34) [3]А где там указать про цвет!? Я не нашла.
← →
Лана Розанова (2003-11-27 00:45) [4]Получается только все в красный перевести.
...
List_ProdashaDrawItem(List_Prodasha,List_Prodasha.Items.Item[i],r_rect,o_owner);
...
procedure TPredProdForm.List_ProdashaDrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
Sender.Brush.Color:=clRed;
end;
← →
Dimaxx (2003-11-27 01:40) [5]Добавить к вышеуказанному примеру FillRect(Rect), а поверх вывести текст нужного цвета.
← →
Dimaxx (2003-11-27 01:42) [6]Да, забыл. Нужно проверять Item (например, индекс) на соответствие. Ну, типа, что именно тот отрисовать красным, а не все подряд.
← →
Лана Розанова (2003-11-27 21:25) [7]Что-то я совсем запуталась и ничего не получается... FillRect(Rect) как использовать, я не поняла?
← →
panov (2003-11-27 23:14) [8]Всё прекрасно описано в Help. там даже работающий пример есть.
← →
Sam Stone (2003-11-27 23:35) [9]Хм, у меня подобная проблема была. Я в customdraw смотрел, нужно ли этот элемент выделять, если да - менял цвет. Только вот какой гемор получился: ListView жутко моргал :( Как этого избежать?
2Лана Розанова
что-то типа этого:
if <Условие(например, выбор по ноиеру итема)> then
ListView.color:=<Каким цветом написать>
else
ListView.color:=<Дефолтовый цвет>;
← →
Лана Розанова (2003-12-02 09:22) [10]>panov
Можно было бы и вырезать пример, если вы его нашли.
← →
Семен Сорокин (2003-12-02 09:44) [11]Sam Stone © (27.11.03 23:35) [9]
ListView жутко моргал :( Как этого избежать?
не присваивать ListView.color в onDraw т.к. это вызывет перерисовку (получается бесконечная рекурсия)
← →
Семен Сорокин (2003-12-02 09:46) [12]2Лана Розанова ©
List_ProdashaDrawItem(List_Prodasha,List_Prodasha.Items.Item[i],r_rect,o_owner);
...
procedure TPredProdForm.List_ProdashaDrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if Item.Caption = "111" then // надо добавить условие закраски
Sender.Brush.Color:=clRed
end;
← →
Лана Розанова (2003-12-02 11:09) [13]>Семен Сорокин
Я добавляю три строки. Каптион 2-й строки равен 111. При окончании прорисовки весь ListView окрашивается в красный цвет. А нужна только одна строка. СПАСИБО!!!
← →
Silver Alex (2003-12-02 11:22) [14]вообще-то Семен Сорокин все верно написал, но можно попробовать тоже самое только на событие OnCustomDrawItem, а лучше бы глянуть код
← →
Лана Розанова (2003-12-02 11:31) [15]Я попробую компонент ColorGrid, в кладовке нашла. Надоело с List-ом возиться...
← →
panov (2003-12-02 11:55) [16]
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Item.Caption="111" then
begin
DefaultDraw := True;
Sender.Canvas.Font.Color := clRed;
end;
end;
← →
Лана Розанова (2003-12-02 13:08) [17]Здорово получилось. Но это только цвет текста. А background строчки никак нельзя? Спасибо.
← →
panov (2003-12-02 13:25) [18]Добавь
Sender.Canvas.brush.Color := clBlue;
← →
Silver Alex (2003-12-02 13:51) [19]
> panov ©
> DefaultDraw := True;
по умолчанию DefaultDraw равен True ?
← →
Лана Розанова (2003-12-02 14:25) [20]Огромное спасибо. То что нужно. Все, ветка сворачивается...
← →
panov (2003-12-02 16:01) [21]>Silver Alex © (02.12.03 13:51) [19]
да, поумолчаню DefaultDraw - True;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c