اخفاء البالونة بعد وقت معين
#1
السلام عليكم

كيف يمكنني اخفاء البالون الاخباري بعد وقت معين ؟
كود :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellApi; const NIF_INFO = $10; NIIF_INFO = $00000001; NOTIFYICON_VERSION = 3; type PNewNotifyIconData = ^TNewNotifyIconData; TDUMMYUNIONNAME = record case Integer of 0: (uTimeout: UINT); 1: (uVersion: UINT); end; TNewNotifyIconData = record cbSize: DWORD; Wnd: HWND; uID: UINT; uFlags: UINT; uCallbackMessage: UINT; hIcon: HICON; //Version 5.0 is 128 chars, old ver is 64 chars szTip: array [0..127] of Char; dwState: DWORD; //Version 5.0 dwStateMask: DWORD; //Version 5.0 szInfo: array [0..255] of Char; //Version 5.0 DUMMYUNIONNAME: TDUMMYUNIONNAME; szInfoTitle: array [0..63] of Char; //Version 5.0 dwInfoFlags: DWORD; //Version 5.0 end; TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private IconData: TNewNotifyIconData; procedure ShowBalloonTips; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ShowBalloonTips; var TipInfo, TipTitle: string; begin IconData.cbSize := SizeOf(IconData); IconData.uFlags := NIF_INFO; TipInfo := (memo1.Lines.text); strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1); TipTitle := 'Yassine_hell'; //??????? strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1); IconData.dwInfoFlags := NIIF_INFO; //?????????????????????????????????? Shell_NotifyIcon(NIM_MODIFY, @IconData); Shell_NotifyIcon(NIM_ADD, @IconData); //Shell_NotifyIcon(NIM_DELETE, @IconData) end; procedure TForm1.Button1Click(Sender: TObject); begin ShowBalloonTips; end; end.
شكرا
الرد
#2
و عليكم السلام ورحمة الله وبركاته ،
يمكنك استعمال الخاصية
كود :
Application.HintHidePause

إقتباس :Envoyé par L'aide de Delphi
Spécifie l'intervalle de temps attendu avant de cacher le conseil quand la souris reste au-dessus du contrôle ou de l'élément de menu.

property HintHidePause: Integer;

Description

La propriété HintHidePause permet de spécifier un temps d'attente, exprimé en millisecondes, différent du temps par défaut de 2500 ms ou 2 secondes 1/2 qui est spécifié dans le constructeur. Le conseil du contrôle ou de l'élément de menu est spécifié dans la propriété Hint.


كود :
procedure TForm1.Button1Click(Sender: TObject); begin Application.HintHidePause := 60000; //60 Sec end;
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#3
لم تعمل
اقصد بالبالون الاخباري : http://delphi4arab.net/forum/showthread.php?tid=2672
الرد
#4
فيما أذكر أن Windows API لا توفر طريقة لعمل ذلك
بل يظهر البالون ويختفي حسب وقت لا يمكنك التحكم فيه بشكل مطلق، راجع:
إقتباس :TTimeoutVersion حسب الويندوز xp لا تقل عن 10 ثوان ولا تزيد عن 60 ثانية.
http://delphi4arab.net/forum/showpost.ph...stcount=16
إن كنت خبير بالـ API ربما تجد طريقة لمرواغة Windows!
بالتوفيق.
الرد
#5
حسنا اذن سأحاول بالـTimer
شكرا
الرد
#6
خدعة صغيرة للقيام بذلك
تدمير الـ Icon
كود :
Shell_NotifyIcon(NIM_DELETE, @YourTNA);
ثم إعادة إنشائها دون بالون:
PHP كود :
//Setup YourTNA...
  
Shell_NotifyIcon(NIM_ADD, @YourTNA); 
في نفس الإجراء.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم