@freimatz
Kann es sein, das du das etwas kompliziert machst? Warum kopierst du soviel herum? Wenn du ein Icon hast, dann übergibt Application die Adresse und gut ist es. Das habe ich auf die Schnelle gemacht. Ich habe auf dem Formular eine TImage abgelegt, ein Icon rein geladen, und es übergeben. Funktioniert.
Delphi-Quellcode:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Title := 'Dies und Das';
//Application.Icon.Handle := Form1.Image1.Picture.Icon.Handle; //Funktioniert
//Application.Icon := Form1.Image1.Picture.Icon; //Funktioniert
Application.Icon := Form1.Icon; //Funktioniert
Application.Run;
Application.Icon.Assign(Icon);
end.
Dann habe ich noch zwei andere versuche unternommen. Funktionieren auch.
Hier ein anderes Beispiel, mal schnell ein Splashscreen eingebaut (Form2)
Delphi-Quellcode:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Title := 'Dies und Das';
Application.Icon := Form2.Icon;
Form2.ShowModal; // Nach 2 Sekunden schließt sich Form2 selbst.
Application.Icon := Form1.Icon;
Application.Run;
end.
Delphi-Quellcode:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm2 =
class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Timer1Timer(Sender: TObject);
begin
if Timer1.Tag = 2000
then
Close;
Timer1.Tag := Timer1.Tag + Timer1.Interval;
end;
end.
Nach 2 Sekunden wechselt das Icon erneut.