AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Application.Icon setzen

Ein Thema von freimatz · begonnen am 6. Apr 2018 · letzter Beitrag vom 9. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2      
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#1

Application.Icon setzen

  Alt 6. Apr 2018, 18:24
Hallo,
in meiner App erscheint zuerst ein SpashScreen. Das ist eine einfache TForm. Das Hauptformular wird erst später geladen. Ich möchte nun dass in der Taskleiste nun gleich ein Icon und der Titel erscheint.
Beim Titel klappt das mit Application.Titel recht gut, beim Icon gelingt es mir nicht.
Wie macht man das am Besten, woran kann es liegen?
Letzter Versuch war:
Delphi-Quellcode:
       
       Icon := TIcon.Create;
       try
         SplashForm.cxImageListMainIcon.GetIcon(0, Icon);
         Application.Icon.Assign(Icon);
       finally
         Icon.Free;
       end;
cxImageListMainIcon ist dabei einem Imagelist. Mit einem TImage gings auch nicht. Auch nicht mit SplashForm.Icon.
Für Ideen oder eine Lösung wäre ich dankbar.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#2

AW: Application.Icon setzen

  Alt 6. Apr 2018, 18:42
Application.Icon := SplashForm.cxImageListMainIcon.GetIcon(0, Icon);
sollte eigentlich funktionieren.

Geändert von günni0 ( 6. Apr 2018 um 18:54 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Application.Icon setzen

  Alt 6. Apr 2018, 18:52
Danke. Leider Nein: [DCC Fehler] Fm_Splash.pas(70): E2010 Inkompatible Typen: 'TIcon' und 'procedure, untyped pointer or untyped parameter': GetIcon ist keine function.
(PS.: gegooglet habe ich auch schon lange.)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#4

AW: Application.Icon setzen

  Alt 6. Apr 2018, 18:53
Mein Fehler. So natürlich:

Delphi-Quellcode:
IconX := SplashForm.cxImageListMainIcon.GetIcon(0, Icon);

Application.Icon := IconX;
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Application.Icon setzen

  Alt 6. Apr 2018, 21:33
Sorry, dadurch wird GetIcon immer noch nicht zu einer function
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Application.Icon setzen

  Alt 6. Apr 2018, 22:21
So hole ich mir zur Laufzeit Icons aus der Resource:

Delphi-Quellcode:
{$R MYICONS.RES}

procedure TForm1.Button1Click(Sender: TObject);
var
  h : hIcon;
begin
  h := LoadIcon(hInstance, 'ICON_1');
  Application.Icon.Handle := h;
  InvalidateRect(Application.Handle, nil, true);
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
156 Beiträge
 
#7

AW: Application.Icon setzen

  Alt 7. Apr 2018, 19:58
@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.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Application.Icon setzen

  Alt 9. Apr 2018, 11:30
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
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#9

AW: Application.Icon setzen

  Alt 9. Apr 2018, 11:36
Wieso beeinflussen die anderen 500.000 Zeilen denn Application.Icon?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Application.Icon setzen

  Alt 9. Apr 2018, 11:52
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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