Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

ListBox -> items -> font-> color   Найти похожие ветки 

 
XenonXX ©   (2003-10-12 02:13) [0]

Как можно сделать так, чтоб шрифт некоторых строчек в listbox был другого цвета? Помогите плз, очень надо.


 
Palladin ©   (2003-10-12 02:20) [1]

TListBox.OnDrawItem + F1

вверху есть надпись Example и на нее можно нажать


 
XenonXX ©   (2003-10-12 03:34) [2]

Спасибо. Но это сработает, если только при записывании менять, а мне надо не перерисовывая(как выделение для плейлиста как в винампе), или так нельзя?


 
romeo ©   (2003-10-12 05:46) [3]

Попробуй, коряво, но вроде работает...
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
Loop: Integer;
begin
for Loop := 0 to ListBox1.Items.Count - 1 do begin
if ListBox1.Selected[Loop] //или другое условие
then begin
ListBox1.Canvas.Brush.Color := ListBox1.Color;
ListBox1.Canvas.FillRect(ListBox1.ItemRect(Loop));
ListBox1.Canvas.Font.Style := ListBox1.Canvas.Font.Style + [fsBold];
ListBox1.Canvas.Font.Color := clBlue;
ListBox1.Canvas.TextOut(2, ListBox1.ItemRect(Loop).Top + 2, ListBox1.Items[Loop]);
end
else begin
ListBox1.Canvas.Brush.Color := ListBox1.Color;
ListBox1.Canvas.FillRect(ListBox1.ItemRect(Loop));
ListBox1.Canvas.Font.Style := ListBox1.Canvas.Font.Style - [fsBold];
ListBox1.Canvas.Font.Color := ListBox1.Font.Color;
ListBox1.Canvas.TextOut(2, ListBox1.ItemRect(Loop).Top + 2, ListBox1.Items[Loop]);
end;
end;
end;


P.S. При прямом использовании вместо цикла праметра "index", у меня почему-то не происходило обновления уже не выделенных строк,
а если свернуть-развернуть форму - перерисовывалось как надо. То ли в Делфи глюк, то ли мне уже надо спать...


 
XenonXX ©   (2003-10-13 08:15) [4]

Аригато, поразбираюсь...


 
KSergey ©   (2003-10-13 08:37) [5]

[2] XenonXX © (12.10.03 03:34)
Спасибо. Но это сработает, если только при записывании менять, а мне надо не перерисовывая(как выделение для плейлиста как в винампе), или так нельзя?


Что значит при записывании??
В виндах есть такой порядок: есть место в коде, где заполняем данные (или меняем их) и есть место, где это все отрисовывается.
Т.е. если необходимо что-то поменять (на экране), то сначала меняем соотв. данные (флажки в данном случае, а потом просто "просьм" элемент перерисоваться (что-то из серии Redraw, Invalidate и т.д., они по-разному работают, разберись).
Так вот об этом и речь: в OnDrawItem идет именно отрисовка (элемента). Т.е. надо просто поменять данные, на основе которых будем менять цвет, и послать команду на перерисовку - вот и все.
Ну а перво-наперво придумать, где же эти данные хранить ;)


 
XenonXX ©   (2003-10-13 08:39) [6]

У меня цвет меняет, но вот почему-то выделение(то, что мышкой для selected) не работает - не могу выбрать даже одного, не то что мульти... Не знаете как лечить?


 
KSergey ©   (2003-10-13 08:59) [7]

Выбрать или подсветить выбранное? Это разные вещи ;)
Советую обратить внимание на параметр State обработчика ListBox1DrawItem


 
XenonXX ©   (2003-10-14 06:48) [8]

Все, всем спасибо, привожу код, для всех кто сюда еще зайдет:
[code]
procedure TForm2.ListBox2DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
i: Integer;
t:boolean;
begin
if odSelected in State then//знаю, что бред, но без этого не работает:)
ListBox2.Brush.Color:=form2.ListBox2.Color else
form2.ListBox2.Canvas.Brush.Color := form2.ListBox2.Color;
if PlayingFileName=form2.ListBox1.Items.Strings[Index]// умова выделения
then begin
form2.ListBox2.Canvas.FillRect(Rect);
form2.ListBox2.Canvas.Font.Color := clRed;
form2.ListBox2.Canvas.TextOut(2, Rect.Top + 2, form2.ListBox2.Items[Index]);
end
else begin
form2.ListBox2.Canvas.FillRect(Rect);
if odSelected in State then form2.ListBox2.Canvas.Font.Color := clWhite
else
form2.ListBox2.Canvas.Font.Color := form2.ListBox2.Font.Color;
form2.ListBox2.Canvas.TextOut(2, Rect.Top + 2, form2.ListBox2.Items[Index]);
end;
end;[/code]



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
1-89304
AntiFriz
2003-10-11 17:19
2003.10.27
Paint:


1-89331
Vad_VAD
2003-10-16 15:50
2003.10.27
TMEMO


1-89303
explorer
2003-10-10 13:40
2003.10.27
Выгрузка и загрузка формы


1-89264
$Hic0
2003-10-14 16:47
2003.10.27
Округление числа


7-89614
CrazZzy
2003-08-16 10:49
2003.10.27
Я всё про ЛПТ порт...