Главная страница
    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.46 MB
Время: 0.009 c
1-68808
atmospheric
2002-10-10 00:16
2002.10.21
Выключение windows 2000


1-68866
ir_bit
2002-10-10 08:47
2002.10.21
System.pas никак не изменить ?


14-68960
Эрик
2002-09-28 09:41
2002.10.21
Как переименовать компонент?


14-68924
DeMoN-777
2002-09-20 13:29
2002.10.21
Мне лично, это это интересно


14-68969
Rouse_
2002-09-28 23:43
2002.10.21
Почему при наведении на мой ник ен показывается мое мыло





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