SystemImages i ListView

0

Witam

Zajmuję się właśnie programem do katalogowania danych.
Już prawie wszystko mam gotowe, tylko jest jeden problem.

Program ładuje z pliku liste katalogow do TreeView, a
pliki z danego katalogu do ListView - cos jak Windows'owy
explorer.

Podczas kazdego ladowania do listview na podstawie rozszerzenia
do pliku przydzielany jest obrazek. Problem w tym, że trwa
to strasznie długo! Moze ktos ma lepszy sposob?

// nieistotny kod wyciety

procedure TMainFrm.FormCreate(Sender: TObject);
begin
  // zeby w WinXP nie wyswietlaly sie czarne obszarpane obramowania ikon
  ImageList.Handle := ImageList_Create(16, 16, ILC_COLOR32 or ILC_MASK, 0, 0);
end;

function TMainFrm.GetAssociatedIcon(const AExtension: string; ASmall: Boolean): Integer;
var
  Info: TSHFileInfo;
  Flags: Cardinal;
begin
  if ASmall then
    Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES
  else
    Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;

  SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
  Result := Info.hIcon;

procedure TMainFrm.RefreshListView(FileList: TList); //lista z obiektami typu TFile - to nieistotne
var
  cFile: TFile;
  i: integer;
  Item: TListItem;
  Attrs: string;
  Icon: TIcon;
  Child: TTreeNode;
begin
// BeginUpdate i EndUpdate sa w innej procedurze!
  LV.Items.Clear;
  StatusBar.Panels[1].Text := 'Wczytywanie danych...';

  Images.ShareImages := True;

  Icon := TIcon.Create;
  for i := 0 to FileList.Count - 1 do
  begin
    cFile := TFile(FileList.Items[i]);
    Item := LV.Items.Add;
    with Item do
    begin
      Caption := cFile.FileName;
      // bez ponizszych dwoch linijek wczytywanie jest kilkanascie razy szybsze: 
      Icon.Handle := GetAssociatedIcon(ExtractFileExt(cFile.FileName), True);
      ImageIndex := Images.AddIcon(Icon);

      {...}   
    end;
  end;
  Icon.Free;
  StatusBar.Panels[1].Text := 'Gotowe';
end;
0

na delphiarea.com jest do tego komponent. baaardzo szybki polecam!!!

0

[browar]
ot o mi chodziło!

Juz myslałem, ze nikt nie poratuje...

0

spoko... jak byś mógł to jak skończysz to mi podeślij, bo mi potrzebne

0

Konkretnie to co ci potrzebne?

Napisz to prześlę

0

Tak, jeżeli to jest coś jak KatalogCD to właśnie coś mi jest potrzebne

1 użytkowników online, w tym zalogowanych: 0, gości: 1