Autor Beitrag
FFrey
Hält's aus hier
Beiträge: 2

Win XP, Win Svr 03

BeitragVerfasst: Mo 14.01.08 09:16 
Hallo,

Bei den Projekteigenschaften / Version Info hab ich einen neuen Key "isLive" hinzugefügt, den ich entweder auf true oder false setzen.
Dieser wird dann ausgelesen und anhand dieses Schalters wird das icon, die Datenbankverbindung etc. gesetzt. Zweck: Ich habe ein Programm, dass ich mit diesem Schalter umschalten kann, so dass es einmal die Live-Version ist, die auf die Produktive Datenbank zugreifft und einmal die Trial-Version, die auf die Testdatenbank zugreifft.

Um Live oder Trial optisch zu unterscheiden werden unterschiedliche Icons verwendet.
Problem: Ich kann zwar zu Laufzeit mit Application.Icon.LoadFromFile das Icon (in der oberen linken Ecke) des Forms verändern, jedoch bleibt das Icon der Exe-Datei immer gleich.
Ich möchte es jedoch nicht manuell in Projekteigenschaften / Application ändern, sondern alles von meinem Boolean "isLive" abhängig machen.

Gibt es irgend eine Möglichkeit das icon der Exe-Datei variabel im Code festzulegen?

Danke im Voraus

(Delphi 7)


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 14.01.2008 um 10:29
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mo 14.01.08 09:31 
imho: Das Icon der Anwendung wird auch geändert, nur nicht in der Taskleiste anzeigt, diese musst Du erst aktualisieren, dazu sollte sich aber etwas im Forum finden!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
FFrey Threadstarter
Hält's aus hier
Beiträge: 2

Win XP, Win Svr 03

BeitragVerfasst: Mo 14.01.08 10:02 
Mit der Taskliste hab ich kein Problem, die stimmt. Ich meine die Exe-Datei im Dateiexplorer die man doppelklickt um das Programm zu starten
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 14.01.08 10:26 
Das Icon deiner Exe ist direkt in der Exe-Datei als Ressource gespeichert. Und um das auszulesen wird auch kein Code deiner Exe ausgeführt.
--> Du kannst keinen Code schreiben, der dieses Icon einfach so on-the-fly ändert.

Sinnvoller als in den Versionsinformationen etwas zu setzen wäre es einen Compilerschalter zu benutzen, der dann auch tatsächlich nur den passenden Code einkompiliert und eben die passende Resourcendatei einbindet:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Ganz oben in der Unit des Hauptformulars (oder in einer extern dort eingebundenen Include-Datei, also mit {$I xy.inc}):
{$DEFINE MYLIVEVERSION}
// Und das musst du dann nur auskommentieren, etc.

// Dann dort wo die Ressourcendatei eingebunden wird:
{$IFDEF MYLIVEVERSION}
  {$R MitLiveIcon.res}
{$ELSE}
  {$R OhneLiveIcon.res}
{$ENDIF}

// Und als Beispiel:
procedure TfrmMain.btnTestVersionClick(Sender: TObject);
begin
{$IFDEF MYLIVEVERSION}
  ShowMessage('Dies ist die Liveversion');
{$ELSE}
  ShowMessage('Keine Liveversion');
{$ENDIF}
end;
Einen Nachteil gibt es, du hast jetzt zwei Ressourcedateien, in denen du andere Versionsinformationen jeweils setzen musst.

Zumal man mit deinem Schalter in den Versionsinformationen ja die Exe selbst als Laie nur mit einem simplen Ressourceneditor öffnen muss um deinen Schalter zu ändern. Was ja vielleicht nicht unbedingt das ist, was du möchtest.