2010-11-16 14 views
11

Bir tepsi simgesine simge durumuna küçültebilen bir Delphi 2006 uygulamasına sahibim ve çeşitli simge mesajlarını tepsi simgesinin üzerine bir balon ipucu aracılığıyla görüntüler.Delphi uygulama tepsisi simgesindeki balon ipuçları süresiz olarak açılmaya devam ediyor

Bazı durumlarda - ne zaman olduğunu bilmiyorum - önceden görüntülenen bir balon ipucu ortaya çıkıyor ve gitmiyor. Programlanan süre boyunca kapanır, kapanır, sonra hemen yeniden görünür.

Bu uygulamadan her zaman bir balon ipucu. Uygulama başka bir balon ipucu görüntülerse, bu program programlanan süre için gösterilirse, fantom ipucu devam eder.

İpucu, bir sırada kuyruğa sıkışmış ve kaldırılamıyormuş gibi. Biraz ilhamı olan birinin yokluğunda (uzun bir atış olduğunu anlıyorum ...), balon ipuçlarını nasıl temizleyeceğini bilen var mı?

+0

çek sen tepsisi simgesi balonunu görüntülemek veya daha iyisi tepsisi simgesi bileşenin adını tüm proje arama ve Balonu gösterir yordamı diyorsunuz nerede olduğunu görmek için çağıran bir zamanlayıcı varsa. – ComputerSaysNo

+0

@Dorin. Teşekkürler, bitti. TTrayIcon'un BalloonHint özelliğine atanan kod kesinlikle yeniden çağrılmıyor. – rossmcm

+0

, bunu Windows XP'de test ediyor musunuz? Bu OS'de MS tarafından sağlanan balonlarla ilgili bir hata olduğunu hatırlıyorum. Her neyse, kabul edilen cevabı http://stackoverflow.com/questions/902642/how-to-hide-a-taskbar-balloon-at-will adresinden kontrol edin. Sanırım bu size yardımcı olabilir. –

cevap

2

Hangi TrayIcon kullanıyorsunuz? "Vcl.ExtCtrls" içindeki TCustomTrayIcon, Popup'u TrayIcon'a göndermek için TNotifyIconData kullanır. Bazı özellikler Windows Vista veya daha yenisini gerektirir.

public 
    FData: TNotifyIconData; //Winapi.ShellAPI 

procedure TCustomTrayIcon.ShowBalloonHint; 
begin 
    FData.uFlags := FData.uFlags or NIF_INFO; 
    FData.dwInfoFlags := Cardinal(FBalloonFlags); 
    Shell_NotifyIcon(NIM_MODIFY, FData); //Refresh(NIM_MODIFY); 
end; 

Sen neyin mesajlar trayicon ile göndermek ele alarak devam görebilirsiniz.

NIN_BALLOONSHOW  = WM_USER + 2; 
NIN_BALLOONHIDE  = WM_USER + 3; 
NIN_BALLOONTIMEOUT = WM_USER + 4; 
NIN_BALLOONUSERCLICK = WM_USER + 5; 
0

VB.NET'te aynı sorunla karşılaşıyorum. Benim uygulama systray bir balloontip üzerinden hata mesajları gösterir. Bir kerede birden fazla hata olduğunda, balloontip normal zaman aşımına yapışır ve hataları birbiri ardına gösterir. Balloontip'i göstermeye çalıştığınız gerçek sayısını hatırlatan bir çeşit tampon var gibi görünüyor. Yeni balloontips göstermeyi bırakır ve yeterince uzun süre beklerseniz sonunda durur.

Amacım, bir diğeri gelir gelmez baloncuğu kapatmak olurdu, ama henüz bunu yapmaya karar vermedim. Yani bu sadece yarım bir çözümdür.


[eklendi tam bir çözüm]

tam bir çözüm çok basit. Bunu yeni bir balloontip göstermeden önce yapın (Tepsi, TrayIcon/NotifyIcon'unuzdur).

Tray.Visible = true; 
+0

bu Delphi ilgili soruya nasıl ilişkili zor Uygulama –

+0

Aynı sorun için bir çözümdür. Sadece farklı kodlarda.Tek satırlık kodumu bir Delphi koduna çevir. Bu OP için bir sorun olur mu? – Martin

İlgili konular