Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi TNA MouseOver (https://www.delphipraxis.net/11964-tna-mouseover.html)

devnull 17. Nov 2003 21:58


TNA MouseOver
 
Hi,

ich hab aus einem anderen Thread "einfach" den Source zur Minimierung in die Tray-Leiste kopiert.
Tja, das Minimieren geht, aber sobald ich mit der Maus über mein Symbol fahre, verschwindet dieses auf 'wundersame' Weise !

:gruebel: Kann mir da einer helfen ???


devnull

Chewie 17. Nov 2003 22:03

Re: TNA MouseOver
 
Das passiert normalerweise, wenn das Icon registriert, aber nie wieder freigegeben wird. Durch das Drüberfahren mit der Maus wird Windows dazu gebracht, nachzukucken, ob das Fenster, das das Icon registriert hat, noch existiert. Ist das nicht der Fall, wird das Icon entfernt.
Existiert das Fenster zu dem Zeitpunkt noch? Wenn ja, dann zeig mal Code, vielleicht sieht man so, worans liegt.

devnull 17. Nov 2003 22:08

Re: TNA MouseOver
 
Ich hab vor dem Aufruf einfach die Form 'unsichtbar' gemacht !

Delphi-Quellcode:
          Form1.Visible := false;
          Form1.FormStyle := fsNormal;
          Form1.IconData.cbSize := SizeOf(Form1.IconData);
          Form1.IconData.Wnd := Handle;
          Form1.IconData.uID := 100;
          Form1.IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
          Form1.IconData.uCallBackMessage := WM_USER + 20;
          Form1.IconData.hIcon := Application.Icon.Handle;
          Form1.IconData.szTip := 'Anwendung';
          Shell_NotifyIcon(NIM_ADD, @Form1.IconData);
:gruebel: Ich hoffe das reicht.


devnull

himitsu 17. Nov 2003 22:15

Re: TNA MouseOver
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wie gesagt, hab's schon lange nicht mehr genutzt.

Aber in meiner alten Demo wird das so gemacht:
Delphi-Quellcode:
Procedure TUhrFormular.erstelleIcon(I: TIcon; ID: Integer; Hint: String);
  Var D: TNotifyIconData;
  Begin
    D.cbSize := SizeOf(D);
    D.Wnd := Handle;
    D.uID := ID;
    D.uCallbackMessage := MSG_IconCallBack;
    D.HIcon := I.Handle;
    StrCopy(D.szTip, PChar(Hint));
    D.uFlags := NIF_Message or NIF_Icon or NIF_Tip;
    Shell_NotifyIcon(NIM_Add, @D);
  End;


IconAus := TIcon.Create; IconEin.LoadFromFile('System_TaskleisteDoppelstart_IconAus.ico');
erstelleIcon(IconAus, 0, 'Alarm einschalten');

devnull 17. Nov 2003 22:21

Re: TNA MouseOver
 
danke himitsu, habs dank deinem beispiel auch endlich geschafft, ein icon in die taskleiste zu bringen, das nich gleich wieder verschwindet


:cheers: devnull


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 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