Newsgroup: it.comp.lang.delphi
Titolo: Filtrare shelllistview

E' possibile filtrare i files visualizzati dal shelllistview? 
Altrimenti un esempio di come si estraggono le icone associate di
sistema per farmelo a mano oppure altro vanno bene lo stesso :)
Ciao
-- 
.     _  _______
  /| // /__  __/ Kirys <Remove DELTHIS from the address to reply>
 / |/ \   / /    Kirys Tech 2000: 
http://www.kt2k.com
/__|\__\ /_/ 2000

 Ciao
Prova a guardare se il codice seguente puo andarti bene, è un componente che
ha due proprietà:
FileName: Devi dargli il nome del file o del percorso
Icon: Restituisce l'icona
ciao
 unit ACFileIcon;
 interface
 uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
 type
  TACFileIcon = class(TComponent)
  private
    { Private declarations }
    F_FileName : String;
    F_Icon         : TIcon;
  protected
    { Protected declarations }
    procedure Set_FileName(Nome:String);
    Procedure Set_Icon(Ico:TIcon);
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property FileName : String Read F_FileName Write Set_FileName;
    Property Icon     : TIcon Read F_Icon Write Set_Icon;
  end;
implementation
 uses Shellapi;
procedure TACFileIcon.Set_FileName(Nome:String);
Var    SFI  : TShFileInfo;
begin
  f_filename := Nome;
  SHGetFileInfo(PChar(FileName), 0, SFI, SizeOf(SFI), SHGFI_ICON);
  If SFI.hIcon <> 0 Then F_Icon.Handle := SFI.hIcon
  Else F_Icon.Handle := 0;
end;
Procedure TACFileIcon.Set_Icon(Ico:TIcon);
begin
end;
constructor TACFileIcon.Create(AOwner: TComponent);
Begin
 inherited;
 F_Icon := TIcon.Create;
End;
destructor TACFileIcon.Destroy;
Begin
 F_Icon.Free;
 Inherited;
End;
end.
--
--------------------------------------------
Per rispondere in privato rimuovere "1975"
Assistenza Samsung: Dopo 4 mesi ancora il nulla (Anzi mi hanno rotto la
telecamera)
--------------------------------------------

 ha scritto nel messaggio
news:b2oY7.6204$SE3.2...@twister1.libero.it...


forse possono esservi utili
GRazie ad entrambi :D


E' possibile filtrare i files visualizzati dal shelllistview? 
E invece temo che per questa domanda la risposta sia negativa: avevo
visto una domanda uguale sul NG americano e non č giunta risposta :-(
Certo che senza filtri č un (bel) demo ma poco utile all'atto
pratico....
Simone
_______________________________________________________
 All resistance is futile ! Prepare to be assimilated !

"Simone Murdock" ha scritto nel messaggio
| >E' possibile filtrare i files visualizzati dal shelllistview?
|
| E invece temo che per questa domanda la risposta sia negativa: avevo
| visto una domanda uguale sul NG americano e non č giunta risposta :-(
| Certo che senza filtri č un (bel) demo ma poco utile all'atto
| pratico....
|
Per filtrare una shelllistview bisogna gestire l'evento OnAddFolder.
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
Const
  DaFiltrare : String = '.pas';
var
  NomeFile: string;
begin
  // AFolder e' una cartella
  if AFolder.IsFolder then
    CanAdd := True
  else
  // E' un file
  begin
    CanAdd := False;
    NomeFile := LowerCase(ExtractFileExt(AFolder.PathName));
    if Pos(DaFiltrare, NomeFile) <> 0 then
        begin
          CanAdd := True;
          Exit;
        end;
  end;
end;
--
Ciao.
ACSH
[D4]
---------------------------
Chi fa da se'
fatica il doppio

Per filtrare una shelllistview bisogna gestire l'evento OnAddFolder.
Se funziona (e non ho motivo di dubitarne, ma al momento sono impegnato
col lavoro e quindi proverò fra qualche giorno... :-( )  ti lavo la
macchina, riordino i CD, sposo l'eventuale sorella/cugina/zia brutta che
in famiglia non riuscite a maritare...  :-)


Per filtrare una shelllistview bisogna gestire l'evento OnAddFolder.
[mega-cut]
GRANDE! 
Funziona!  :-)
Ciao
