Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

**Как исправить проблему с изображениями в TListView при активации свойства CheckBoxes**

Delphi , Компоненты и Классы , TListView

Как исправить проблему с изображениями в TListView при активации свойства CheckBoxes

При работе с компонентом TListView в стиле vsReport разработчики иногда сталкиваются с проблемой, когда активация свойства CheckBoxes приводит к исчезновению изображений в подэлементах списка. Основное изображение, установленное через Item.ImageIndex, остаётся видимым, в то время как подэлементы теряют свои изображения. Это происходит из-за того, что при активации чекбоксов стили LVS_EX_SUBITEMIMAGES и LVS_EX_INFOTIP отключаются в стандартном контроле TListView.

Подтверждённый ответ

Чтобы решить эту проблему, можно воспользоваться следующим workaround:

  1. Отключите свойство чекбоксов в TListView.
  2. Вставьте следующий код в вашу форму. Код протестирован в Delphi 7 и на Windows 7.
const
  LVM_FIRST = $1000;
  LVS_EX_SUBITEMIMAGES = $00000002;
  LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
  LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;

function ListView_GetExtendedListViewStyle(LVWnd: HWND): DWORD;
begin
  Result := SendMessage(LVWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
end;

function ListView_SetExtendedListViewStyle(LVWnd: HWND; ExStyle: LPARAM): DWORD;
begin
  Result := SendMessage(LVWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView1.Checks := False; // Отключаем чекбоксы в списке
  ListView_SetExtendedListViewStyle(ListView1.Handle, ListView_GetExtendedListViewStyle(ListView1.Handle) or LVS_EX_SUBITEMIMAGES); // Включаем стиль LVS_EX_SUBITEMIMAGES.
end;
  1. После применения стиля, изображения можно добавить в список. Важно отметить, что для этого потребуется ручной перерисовки элементов списка (owner-drawing), так как стандартный механизм добавления изображений через свойства ImageIndex и SubItemImages не будет работать корректно после применения стиля.

Пример итогового результата можно увидеть на изображении:

alt text

Альтернативный ответ

Если предложенный workaround не подходит, можно рассмотреть использование сторонних компонентов, таких как TMS TAdvListView, который позволяет иметь чекбоксы и изображения в подэлементах, установив свойство SubImages в True.

Этот workaround позволяет разработчикам сохранить функциональность отображения изображений в подэлементах списка TListView, даже после активации чекбоксов.

Создано по материалам из источника по ссылке.

При работе с `TListView` в стиле `vsReport` включение чекбоксов может привести к исчезновению изображений в подэлементах, что решается с помощью ручной перерисовки элементов и настройки стилей.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TListView ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 15:09:40/0.0033259391784668/0