Scalabium Software

SMExport advertising
Knowledge for your independence'.
Home Delphi and C++Builder tips


#14: How can I get a system icons?

If you want to fill in TImageList the system icon list, then you can write the next:

var FileInfo: TSHFileInfo;
begin
  {to get a small icons}
  imgListSysSmall := TImageList.Create(nil);
  with imgListSysSmall do
  begin
    Handle := SHGetFileInfo('', 0, FileInfo, SizeOf(TSHFileInfo),
      SHGFI_SMALLICON or SHGFI_SYSICONINDEX );
   ShareImages := True;
  end;

  {to get a small icons}
  imgListSysLarge := TImageList.Create(nil);
  with imgListSysLarge do
  begin
    Handle := SHGetFileInfo('', 0, FileInfo, SizeOf(TSHFileInfo),
      SHGFI_LARGEICON or SHGFI_SYSICONINDEX );
   ShareImages := True;
  end;
end;

Also if you want to get a "My Computer" icon, you must use the next
function:

var FileInfo: TSHFileInfo;
     PIDL: PItemIDList;
begin
  SHGetSpecialFolderLocation(Application.Handle, CSIDL_DRIVES, PIDL);
  if SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(TSHFileInfo),
     SHGFI_PIDL or SHGFI_SYSICONINDEX ) <> 0 then
        Result := FileInfo.iIcon;
end;

In this function you can use the constants from shlobj.pas:

  CSIDL_DESKTOP                       = $0000; 
  CSIDL_PROGRAMS                      = $0002; 
  CSIDL_CONTROLS                      = $0003; 
  CSIDL_PRINTERS                      = $0004; 
  CSIDL_PERSONAL                      = $0005; 
  CSIDL_FAVORITES                     = $0006; 
  CSIDL_STARTUP                       = $0007; 
  CSIDL_RECENT                        = $0008; 
  CSIDL_SENDTO                        = $0009; 
  CSIDL_BITBUCKET                     = $000a; 
  CSIDL_STARTMENU                     = $000b; 
  CSIDL_DESKTOPDIRECTORY              = $0010; 
  CSIDL_DRIVES                        = $0011; 
  CSIDL_NETWORK                       = $0012; 
  CSIDL_NETHOOD                       = $0013; 
  CSIDL_FONTS                         = $0014; 
  CSIDL_TEMPLATES                     = $0015; 
  CSIDL_COMMON_STARTMENU              = $0016; 
  CSIDL_COMMON_PROGRAMS               = $0017; 
  CSIDL_COMMON_STARTUP                = $0018; 
  CSIDL_COMMON_DESKTOPDIRECTORY       = $0019; 
  CSIDL_APPDATA                       = $001A; 
  CSIDL_PRINTHOOD                     = $001B;


Published: August 16, 1999

See also
 
Metafile Convert
Viewer for MS Outlook Messages
DBISAM Viewer
Paradox to Text converter
Paradox ActiveX
ABA Picture Convert
Mail parser (ActiveX)
ABA Spreadsheet Convert
ABA Database Convert
ExcelFile Viewer
 
 


Contact to webmaster

 

Borland Software Code Gear Scalabium Delphi tips

Copyright© 1998-2022, Scalabium Software. All rights reserved.
webmaster@scalabium.com

SMExport advertising