Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3
  Alt 23. Dez 2002, 16:08
Und da man die System-ImageList nicht selbst verändern soll, kann man diese in eine eigene kopieren.
Delphi-Quellcode:
procedure Createimages;
var
  SysIL : uint;
  SFI : TSHFileInfo;
  SysSmallImages, SysLargeImages: TImageList;
  i: Integer;
begin
  SysLargeImages := TImageList.Create(MainForm);
  SysSmallImages := TImageList.Create(MainForm);
  try
    SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
    if SysIL <> 0 then begin
      SysLargeImages.Handle := SysIL;
      SysLargeImages.ShareImages := TRUE;
    end;
    SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
    if SysIL <> 0 then begin
      SysSmallImages.Handle := SysIL;
      SysSmallImages.ShareImages := TRUE;
    end;

    for i := MainForm.SmallImages.Count - 1 downto 2 {Anzahl der verbleibenden Images} do
      MainForm.SmallImages.Delete(i);
    MainForm.SmallImages.AddImages(SysSmallImages);

    for i := MainForm.LargeImages.Count - 1 downto 2 {Anzahl der verbleibenden Images} do
      MainForm.LargeImages.Delete(i);
    MainForm.LargeImages.AddImages(SysLargeImages);
  finally
    SysLargeImages.Free; // wird nicht mehr benötigt
    SysSmallImages.Free; // wird nicht mehr benötigt
  end;
end;
Bei diesem Code gehe ich davon aus, das zwei TImageList Komponenten SmallImages und LargeImages auf dem Formular liegen und mit der ListView verknüpft sind.

Und beim Hinzufügen der ListItems müssen die festen Images natürlich berücksichtigt werden:
NewItem.ImageIndex := Info.IIcon + 2 {Anzahl der festen Images};
  Mit Zitat antworten Zitat