![]() |
AW: Application.Icon setzen
Hallo,
also erstmal - ich habe eine Lösung:
Delphi-Quellcode:
An sich fehlte gegenüber vorigen Versuchen nur ein "Application.ProcessMessages();"
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(); ... Zitat:
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. :thumb: |
AW: Application.Icon setzen
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. |
AW: Application.Icon setzen
So sollts auch gehen um Code kurz zu halten.
Delphi-Quellcode:
Sonst müsstest Du irgendwo das "h" wieder freigeben, oder?
procedure DoIcon();
begin Application.Icon.Handle := LoadIcon(hInstance, 'MAINICON'); InvalidateRect(Application.Handle, nil, true); end; |
AW: Application.Icon setzen
Programmierung Lehrjahr 1: Zwischenvariablen, wenn möglich, immer vermeiden. Besonders bei Blöcken <= 10 Zeilen.
|
AW: Application.Icon setzen
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:
Habs grad nur so hingekritzelt, korrektheit könnt falsch sein.
{.$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; |
AW: Application.Icon setzen
Sieht schwer noch nahezu doppeltem und unheimlich schwer wartbarem Code aus wenn es dann mal tausende Zeilen sind die man so schreibt.
|
AW: Application.Icon setzen
Zitat:
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. |
AW: Application.Icon setzen
Zitat:
Wenn man einen Wert in einem Code-Block x-mal benötigt ist das was anderes. |
AW: Application.Icon setzen
Das war halt nur ein Beispiel, jeder so wie er es mag.
Da ich mich an so eine Art der Programmierung gewöhnt habe, also das innerhalb bestimmter {$IF} Blöcke nur bestimmte Sachen beim Compilieren berücksichtigt werden, kann ich mich halt in den {$IFNDEF} Blöcken relativ frei austoben und in den {$IFDEF} oder {$ELSE} Blöcken halt Achten alles richtig zu machen. Da es bei mir viele eigene Funktionen/Prozeduren gibt die ich halt in zwei Varianten brauche, einmal Testing einmal Release ohne jede Funktion/Prozedur doppelt haben zu müssen, nutze ich diese Möglichkeit. Punkt entfernen = nur Release Code wird compiliert und das betrifft bei mir halt viele Aufrufe. |
AW: Application.Icon setzen
Beim Debuggen kann man sich die Zwischenergebnisse ansehen. (OK, im Assembler, teilschritte in den überwachten Ausdrücke, Variable auswerten, ...)
Zitat:
Vieles wird selten/fast nie verwendet, oder schaust du dir den Options- oder gar den Info-Dialog deines Delphi mehrmals täglich an? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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