Der Form ist aber kein Icon zugewiesen?
Wenn doch, dann überdeckt sie ja das Application.Icon.
Mal versuchen das Icon in die Form der laden?
Der Code liegt aber nicht in einem
Package oder
DLL?
HInstance ist das
Handle des Moduls (EXE/
DLL/
BPL), in welchem der Code liegt.
MainInstance ist immer das der EXE, aber auch 0 entspricht der EXE.
Delphi selbst lädt so das Icon ins Application, beim Programmstart (TApplication.Create).
Application.Icon.Handle := LoadIcon(MainInstance, 'MAINICON');
Und falls bei Abfrage in Application und Form kein Icon-
Handle vorhanden ist, dann wird dort via
LoadIcon(0, IDI_APPLICATION)
versucht Eines zu laden, aber das dürfte vom Ergebnis her dem Ersten entsprechen.
Versuch es mal so
Delphi-Quellcode:
NewIcon.LoadFromResourceName(HInstance, AResName);
Application.Icon := NewIcon; // macht aber intern eigentlich auch nur ein Assign
NewIcon.Free;
// oder
Application.Icon.LoadFromResourceName(HInstance, AResName);
// oder
var Stream := TResourceStream.Create(HInstance, AResName, RT_ICON);
Application.Icon.LoadFromStream(Stream);
Stream.Free;
aber ich hätte jetzt keinen Unterschied erwartet, egal ob es über das
Handle oder direkt in die
VCL-Komponente geladen oder über ein zusätzliches TIcon übergeben wird.