![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Убрать рамку при выделении Item в TListBox? [D6, WinXP]
Daniil © (2002-10-11 10:21:00)Как убрать рамку у Item при его выделении в TListBox? Цвет и др каждого элемента я меняю в OnDrawItem! А с рамкой проблемы!
Daniil (2002-10-11 11:10:00) [1]Точно, проблема решена.
Следуещее работает правильно!
if (odSelected in State) or (odFocused in State) then
begin
...
end;
Daniil (2002-10-11 11:07:00) [2]Может у него в этом случае State не только odSelected???
Пойду проверю.
Daniil (2002-10-11 10:56:00) [3]И обязательно щёлкнуть, хоть раз по ListBox
Daniil (2002-10-11 10:53:00) [4]Извеняюсь что сразу не сказал, но этот элемент надо выбирать не мышкой, а например по таймеру установкой ItemIndex. Вот тут то всё и происходит!
Skier (2002-10-11 10:45:00) [5]>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:40:00) [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:37:00) [7]>Daniil
Дай-ка свои код на OnDrawItem.
Daniil (2002-10-11 10:31:00) [8]Может я что-то не понял, но параметр State у меня объявлен без var!!!
Skier (2002-10-11 10:29:00) [9]Ага, точно убери из State - odFocused.
still (2002-10-11 10:26:00) [10]Там же, насколько я помню, можно и состояние поменять, т.е. убрать Focused
Skier (2002-10-11 10:25:00) [11]>Daniil
А что если ещё раз (так сказать перевывести) нарисовать
выделяющий прямоугольник - DrawFocusRect(...)?