Autor Beitrag
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Do 10.07.03 10:44 
Hi ich habe ein Handle zu einem Icon (HIcon) mit der folgenden Funktion:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
function GetIcon(Handle : Cardinal) : HIcon;
var
  H: HIcon;
begin
  H := CopyIcon(GetClassLong(handle, GCL_HICON ));
  result := h;
end;

Jetzt möchte ich das Icon auch zu einer ImageList hinzufügen. Doch damit habe ich so meine Probleme...
Wollte das eigentlich so machen:
ausblenden Quelltext
1:
2:
Icon.Handle := GetIcon(StrToInt(fenster[i, 0]));
ImageList1.AddIcon(Icon);

Wobei Icon natürlich vom Typ TIcon ist.
Irgendwie scheint es da aber Probleme zu geben (Es kommt ne Zugriffsverletzung)
Wie mache ich das jetzt richtig?

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Do 10.07.03 11:59 
so funktioniert es:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TFrm_IconChange.Button1Click(Sender: TObject);
var Icon    : TIcon;
    FileInf : TShFileInfo;
 begin
  Icon := TIcon.Create;
  try
   ShGetFileInfo(PChar(ParamStr(0)),0,FileInf,SizeOf(TShFileInfo),SHGFI_ICON);
   Icon.Handle := CopyIcon(FileInf.hIcon);
   if icon.Handle <> 0 then // zur Visualisierung
   begin 
    Imagelist1.AddIcon(Icon);
    imagelist1.GetIcon(0,imgico.Picture.Icon);
   end;
  finally
   Icon.free;
  end;
end;

_________________
mfg
Tana´Ri
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Do 10.07.03 12:17 
ach jetzt weiß ich was ich falsch gemacht habe...JEtzt wo ich deinen Code sehe, fällt es mir wie schuppen von den Augen...
Ich habe vergessen das TIcon zu createn....da kommt dann natürlich eine Fehlermeldung...
Danke trotzdem.
PS: Was macht dein Code eigentlich ncoh anders?

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Do 10.07.03 12:34 
Mit GetClassLong must du das Application.Handle verwenden !
GetClassLong bezieht das Handle auf die entsprechenden Klasse.

-ShGetFileInfo bezieht sich direkt auf die Exe (ParamStr(0) = application.exename)

-kein Umweg über eigene GetIcon

_________________
mfg
Tana´Ri