AGB  ·  Datenschutz  ·  Impressum  







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

Das Problem mit dem vergessenem TrayIcon

Ein Thema von Popov · begonnen am 2. Mär 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:19
Was ich eigentlich schon seit Jahren fragen wollte es aber immer wieder vergesse, das ist das Problem mit dem nicht mehr gültigen TrayIcon. Wahrscheinlich gibt es dafür eine einfache Lösung und und garantiert 127 Beiträge hier im Forum wie man es lösen kann, aber ich finde es nicht, oder ich benutze die falschen Suchbegriffe.

Und zwar ist es so, dass ich mir für TrayIcon keine Komponente installieren will, also mache ich es immer alleine. Und alles funktioniert auch wie ich es will, nur nicht wenn das Programm beendet wird. Dann bleibt das TrayIcon immer noch sichtbar. Gehe ich mit dem Mauszeiger drüber, verschwindet es. Aber bis dahin bleibt es da. Und wenn ich das Programm fünf weitere Mal starte, dann habe ich fünf Icons da. Also wie räumt man den Bereich auf?
  Mit Zitat antworten Zitat
sHoXx
(Gast)

n/a Beiträge
 
#2

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:22
ich rufe im FormClose
    TrayIcon1.Destroy; auf, dann ist es bei mir weg.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:25
ich rufe im FormDestroy
    TrayIcon1.Destroy; auf, dann ist es bei mir weg.
Häh ... das ist doch

a) eine Komponente, die auf der Form liegt (liegen sollte) und damit als Owner diese Form hat. Und dieser Owner kümmert sich schon um die Freigabe

b) egal was mit Destroy freigeben sollte man besser lassen und dafür Free verwenden

EDIT: und der TE setzt eben keine Komponente dafür ein
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:28
@sHoXx

Wie gesagt, ich habe keine Komponente.

Ich hab in den Jahren an die zig Varianten ausprobiert und einige sahen sogar gut aus und der Icon verschwand meistens. Aber nur meistens. Irgendwas fehlt da.

@himitsu

Das versteht sich von selbst. Daran liegt es nicht.
  Mit Zitat antworten Zitat
sHoXx
(Gast)

n/a Beiträge
 
#5

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:31
gut, ich dachte du verwendest die Standardkomponente, und wolltest dir keine anderweitige komponente installieren. Manchmal sind die Finger schneller als der Kopf

vielleicht zeigst du etwas code, an dem man sehen kann, wie dein selbst erstelltes tryicon aussieht

Geändert von sHoXx ( 2. Mär 2012 um 13:34 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:39
Gibt es eine Standardkomponente in Delphi 7?

Ich hab mit der Zeit so viele Versionen getestet, eigene Kreationen, aber auch aus dem Internet. Somit kann ich einen beliebigen Code zeigen. Ich glaube die habe ich zuletzt verwendet: http://www.delphipraxis.net/30716-post2.html , da sie sogar passabel funktioniert und der Icon verschwindet fast immer. Einige Male blieb er aber.

Und bevor himitsu wieder fragt, alle enthalten diese Zeile: Shell_NotifyIcon(NIM_DELETE ...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 13:49
Gibt es eine Standardkomponente in Delphi 7?
AFAIK Nein. Erst in neueren Delphi-Versionen liefert Borland/Codegear/Embaracadero eine Komponenten mit.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 14:40
Wie gesagt, ich habe keine Komponente.
Es gibt ja 3 Ansätze für Tray Icons:
a.) Komponente
Vorteile: Wiederverwendbar, für den Programmier leicht zu benützen, in der Regel "idiotensicher" und Fehlerfrei
Nachteile: muss installiert werden, bringt gewissen Overhead mit sich
b.) eine Klasse (von TObject abgeleitet)
Vorteile: Wiederverwendbar, relativ leicht zu benützen
Nachteile: keine
c.) direkter Aufruf von Windows API-Funktionen
Vorteile: erlaubt auch spezielle Anpassungen
Nachteile: nicht wiederverwendbar, Fehlerträchtig, Code verschmutzt die Anwendung,
schlecht auf Veränderungen anpassbar

Ein professioneller Programmierer kann eigentlich nur die Ansätze a.) oder b.) verwenden.
Die Variante c.) ist für Cowboy-Programmierer.
Andreas
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 15:22
Zitat:
direkter Aufruf von Windows API-Funktionen
Da ich lieber direkt mit der API arbeite anstatt wie bei b.) über umwegen mit der API
bin ich doch lieber ein Cowboy-Programmierer

Anstatt wie du "Ein professioneller Programmierer"
Der alles in doppelter ausführung abgelegt haben muss letztendlich ruft auch deine Klasse die selbe API auf
halt nur über Umwege und das soll professional sein?

Zum Thema da gab es immer schon diverse probleme mit den Tray Icons das diese nicht oder schlecht aktualisiert wurden.
Gab irgendwo mal einen Patch vom MS dafür .. hab ihn aber vergessen.

gruss
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: Das Problem mit dem vergessenem TrayIcon

  Alt 2. Mär 2012, 16:14
Da ich lieber direkt mit der API arbeite anstatt wie bei b.) über umwegen mit der API
bin ich doch lieber ein Cowboy-Programmierer
Ich weiss! So sieht dein Sourcecode dann halt auch aus.
Hauptsache es funktioniert irgendwie, ist wohl deine Einstellung.
Als "Profi" kann ich mir so etwas nicht leisten.
Jede Unsauberkeit rächt sich später irgendwann (zumindest dann wenn man eine Software über mehr als 10 Jahre erweitern, verbessern und warten muss).
Ich hab' hier mehrere Projekte mit zusammen 1,4 Mio Zeilen.
Um dies zu bewältigen, muss man einfach jeden Zugriff auf die Windows API der etwas komplizierter ist auf irgendeine Art und Weise kapseln.
Wenn Windows ein Handle zurückliefert mit dem weitere API-Funktionen aufgerufen werden, ist das ein ganz klares Zeichen, dass man das Handle mit einer Klasse kapseln muss.

Auch Programmierer die nur so zum Spaß programmieren können noch was dazulernen indem sie ihre "Hauptsache es funktioniert" Einstellung ablegen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:35 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