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
 
SMImport suite
SMReport
DBISAM Password Recovery
Protected Storage Viewer
Excel Reader (dll)
Excel Web-stream
SMExport suite
MAPIMail
Clarion Viewer
Clarion to Text converter
 
 


Contact to webmaster

 

Borland Software Code Gear Scalabium Delphi tips

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

SMExport advertising