Einzelnen Beitrag anzeigen

Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

Dynamische Form-Icons und VCL-Styles

  Alt 23. Jul 2018, 10:38
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
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat