AGB  ·  Datenschutz  ·  Impressum  







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

TTaskBar Problem mit Initialize

Ein Thema von UliBru · begonnen am 15. Mär 2018 · letzter Beitrag vom 16. Mär 2018
Antwort Antwort
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#1

TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:02
Ich möchte in einem vorhandenen größeren Projekt die TTaskBar Komponente verwenden und damit einen Progress im Taskbar-Icon darstellen.
Also eigentlich das übliche
Code:
Taskbar1.ProgressState := xxx
Nun, in diesem Projekt zeigt das Icon aber nichts an.
Erstelle ich ein neues Projekt und bau die TTaskbar ein, läuft es.

Bei der Suche bin ich nun darauf gestossen, dass beim einfachsten Testprojekt = eine leere Form, eine TTaskbar-Komponente und keine weitere Programmzeile, beim Programmaufruf in der Vcl.Taskbar.pas die Prozedur
Code:
procedure TCustomTaskbar.Initialize;
aufgerufen wird.
Was bei dem Zielprojekt aber nicht der Fall ist.
Das Initialize wird wiederum von der Prozedur procedure TCustomForm.WndProc(var Message: TMessage); in Vcl.Forms.pas angestossen mit
Code:
    else if Cardinal(Message.Msg) = RM_TaskBarButtonCreated then
      begin
        if FTaskbarHandler <> nil then
        begin
          TaskbarHandler.Initialize;
          TaskbarHandler.CheckApplyChanges;
        end;
Beim Debuggen kann ich feststellen, dass das nun nicht ausgeführt wird. Also kommt vermutlich keine entsprechende Message.
Ab da verliessen sie mich, ich weiss nicht, was die Ursache dafür sein könnte bzw. wie ich das herausfinden kann.

Der constructor TCustomTaskbar.Create(AOwner: TComponent); wird jedoch ausgeführt. Eine Zuweisung an ProgressState klappt auch, es passiert nur nichts.

Wenn ich nun selbst einen Aufruf Taskbar1.Initialize; starte (siehe dazu auch http://www.delphipraxis.net/193065-t...light=ttaskbar), dann gibt es eine Exception, weil dann die Initialize-Prozedure nun zweimal durchlaufen wird.

Kann mir da einer der Spezialisten weiterhelfen?

Grüsse
Uli
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:12
Delphi-Referenz durchsuchenMainFormOnTaskBar, MSDN-Library durchsuchenWS_EX_APPWINDOW, MSDN-Library durchsuchenWS_CHILD und Dergleichen.

Ist deine Form überhaupt in der Taskleiste?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:32
Das Programm hat ein Icon in der Taskleiste.
Aber der Tip mit der MainFormOnTaskbar hat unmittelbar geholfen. Die Zeile hat im Projekt gefehlt. Weshalb weiss ich nun nicht (mehr).
Und was das sonst für Auswirkungen hat, wenn ich das nun wieder mit reinnehme, muss sich zeigen.

Danke !
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#4

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:41
Ein Problem wirst du später eventuell noch bekommen mit der TTaskBar.
Wenn du eine Anwendung hast aber zwei Taskbar-Icons, dann ist es quasi unmöglich den Progress im zweiten Icon anzeigen zu lassen statt im ersten.
Jedenfalls bin ich bis heute nicht dahinter gekommen, wie das möglich sein soll.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:46
Früher (Delphi 7 und so) war das unsichtbare Message-Fenster des Application in der Taskleiste.
Seit es mit Vista+ in den Taskbuttons aber die Vorschau (AeroPeek) gibt, hat sich das ändern müssen, da man dort sonst nur ein leeres Fenster sieht.
> Delphi-Referenz durchsuchenApplication.MainFormOnTaskbar

Und Delphi ändert das aber nicht von sich aus, denn wenn jemand früher z.B. das Menü App-Buttons in der Taskbar verändert oder den Taskbar-Button ein-/ausgeblendet hat oder wenn du im alten elphi schon diese Progressbar genutz hättest, dann gingen diese Codes ja auf Application.Handle, anstatt auf Application.MainForm.Handle und es würde nichts mehr funktionieren.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:55
Für Taskbar Icons ab Windows 7 hier ein paar gute Fakten, Beispiele und eventuell sogar neue Erkenntisse.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:55
@günni0: Du bräuchtest dann an jedem Fenster einen TaskbarHandler. Aber so wie es aussieht, könnte es sein, dass die VCL-Komponente immer nur auf die erste Form (MainForm) geht.

Du kannst aber hindert dich niemand daran, die API direkt zu nutzen oder eine Komponente von jemand Anderem zu nutzen, wo das "richtig" funktioniert.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#8

AW: TTaskBar Problem mit Initialize

  Alt 15. Mär 2018, 15:59
Für dieses Thema hier sicher interessant.
Gibt es eine Komponente, wo das richtig funktioniert? Wenn ja, magst du sie hier vorstellen?
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TTaskBar Problem mit Initialize

  Alt 16. Mär 2018, 16:26
Zur direkten Nutzung per API siehe http://www.drbob42.com/examine/examinC5.htm
Das sieht mir doch simpel und trotzdem wertig aus. Wenn ich das vorher gefunden hätte wäre mir das mit der MainFormOnTaskbar eher klar gewesen.
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#10

AW: TTaskBar Problem mit Initialize

  Alt 16. Mär 2018, 16:50
Simple wäre für mich ein paar wenige Zeilen Code. Das da kommt ja schon einer Komponente gleich
  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 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz