AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

Ein Thema von DieDolly · begonnen am 5. Jan 2024 · letzter Beitrag vom 7. Jan 2024
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 5. Jan 2024, 20:27
Zitat:
Die Kapselung in Delphi unterstützt das nicht. Aber wie alleine schon das aktuelle Snipping Tool, das unter Windows 11 nun bei einem Druck auf die Drucken Taste erscheint, zeigt, gibt es die Möglichkeit, eine Grafik hinzuzufügen unter Windows.
Ich verstehe nicht, was dein Text mit meinem Benachrichtungs-Problem zu tun hat.

Dass dieses Notification-Teil mein Problem nicht löst, weiß ich.
Deswegen möchte ich ja was eigenes haben - zusätzlich. Mein erster Versuch ist oben. Der Code oben zeigt nur ganz simpel ein Fenster an der richtigen Stelle an.
Aber das zweite soll über dem ersten angezeigt werden mit der Möglichkeit, dass die Fenster automatisch verschwinden und Nachrutschen bzw wenn man das untere schließt, soll das obere nachrutschen.

Mein Problem ist, dass ich diese Verwaltung mit automatischer Schließgung ohne Speicherlecks nicht entwickelt bekomme.

Geändert von DieDolly ( 5. Jan 2024 um 21:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.990 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 5. Jan 2024, 22:46
Dafür brauchst du eine übergeordnete Klasse, die sich um die Verwaltung kümmert, im Grunde so wie das TNotificationCenter. Dann zeigt das TToastCenter die Fenster an und verschiebt sie bei Bedarf. Der einzelne Toast kann z.B. ein Event haben, das beim Ausblenden gefeuert wird. Dann kann das TToastCenter ggf. weitere sichtbare Fenster verschieben.

Wie wäre es so... mal schnell runtergetippt...
Toasts.zip
Das ist nur ein Beispiel, um eine mögliche Architektur zu zeigen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 6. Jan 2024, 11:14
Ich habe mir das angeguckt und habe jetzt verstanden, was ich gestern falsch gemacht habe. Vielen Dank.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 6. Jan 2024, 13:25
Ich habe den Code an meine Bedürfnisse angepasst, möchtest du dir das angucken? Kannst mir ja sagen, ob es eine Note "mangehaft" oder "ausreichend" ist
Angehängte Dateien
Dateityp: 7z ToastTest.7z (2,5 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.990 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 6. Jan 2024, 13:54
Die Logik verstehe ich nicht so ganz. Warum übergibst du nicht einfach den Typ des Formulars, damit der Toast dieses erstellen kann?

Wenn du die Instanz selbst übergibst, musst du die vorher selbst erstellen. Und wenn du wie aktuell die globale Variable übergibst, kannst du immer nur einen Toast pro Formular absetzen.

Also so:
Delphi-Quellcode:
  TToast<T: TForm> = class
  private
    FForm: T;
  public
    constructor Create;
    property Form: T read FForm;
  end;

{ TToast<T> }

constructor TToast<T>.Create;
begin
  inherited Create;
  FForm := T.Create(nil);
  FForm.OnShow := FormShowEvent;
  FForm.OnClose := FormCloseEvent;
  FTimer := TTimer.Create(nil);
end;
Nebenbei:
Deine Quelltextformatierung ist ja der aus dem offiziellen Styleguide sehr ähnlich. Das ist sehr gut. Wie wäre es, wenn du auch die Einrückung auf dem Standard lässt (2 Zeichen)? Bei 1 Zeichen sieht man kaum die Struktur, braucht daher länger um den Quelltext zu lesen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 6. Jan 2024, 14:07
Zitat:
Wenn du die Instanz selbst übergibst, musst du die vorher selbst erstellen.
In meinem Programm erstelle ich alle Instanzen für alle Formulare, sobald sie benötigt werden, selber. Dafür habe ich eine Unit geschrieben die sich um alles kümmert.
In dem von mir hochgeladenen Code übergebe ich Form1 und Form2, weil es im Endprodukt auch so sein würde. Das Erzeugen dieser Formulare geschieht vorher.
Auch mache ich das so, weil ich dann genau eine zentrale Stelle habe, an der Instanzen für Formulare erzeugt werden.

Geändert von DieDolly ( 6. Jan 2024 um 15:02 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: Eigene Tray-Benachrichtigungen anzeigen statt TTrayIcon

  Alt 7. Jan 2024, 14:32
Ich habe jetzt wohl ein anderes Problem.

In der Unit Toast wird OnClose des Formulars mit FormCloseEvent überschrieben.
Mein eigentlicher Code in FormClose, der der im eigentlichen Formular steht, wird dann nicht mehr aufgerufen. Kann man das irgendwie erzwingen?

Geändert von DieDolly ( 7. Jan 2024 um 15:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:37 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