Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];

Вниз

Убрать рамку при выделении Item в TListBox?   Найти похожие ветки 

 
Daniil   (2002-10-11 10:21) [0]

Как убрать рамку у Item при его выделении в TListBox? Цвет и др каждого элемента я меняю в OnDrawItem! А с рамкой проблемы!


 
Skier   (2002-10-11 10:25) [1]

>Daniil
А что если ещё раз (так сказать перевывести) нарисовать
выделяющий прямоугольник - DrawFocusRect(...)?


 
still   (2002-10-11 10:26) [2]

Там же, насколько я помню, можно и состояние поменять, т.е. убрать Focused


 
Skier   (2002-10-11 10:29) [3]

Ага, точно убери из State - odFocused.


 
Daniil   (2002-10-11 10:31) [4]

Может я что-то не понял, но параметр State у меня объявлен без var!!!


 
Skier   (2002-10-11 10:37) [5]

>Daniil
Дай-ка свои код на OnDrawItem.


 
Daniil   (2002-10-11 10:40) [6]

procedure TfrTestLists.lbLeftDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Offset: Integer;
ListBox: TTntListBox;
begin
ListBox := Control as TTntListBox;
with ListBox.Canvas do
begin
Brush.Style := bsSolid;
FillRect(Rect);
if odSelected in State then
begin
Brush.Color := clWhite;
Font.Color := clBlack;
Font.Style := [fsBold];
Font.Size := 9;
Brush.Style := bsSolid;
FillRect(Rect);
Brush.Style := bsClear;
FillRect(Rect);
end;
Offset := 6;
Rect.Left := Rect.Left + Offset;
WideCanvasTextOut(ListBox.Canvas,Rect.Left,Rect.Top,ListBox.Items[Index]);
end;
end;


 
Skier   (2002-10-11 10:45) [7]

>Daniil
Если вот так, то рамка не рисуется:


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Offset: Integer;
begin
with TListBox(Control).Canvas do
begin
Brush.Style := bsSolid;
FillRect(Rect);
if odSelected in State then
begin
Brush.Color := clWhite;
Font.Color := clBlack;
Font.Style := [fsBold];
Font.Size := 9;
Brush.Style := bsSolid;
FillRect(Rect);
Brush.Style := bsClear;
FillRect(Rect);
end;
Offset := 6;
Rect.Left := Rect.Left + Offset;
TextOut(Rect.Left,Rect.Top,TListBox(Control).Items[Index]);
end;
end;


Или под рамкой ты что-то другое имел ввиду ?


 
Daniil   (2002-10-11 10:53) [8]

Извеняюсь что сразу не сказал, но этот элемент надо выбирать не мышкой, а например по таймеру установкой ItemIndex. Вот тут то всё и происходит!


 
Daniil   (2002-10-11 10:56) [9]

И обязательно щёлкнуть, хоть раз по ListBox


 
Daniil   (2002-10-11 11:07) [10]

Может у него в этом случае State не только odSelected???
Пойду проверю.


 
Daniil   (2002-10-11 11:10) [11]

Точно, проблема решена.
Следуещее работает правильно!

if (odSelected in State) or (odFocused in State) then
begin
...
end;



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

Форум: "Основная";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.041 c
1-68742
PETR
2002-10-11 08:33
2002.10.21
Привет Народ !


1-68791
b_baranov
2002-10-09 20:02
2002.10.21
Как установить фокус на программно-созданном элементе ?


4-69092
SPeller
2002-09-04 04:42
2002.10.21
Color Mapping


14-68963
Igor_thief
2002-09-28 12:38
2002.10.21
CheckBox


6-68897
Алькатрас
2002-08-17 19:00
2002.10.21
Как прочитать настройки по умолчанию прокси-сервера в IE ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский