Подписаться на RSS рассылку
Главная » Статьи по Delphi » Компоненты » Убрать рамку выделения у ListBox

Убрать рамку выделения у ListBox

Автор: Борисов С. А.

Чтобы убрать эту пунктирную рамку придется вручную обрабатывать обновление содержимого компонента. У ListBox установите свойство Style = lbOwnerDrawVariable. Далее создаем обработчик события onDrawItem, который будет вызываться каждый раз когда происходит перерисовка содержимого.

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  // Закрашиваем место где перерисовываем
  (Control as TListBox).Canvas.FillRect(Rect);

  DrawText(
  (Control as TListBox).Canvas.Handle,
  PAnsiChar((Control as TListBox).Items[Index]),
  Length((Control as TListBox).Items[Index]),
  Rect,
  Control.DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX)
  );

  // Убираем рамку
  if odFocused in State then DrawFocusRect((Control as TListBox).Canvas.Handle, Rect);
  // Используем DrawFocusRect, который при повторном вызове убирает рамку
end;

Просмотров: 6753

Обсудить на форуме

0   Спам
(04.06.2010)
1. Сергей (Xaker)
А как можно использовать данный пример для ListView?


Имя *:
Email:


Код *:

Copyright © 2008-2016 Программирование на Delphi для начинающих и не только

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации

Хостинг от uCoz

Автор проекта: Борисов Сергей

e-mail: save-x@yandex.ru

Связь с администрацией сайта