AGB  ·  Datenschutz  ·  Impressum  







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

TTaskbar: Neues Icon zuweisen?

Ein Thema von PeterPanino · begonnen am 19. Sep 2024 · letzter Beitrag vom 20. Sep 2024
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#1

TTaskbar: Neues Icon zuweisen?

  Alt 19. Sep 2024, 22:34
Hallo, weiß jemand, ob es möglich ist, dem Taskbar-Button der eigenen Applikation zur Laufzeit ein neues Icon zuzuweisen - evtl. mit Hilfe von TTaskbar?
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TTaskbar: Neues Icon zuweisen?

  Alt 19. Sep 2024, 22:56
Delphi-Referenz durchsuchenApplication.Icon ?

bzw. das Icon der Form, welche dort ihren TaskButton hat, da Delphi-Referenz durchsuchenApplication.MainFormOnTaskBar (weil das FormIcon oft leer ist, wird halt Application.Icon genutzt)
Delphi-Referenz durchsuchenTForm.Icon
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Sep 2024 um 23:05 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TTaskbar: Neues Icon zuweisen?

  Alt 19. Sep 2024, 23:46
Danke, du hast mich auf die Lösung gebracht:

Application.Icon.LoadFromFile('C:\DELPHI\Icons\mein.ico'); Und schon hat mein Taskbar-Button ein neues Icon! )
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TTaskbar: Neues Icon zuweisen?

  Alt 20. Sep 2024, 00:02
Leider ist es mir nicht gelungen, das Icon aus einer Projekt-Resource zu laden:

Delphi-Quellcode:
procedure TForm1.LoadTaskbarIcon(const AResName: string);
var
  NewIcon: Vcl.Graphics.TIcon;
begin
  NewIcon := Vcl.Graphics.TIcon.Create;
  try
    NewIcon.LoadFromResourceName(HInstance, AResName);
    Application.Icon.Assign(NewIcon);
  finally
    NewIcon.Free;
  end;
end;
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TTaskbar: Neues Icon zuweisen?

  Alt 20. Sep 2024, 00:46
Das heißt, laden aus der Resource funktioniert schon, da ich es im CodeSite Live Viewer anzeigen kann:

Delphi-Quellcode:
Application.Icon.LoadFromResourceName(HInstance, AResName);
CodeSite.Send('TForm1.LoadTaskbarIcon: NewIcon', NewIcon);
Application.Icon.Assign(NewIcon);
Nur die Zuweisung an Application.Icon funktioniert nicht.
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TTaskbar: Neues Icon zuweisen?

  Alt 20. Sep 2024, 02:55
Der Form ist aber kein Icon zugewiesen?
Wenn doch, dann überdeckt sie ja das Application.Icon.

Mal versuchen das Icon in die Form der laden?


Der Code liegt aber nicht in einem Package oder DLL?
Delphi-Referenz durchsuchenHInstance ist das Handle des Moduls (EXE/DLL/BPL), in welchem der Code liegt.
Delphi-Referenz durchsuchenMainInstance ist immer das der EXE, aber auch 0 entspricht der EXE.

Delphi selbst lädt so das Icon ins Application, beim Programmstart (TApplication.Create).
Application.Icon.Handle := LoadIcon(MainInstance, 'MAINICON');

Und falls bei Abfrage in Application und Form kein Icon-Handle vorhanden ist, dann wird dort via LoadIcon(0, IDI_APPLICATION) versucht Eines zu laden, aber das dürfte vom Ergebnis her dem Ersten entsprechen.


Versuch es mal so
Delphi-Quellcode:
NewIcon.LoadFromResourceName(HInstance, AResName);
Application.Icon := NewIcon; // macht aber intern eigentlich auch nur ein Assign
NewIcon.Free;
// oder
Application.Icon.LoadFromResourceName(HInstance, AResName);
// oder
var Stream := TResourceStream.Create(HInstance, AResName, RT_ICON);
Application.Icon.LoadFromStream(Stream);
Stream.Free;
aber ich hätte jetzt keinen Unterschied erwartet, egal ob es über das Handle oder direkt in die VCL-Komponente geladen oder über ein zusätzliches TIcon übergeben wird.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Sep 2024 um 03:04 Uhr)
  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 00:10 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