Einzelnen Beitrag anzeigen

Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: FilterComboBox und ShellListView kombinieren

  Alt 27. Jan 2004, 17:31
Achso, ja die Icons ^^

Also du machst dir ne Variable in den public Bereich deines Forms vom Typ TImageList.
Im OnCreate deines Forms schreibst du dann:

Delphi-Quellcode:
var
  SHFileInfo: TSHFileInfo;
  SysIcons: THandle;
begin
  // ...
  GlobalImageList := TImageList.Create(MainForm);
  // oder halt andere ImageList
  try
    SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo,
      SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
      SHGFI_ICON);
  finally
    DestroyIcon(SHFileInfo.hIcon);
  end;
  ListView.ViewStyle := vsReport;
  ListView1.SmallImages := GlobalImageList;
Die Prozedur ist auch noch hilfreich:
Delphi-Quellcode:
function GetAssociatedIcon(const AExtension: string; ASmall: Boolean): HIcon;
var
  Info: TSHFileInfo;
  Flags: Cardinal;
begin
  if ASmall then
    Flags := SHGFI_ICON or SHGFI_SMALLICON 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;
end;
Und dann in der Prozedur, wo du die Items hinzufügst
Delphi-Quellcode:
  var
    Icon: TIcon;
  begin
    // ...
    Icon := TIcon.Create;
    try
      Icon.Handle := GetAssociatedIcon(ExtractFileExt(DateiName), True);
      Icon.Transparent := True;
      // dem Item das hinzugefügt wurde zuweisen:
      // Item hinzufügen...
      Item.ImageIndex := GlobalImageList.AddIcon(Icon);
    finally
      Icon.Free;
    end;
    // ...
  end;
Schreib es dir nach belieben um ^^

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat