![]() |
AW: Application.Icon setzen
Ungetestet als Idee hingedaddelt:
Delphi-Quellcode:
Icon := TIcon.Create;
st := TMemoryStream.Create; try SplashForm.cxImageListMainIcon.GetIcon(0, Icon); Icon.SaveToStream(st); Application.Icon.LoadFromStream(st); finally st.Free; Icon.Free; end; |
AW: Application.Icon setzen
@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:
Dann habe ich noch zwei andere versuche unternommen. Funktionieren auch.
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. 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:
Nach 2 Sekunden wechselt das Icon erneut.
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. |
AW: Application.Icon setzen
Zitat:
Leider habe ich noch mehr als 500.000 andere Zeilen Code die halt auch im Projekt drin sein müssen sonst werden manche Leute unzufrieden ;-) |
AW: Application.Icon setzen
Wieso beeinflussen die anderen 500.000 Zeilen denn Application.Icon?
|
AW: Application.Icon setzen
Tja, wenn ich das wüsste ... :?
Wie geschrieben habe ich DevExpress im Verdacht. Die hooken sich ins System rein. Allerdings hatte ich noch keine Zeit das näher zu untersuchen. |
AW: Application.Icon setzen
In aktuellen Delphis ist standardmäßig nicht das Application.Icon in der Taskleiste zu sehn, sondern Application.MainForm.Icon, denn
![]() Du könntest beim Programmstart MainFormOnTaskbar umstellen, aber anschließend sollte es besser immer auf True stehen, denn in Bezug auf Aero Peek und das Kontextmenü des Taskbuttons hat es einen großen Einfluss. |
AW: Application.Icon setzen
Ah danke. Das hatte ich noch nicht "auf dem Schirm". Werde das untersuchen.
|
AW: Application.Icon setzen
Zitat:
|
AW: Application.Icon setzen
Zitat:
|
AW: Application.Icon setzen
Ich handhabe es so, dass der Splash-Screen für die Dauer angezeigt wird die es benötigt alle Formulare zu erzeugen + 500 Millisekunden.
Natürlich ist er ausschaltbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz