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
günni0
(Gast)

n/a Beiträge
 
#1

AW: Application.Icon setzen

  Alt 9. Apr 2018, 17:40
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.
  Mit Zitat antworten Zitat
freimatz

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

AW: Application.Icon setzen

  Alt 9. Apr 2018, 18:55
Hallo,
also erstmal - ich habe eine Lösung:
Delphi-Quellcode:
procedure DoIcon();
var
  h : hIcon;
begin
  h := LoadIcon(hInstance, 'MAINICON');
  Application.Icon.Handle := h;
  InvalidateRect(Application.Handle, nil, true);
end;

begin
  Application.Title := 'BalBlaBla';
  DoIcon();
  Application.Initialize;
  SplashFormCreate('',false);
  Application.ProcessMessages();
  ...
An sich fehlte gegenüber vorigen Versuchen nur ein "Application.ProcessMessages();"

500.000 Zeilen? Respekt. Nur baut man Splash Screens nicht eher beim Start des Programms ein?
Das Einbauen und die zeitliche Abfolge ist nicht unbedingt abhängig. Etliche units haben einen initialization Abschnitt und vor allem bei Fremdkomponenten habe ich da nicht den Überblick.

Zwischen Programmstart und bis das Hauptfenster fertig ist können schon mal 10 Sekunden vergehen.
Application.MainFormOnTaskbar ist von Beginn an False; ob das später noch mal auf True geht habe ich nicht untersucht. Das Hauptfenster setzt später auch nochmal das Icon (je nach Konfiguration unterschiedliche)

Mein Splash ist nicht ausschaltbar; andererseits ist er auch nicht fsStayOnTop so dass man noch was anders tun kann.

Danke für alle Beiträge.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Application.Icon setzen

  Alt 9. Apr 2018, 19:05
Solange der Splash-Screen nur für die Dauer des Programmstarts angezeigt wird, wenn auch wirklich was geladen/initialisiert wird, ist doch alles OK. Nag-Screen kann man das nicht nennen.
Sonst wäre der Photoshop-Splash-Screen ja auch ein Nag-Screen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Application.Icon setzen

  Alt 9. Apr 2018, 19:07
So sollts auch gehen um Code kurz zu halten.
Delphi-Quellcode:
procedure DoIcon();
begin
  Application.Icon.Handle := LoadIcon(hInstance, 'MAINICON');
  InvalidateRect(Application.Handle, nil, true);
end;
Sonst müsstest Du irgendwo das "h" wieder freigeben, oder?
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 9. Apr 2018 um 19:12 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#5

AW: Application.Icon setzen

  Alt 9. Apr 2018, 19:12
Programmierung Lehrjahr 1: Zwischenvariablen, wenn möglich, immer vermeiden. Besonders bei Blöcken <= 10 Zeilen.
  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 9. Apr 2018, 19:29
In der Entstehung nutz ich erstmal viele Variablen um halt Feedback auswerten zu können, die kommen alle schön brav in eine {$IFNDEF DEPLOY} rein um automatisch bei {$DEFINE DEPLOY} ignoriert/übersprungen zu werden.

Als Beispiel dient mir obiger Source:
Delphi-Quellcode:
{.$DEFINE DEPLOY} // Wenn der Punkt entfernt wird, ist's aktiv

procedure DoIcon();
{$IFNDEF DEPLOY}
var
  h : hIcon;
{$ENDIF DEPLOY}
begin
{$IFNDEF DEPLOY}
  h := LoadIcon(hInstance, 'MAINICON');
  Application.Icon.Handle := h;
{$ELSE DEPLOY}
  Application.Icon.Handle := LoadIcon(hInstance, 'MAINICON');
{$ENDIF DEPLOY}
  InvalidateRect(Application.Handle, nil, true);
end;
Habs grad nur so hingekritzelt, korrektheit könnt falsch sein.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 9. Apr 2018 um 19:39 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#7

AW: Application.Icon setzen

  Alt 9. Apr 2018, 19:42
Sieht schwer noch nahezu doppeltem und unheimlich schwer wartbarem Code aus wenn es dann mal tausende Zeilen sind die man so schreibt.
  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, 19:45
Programmierung Lehrjahr 1: Zwischenvariablen, wenn möglich, immer vermeiden. Besonders bei Blöcken <= 10 Zeilen.

Programmierung Lehre -> diese Schule meiden.

Ok - schöner Code ist meiner auch nicht. Aber da mache ich erst wieder rum wenn das Produkt raus ist und das ist Donnerstag.

@KodeZwerg: was soll das bringen? Macht es doch nur extrem unleserlich. Der Compiler optimiert das doch eh weg.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#9

AW: Application.Icon setzen

  Alt 9. Apr 2018, 21:23
Beim Debuggen kann man sich die Zwischenergebnisse ansehen. (OK, im Assembler, teilschritte in den überwachten Ausdrücke, Variable auswerten, ...)

Ich handhabe es so, dass der Splash-Screen für die Dauer angezeigt wird die es benötigt alle Formulare zu erzeugen
Warum überhaupt immer alles erstellen, anstatt es nur/erst dann, wenn es auch verwendet wird?

Vieles wird selten/fast nie verwendet, oder schaust du dir den Options- oder gar den Info-Dialog deines Delphi mehrmals täglich an?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Apr 2018 um 21:25 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#10

AW: Application.Icon setzen

  Alt 9. Apr 2018, 21:54
Zitat:
Warum überhaupt immer alles erstellen, anstatt es nur/erst dann, wenn es auch verwendet wird?
Ist zwar am Thema vorbei, aber damals so begonnen, nie geändert, heute keine Lust mehr dazu. Es funktioniert ohne Fehler und schnell, was will man mehr.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:16 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