Autor Beitrag
NOS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 2

Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 19.4 - Sydney
BeitragVerfasst: Mi 23.07.08 22:26 
Hallo zusammen,

ich nutze folgenden Code um die SystemImageList zu erhalten und diese dann für einen Listview zu nutzen ... leider habe ich nach dem call in der ImageList nur 5 Icons und ich finde das Problem nicht wirklich ... ich hoffe Ihr könnt mir da helfen ... ich nutze D2007 Pro auf einem Vista System

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TfrmInstantCRM.GetSmallSystemIcons;
var
 SysIL: HImageList;
 SFI: TSHFileInfo;
begin
 if ilFiles <> nil then ilFiles.Free;
 ilFiles := TImageList.Create(Application);
 SysIL := SHGetFileInfo(''0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
 if SysIL <> 0 then
  begin
   if ilFiles.HandleAllocated then ilFiles.Handle := 0;
   ilFiles.Masked := true;
   ilFiles.BkColor := TColor(clNone);
   ilFiles.DrawingStyle := dsTransparent;
   ilFiles.Handle := SysIL;
   ilFiles.ShareImages := true;
  end;
end;


die ilFIles ist auf dem Form gedroppt als TImageList ...

Ich habe gegoogelt und hin und her gesucht ... die routine scheint so wirklich ok zu sein ... habt Ihr eine Idee woran es liegen kann ?

_________________
Ich liebe es wenn ein Plan funktioniert ! Aber teilweise sind es die Pläne der Anderen, die besser funktionieren :-)
NOS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 2

Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 19.4 - Sydney
BeitragVerfasst: Sa 26.07.08 21:05 
user profile iconNOS hat folgendes geschrieben:
Hallo zusammen,

ich nutze folgenden Code um die SystemImageList zu erhalten und diese dann für einen Listview zu nutzen ... leider habe ich nach dem call in der ImageList nur 5 Icons und ich finde das Problem nicht wirklich ... ich hoffe Ihr könnt mir da helfen ... ich nutze D2007 Pro auf einem Vista System

die ilFIles ist auf dem Form gedroppt als TImageList ...

Ich habe gegoogelt und hin und her gesucht ... die routine scheint so wirklich ok zu sein ... habt Ihr eine Idee woran es liegen kann ?



So ...

nach langem hin und her habe ich das Problem gelöst ... scheinbar ist es so das es unter XP und davor problemslos war die SystemImageList wie ich es im COde hier geschrieben habe zuzuweisen ... unter vista gibt es allerdings eine interessante lösung ... wie ich las ist die systemimageliste undter vista dynamisch ... ich weis allergins nicht ob dem auch unter XP so war ... auf jeden fall geht es nun folgendermassen ....

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TfrmInstantCRM.GetSmallSystemIcons;
var
  SysIL : HImageList;
  SFI : TSHFileInfo;
begin
  { Get the List of small ShellIcons }
  SysIL := SHGetFileInfo(''0, SFI, SizeOf(SFI),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
  if SysIL <> 0 then
  begin
    { Assign system image liste to viewer }
    lvKundenDokumente.SmallImages.Handle := SysIL;
    lvKundenDokumente.SmallImages.Width := 16;
    lvKundenDokumente.SmallImages.Height := 16;
    lvKundenDokumente.SmallImages.ShareImages := True;
  end;
end;


Nun allerdings eine andere Frage ... es funktioniert prächtig ... aber wie bekomme ich das richtige icon eines folders ?
NOS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 2

Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 19.4 - Sydney
BeitragVerfasst: Sa 26.07.08 21:28 
user profile iconNOS hat folgendes geschrieben:
Hallo zusammen,

ich nutze folgenden Code um die SystemImageList zu erhalten und diese dann für einen Listview zu nutzen ... leider habe ich nach dem call in der ImageList nur 5 Icons und ich finde das Problem nicht wirklich ... ich hoffe Ihr könnt mir da helfen ... ich nutze D2007 Pro auf einem Vista System

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TfrmInstantCRM.GetSmallSystemIcons;
var
 SysIL: HImageList;
 SFI: TSHFileInfo;
begin
 if ilFiles <> nil then ilFiles.Free;
 ilFiles := TImageList.Create(Application);
 SysIL := SHGetFileInfo(''0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
 if SysIL <> 0 then
  begin
   if ilFiles.HandleAllocated then ilFiles.Handle := 0;
   ilFiles.Masked := true;
   ilFiles.BkColor := TColor(clNone);
   ilFiles.DrawingStyle := dsTransparent;
   ilFiles.Handle := SysIL;
   ilFiles.ShareImages := true;
  end;
end;


die ilFIles ist auf dem Form gedroppt als TImageList ...

Ich habe gegoogelt und hin und her gesucht ... die routine scheint so wirklich ok zu sein ... habt Ihr eine Idee woran es liegen kann ?


So ...

auch das habe ich erledigt .... eine zweite routine um den iconindex eines folders zu erhalten und schongings ...

Thats it ....