Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Application.Icon setzen (https://www.delphipraxis.net/195916-application-icon-setzen.html)

Delphi.Narium 7. Apr 2018 11:17

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;

Alallart 7. Apr 2018 19:58

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:
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.

freimatz 9. Apr 2018 11:30

AW: Application.Icon setzen
 
Zitat:

Zitat von Alallart (Beitrag 1398437)
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.

Nein es ist nicht gut, zumindest bei mir. Ich glaube ja gerne, dass das bei dir funktioniert. Auch nehme ich an, dass es auch bei mir funktioniert, wenn ich ein neues Projekt mit deinem Code mache.
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 ;-)

günni0 9. Apr 2018 11:36

AW: Application.Icon setzen
 
Wieso beeinflussen die anderen 500.000 Zeilen denn Application.Icon?

freimatz 9. Apr 2018 11:52

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.

himitsu 9. Apr 2018 11:57

AW: Application.Icon setzen
 
In aktuellen Delphis ist standardmäßig nicht das Application.Icon in der Taskleiste zu sehn, sondern Application.MainForm.Icon, denn Delphi-Referenz durchsuchenMainFormOnTaskbar.

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.

freimatz 9. Apr 2018 12:36

AW: Application.Icon setzen
 
Ah danke. Das hatte ich noch nicht "auf dem Schirm". Werde das untersuchen.

Alallart 9. Apr 2018 17:12

AW: Application.Icon setzen
 
Zitat:

Zitat von freimatz (Beitrag 1398525)
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 ;-)

500.000 Zeilen? Respekt. Nur baut man Splash Screens nicht eher beim Start des Programms ein?

himitsu 9. Apr 2018 17:39

AW: Application.Icon setzen
 
Zitat:

Zitat von Alallart (Beitrag 1398574)
Nur baut man Splash Screens nicht eher beim Start des Programms ein?

Umd den Benutzer maximal zu nerven und zum Kauf zu nötigen, sollte man den auch mittendrin alle 5 Minuten aufspringen lassen. :stupid:

günni0 9. Apr 2018 17:40

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 09:46 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz