Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизCheckListBox и перерисовка Найти похожие ветки
← →
prorok2 (2004-09-09 12:10) [0]День добрый.
Проблема вот в чем. Сформировал список в CheckListBox. Сделал в CheckListBox через одну цветные строки и если элемент выделен, то он жирным шрифтом отображается. Все это прекрасно работает.
Но когда текст не влезает в окошко и пытаюсь прокручивать с помощью горизонтальной полосы прокрутки текст в CheckListBox, то появляются какие-то серые вертикальные линии, число которых зависит от скорости прокрутки.
И между строками есть такие же серые линии. Однако если элемент списка выделен, то вокруг него это серое обрамление пропадает.
Как с этим бороться?
← →
Mim1 © (2004-09-09 19:20) [1]
> Сделал в CheckListBox через одну цветные строки
Неудивительно что никто не ответил. Пишите понятнее.
ЗЫ Сразу приведите код раскраски элементов.
← →
jack128 © (2004-09-09 19:40) [2]Ошибка в 17 строке (с)
← →
wicked © (2004-09-09 19:57) [3][1] и [2] правы...
но все таки, глядя на
> Сделал в CheckListBox через одну цветные строки и если элемент
> выделен, то он жирным шрифтом отображается
посоветую - рисовать все строки, не зависимо от того, цветная она, или нет...
← →
prorok2 (2004-09-10 09:12) [4]Вот код, раскрашивающий строки.
procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TCheckListBox).Canvas do
begin
Brush.Color:=clWhite;
if State=[odSelected] then
begin
Font.Style := [fsBold];
Font.Color := clWindowText;
end;
if State=[odSelected, odFocused] then
begin
Font.Style := [fsBold];
Font.Color := clWindowText;
end;
if (index mod 2 <> 0) then
(Control as TCheckListBox).Canvas.brush.color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, (Control as TCheckListBox).Items[Index]);
DrawFocusRect(Rect);
end;
end;
← →
BillyJeans (2004-09-10 09:54) [5]а зачем DrawFocusRect(Rect); ?
← →
TUser © (2004-09-10 10:06) [6]Я думаю, что лучше было бы покарасить все нужным цветом, а потом вызвать inherited.
← →
TUser © (2004-09-10 10:06) [7]PS. Т.е. переписать сам код прорисовки элемента.
← →
prorok2 (2004-09-10 11:35) [8]BillyJeans (10.09.04 09:54) [5]
Спасибо! Убрал DrawFocusRect(Rect); и все нормально заработало. Честно говоря, процедуру раскраски строк я писал исходя из процедуры раскраски строк в ListBox (там все без проблем работает).
← →
prorok2 (2004-09-10 11:37) [9]Но сразу же еще вопрос созрел. Как убрать обрамление серой рамочкой на текущем элементе, который выделен?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c