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

Вниз

Убрать рамку при выделении 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-68685
Sabor
2002-10-09 15:48
2002.10.21
Как поменять цвет?


3-68637
Wlad Gorohov
2002-09-29 00:33
2002.10.21
Как данные из dbgrid поместить в excel для распечатки?


14-69019
dimonf
2002-09-30 11:02
2002.10.21
Объясните дурню, чем хорош Delphi6 и чем плох Delphi5?


1-68707
Term
2002-10-09 15:24
2002.10.21
Посоветуйте, как можно проверить, создана ли MDI форма или нет?


1-68710
dimonf
2002-10-08 20:41
2002.10.21
Как правильно округлить 3.0299999 в 3.03?