Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1093606871
Aleksandr.
2004-08-27 15:41
2004.09.26
Как совместить сессию и TDataBase потока с bdeAPI?


4-1092644424
Dmitry_K
2004-08-16 12:20
2004.09.26
GetSaveFileName


14-1094465615
SammIk
2004-09-06 14:13
2004.09.26
Какая-то странныя картинка в правом верхнем углу.


3-1093604207
Dima
2004-08-27 14:56
2004.09.26
проблема с dbExpress и Oracle


3-1093463113
S@shka
2004-08-25 23:45
2004.09.26
Объсните разницу триггеров Before и After





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский