MoinMoin,
das wird jetzt mehr eine Problembeschreibung sammt Workaround
Problem:
Ich wollte dynmisch (zur Laufzeit) einem Formular ein eigenes Icon zuweisen.
Delphi-Quellcode:
procdure TForm1.FormCreate(sender:TObject);
begin
form1.LoadFromResource(.....
end;
Funktionierte soweit auch, bis ich die
VCL-Styles aktiviert hab. Schwub, das Icon wurde
durch das Programm-Icon ersetzt.
Nachdem ich da etwas nachgeforscht hatte, fand ich heraus, das das Problem in der
VCL.Forms liegt.
Der dortige TFormStyleHook ignoriert schlicht das eigene Icon.
Workaround:
Eigentlich ganz einfach. Im Formular die WM_GETICON-Message abfangen, und das richtige Icon zurückliefern:
Delphi-Quellcode:
Interface
Type
TForm1 = Class(TForm)
:
Procedure WMGetIcon(var msg : TMessage); message WM_GETICON;
:
Implementation
:
procedure TForm1.WMGetIcon(var msg: TMessage);
begin
msg.Result := Icon.Handle;
end;
Um das ganze perfekt zu hand haben, sollte man noch die Parameter auswerten.
(siehe
https://docs.microsoft.com/de-de/win...msg/wm-geticon
Sollte also noch jemand das Problem haben, hier gibts zumindest einen Workaround