Zdravim,
jak jsem psal v predchazejicim vlakne, zalozil jsem tohle nove pro jednak lepsi prehled a druhak kvuli presnejsimu nazvu.
Problem ovsem zustava.
Jak psal zlz:
A zkoušel jsi číst dokumentaci?
TListView.LargeImages obsahuje obrázky. Ty v něm máš načtené systémové ikony.
TListItem.ImageIndex určuje index obrázku ^^. Ty ho nastavuješ na index systémové ikony.
Jestli chceš zobrazovat náhledy, tak si místo ikon načti ty náhledy a nastav odpovídající index. Na získání náhledů zase můžeš použít funkce shellu, konkrétně to umí třeba IExtractImage interface, nebo funkce Delphi (TBitmap?).
koukal jsem se na ty stranky a ac to vypada vsechno jednoduse, tak vlastni zapis jsem do kupy nedal.
zkousel jsem hledat i kody pro Delphi,kde by bylo obsazeno IExtractImage, ale taky marne.
Mam tedy tenhle kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, ShellAPI, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ImgList, StdCtrls;
type
TForm1 = class(TForm)
DirEdit: TEdit;
ShowBtn: TButton;
LargeFileImages: TImageList;
FileView: TListView;
procedure ShowBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SFI: TSHFileInfo;
implementation
{$R *.dfm}
procedure TForm1.ShowBtnClick(Sender: TObject);
var
Found: Integer;
SearchRec: TSearchRec;
begin
// odstraníme všechny položky
FileView.Items.Clear;
// zahájíme hledání
Found := FindFirst(DirEdit.Text + '\*.jpg', faAnyFile - faVolumeID, SearchRec);
// opakujeme, dokud existují vyhovující soubory
while Found = 0 do
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
with FileView.Items.Add do // přidíme položku
begin
SHGetFileInfo(
PChar(DirEdit.Text + '\' + SearchRec.Name), // cesta k souboru
0, // atributy - žádné
SFI, SizeOf(SFI), // struktura TSHFileInfo
// vlajky: chceme získat index velké ikony a jméno souboru
SHGFI_SYSICONINDEX + SHGFI_LARGEICON + SHGFI_DISPLAYNAME
);
Caption := SFI.szDisplayName; // nastavíme název
ImageIndex := SFI.iIcon; // a index ikony
end;
Found := FindNext(SearchRec);
end;
// konec hledání
FindClose(SearchRec);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LargeFileImages.Handle := SHGetFileInfo(
PChar(Application.ExeName), // jelikož nám jde o handle ImageListu,
0, // můžeme použít libovolný soubor - třeba
SFI, SizeOf(SFI), // "exáč" aplikace
SHGFI_SYSICONINDEX + SHGFI_LARGEICON
);
end;
end.
a chtel bych Vas poprosit, pokud by jste mi pomohli ho predelat tak jak pise zlz pomoci IExtractImage tak aby se mi misto ikon zobrazovaly ty nahledy fotek.jpg.
Co smazat uz zhruba vim, ale nevim, co vepsat misto toho.
Nebo aspon odkaz na nejakej kod, kde se IExtractImage pouziva, me se nepodarilo nic najit.
Predem dekuji za trpelivost s mym nymandstvim ...