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

Как добавлять в ListView полноцветные иконки?

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

Code:
procedure TForm1.FormCreate(Sender: TObject);
var
SysIL   : THandle;
SysSIL  : THandle;
SFI     : TSHFileInfo;
begin
SysImageList1 := TImageList.Create(self);
with SysImageList1 do begin
     Width  := 16;
     Height := 16;
     SysSIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI),
       SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
     if SysSIL <> 0 then begin
       SysImageList1.Handle := SysSIL;
       ShareImages := True;
     end;
   end;
SysImageList2 := TImageList.Create(self);
with SysImageList2 do begin
     Width := 32;
     Height := 32;
     SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI),
       SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
     if SysIL <> 0 then begin
       SysImageList2.Handle := SysIL;
       ShareImages := True;
     end;
   end;
end;
 
function GetIconIndex(const AFile: string; Attrs: DWORD): integer;
var
SFI: TSHFileInfo;
begin
SHGetFileInfo(PChar(AFile), Attrs, SFI, SizeOf(TSHFileInfo),
   SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);
Result := SFI.iIcon;
end;
....
with ListView.Items.Add do begin
Caption := FName;
ImageIndex := GetIconIndex(Caption, FILE_ATTRIBUTE_NORMAL);
SubItems.Add(FSize); 
SubItems.Add(FType);
SubItems.Add(FDateTime);
end;
Взято из http://forum.sources.ru

Автор: alexanderm

Добавление цветных иконок в ListView можно выполнить с помощью компонента TImageList и присвоения его ListView' LargeImages или SmallImages свойству.

Сначала создайте новый компонент TImageList на вашем форме и установите свойство ImageCount в количество изображений, которое вы хотите отобразить. Затем загрузите свои иконки в список изображений с помощью метода Add.

Например:

imageList1 := TImageList.Create(self);
imageList1.ImageCount := 16;
for i := 0 to 15 do begin
  imageList1.Add(Bitmap.FromFile('path_to_icon_' + IntToStr(i) + '.bmp'));
end;

Затем присвойте список изображений свойству LargeImages или SmallImages ListView.

ListView1.LargeImages := imageList1;

Теперь вы можете установить свойство ImageIndex ListViewItem в индекс иконки в списке изображений. Например:

with ListView1.Items.Add do begin
  Caption := 'FName';
  ImageIndex := 0; // Присвойте первую иконку из списка изображений
  SubItems.Add(FSize); 
  SubItems.Add(FType);
  SubItems.Add(FDateTime);
end;

Контроль ListView не поддерживает отображение иконок с разными цветами. Однако, вы можете использовать комбинацию изображения и текста для отображения информационных данных.

Например, вы можете загрузить иконку в свойство LargeImages или SmallImages ListView, а затем установить свойство ImageIndex ListViewItem в индекс этой иконки. В этом случае каждое ListViewItem будет иметь свою уникальную иконку.

Вот пример, как это можно сделать:

imageList1 := TImageList.Create(self);
for i := 0 to 15 do begin
  imageList1.Add(Bitmap.FromFile('path_to_icon_' + IntToStr(i) + '.bmp'));
end;
ListView1.LargeImages := imageList1;
with ListView1.Items.Add do begin
  Caption := 'FName';
  ImageIndex := i; // Присвойте иконку под индексом i из списка изображений
  SubItems.Add(FSize); 
  SubItems.Add(FType);
  SubItems.Add(FDateTime);
end;

Не забудьте заменить 'path_to_icon_'+IntToStr(i)+'.bmp' на ваш реальный путь к файлу иконки.

Добавить в ListView полноцветные иконки можно с помощью вызова функции SHGetFileInfo, которая возвращает handle на системную иконку для файла, а затем использовать полученный handle как ImageIndex для элемента ListViewItem.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 10:56:01/0.0061049461364746/0