delphi4arab منتديات دلفي للعرب
كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... (/showthread.php?tid=324)



كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... - الأمير - 12-12-2008

كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف نجعل له قائمة منسدلة بالضغط بزر الفأرة الأيمن
كما هو الأمر في برنامج الكاسبر و غيره من البرامج .........
بصراحة أحتاج لهذه الخاصية جداً


كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... - STRELiTZIA - 13-12-2008

السلام عليكم و رحمة الله

PHP كود :
uses ShellAPI; 

PHP كود :
procedure TMain.SetBtnClick(Sender: TObject);
var
  
SystrayIcon: TNotifyIconData;
begin

  Main
.Visible := False;

  
SystrayIcon.cbSize := SizeOf(SystrayIcon);
  
SystrayIcon.Wnd := Main.handle;
  
SystrayIcon.uID := 1;
  
SystrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
  
SystrayIcon.uCallbackMessage := WM_MOUSEMOVE;
  
SystrayIcon.hIcon := Application.Icon.Handle;
  
SystrayIcon.szTip := 'Sample Systray'#13'www.delphi4arab.net'#13''#13'STRELiTZIA | AT4RE';
  
Shell_NotifyIcon(NIM_ADD, @SystrayIcon);
end; 

PHP كود :
procedure TMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  
Y: Integer);
var
  
Pos: TPoint;
begin
  GetCursorPos
(Pos);
  if 
X = WM_RBUTTONUP then
    PopupMenu
.Popup(Pos.X, Pos.Y);
end; 

بالتوفيق ان شاء الله


كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... - الأمير - 23-12-2008

و شكراً جزيلاً لأني كنت في غاية الحاجة لهالكود
و أنت أعطيتني اللي بدي ياه بالضبط
سيد STRELiTZIA شكراً اً اً اً اً ................


كيف نجعل أيقونة البرنامج بجانب الساعة , و كيف ... - kachwahed - 04-01-2009

هذا الكود يرجع رسالة خطأ access violation.
كما أنه ينبغي أن يحرر المكون عند الخروج من البرنامج حتى تختفي الإيقونة، وإذا أردت أن تستعمل ذاك كود عليك إضافة يلي:
أولا: لا بد من إضافة ShellAPI الى القائمة uses التي في الأعلى (تحت interface).
ثانيا: تعريف المكون SystrayIcon: TNotifyIconData فوق implementation حتى يُتوصل إليه من جميع الإجراءات.
ثالثا: عليك تحرير المكون عند إنتهاء البرنامج حتى تختفي الإيقونة، باستعمال الكود:
كود :
procedure TMain.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @SystrayIcon); end;
كنت طورت بالأمس كود يعرض إيقونة بجنب ساعة المكتب، ويضيف إليها قائمة PopupMenu بثلاث أوامر (Afficher لعرف النافذة، Masquer لإخفائها، Quitter لغلق البرنامج)، عند تصغير النافذة تختفي من شريط المهام لتخزن في الإيقونة، ويمكن من خلاله إضافة أحداث للأيقونة (النقر بزر اليمين أو اليسار، النقر المزدوج، تمرير الماوس...)، وإليكم الكود سورس:
كود :
uses ShellApi; ... private procedure WMTaskMsg(var Msg: TMessage); message WM_APP + 100; procedure WMSysCommand(var msg: TWMSysCommand); message WM_SysCommand; ... var MyTNA: TNotifyIconData; ... procedure TForm1.WMSysCommand(var msg: TWMSysCommand); begin if msg.CmdType and $FFF0 = SC_MINIMIZE then Masquer1.Click else inherited; end; procedure TForm1.FormCreate(Sender: TObject); begin with MyTNA do begin cbSize := SizeOf(MyTNA); Wnd := Handle; uID := UINT(Self); uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP; uCallbackMessage := WM_APP + 100;{WM_USER + 1;//Pour défini par l'utilisateur: WM_USER + $7258;} hIcon := Application.Icon.Handle; {Utiliser LoadIcon(HInstance, 'xxx') pour une icone dans les rescources} szTip := 'Hint sur l''icône'; end; Shell_NotifyIcon(NIM_ADD,@MyTNA);//Application.ShowMainForm := False; end; procedure TForm1.WMTaskMsg(var Msg: TMessage); var CursorPoint: TPoint; begin if Msg.WParam = MyTNA.uID then case Msg.LParam of WM_LBUTTONDOWN: Masquer1.Click;//Bouton gauche click WM_RBUTTONDOWN://Bouton droite click begin GetCursorPos(CursorPoint); PopupMenu1.Popup(CursorPoint.X,CursorPoint.Y); end; WM_LBUTTONDBLCLK: Afficher1.Click; //Double click bouton gauche click end; end; procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE,@MyTNA); end; procedure TForm1.Afficher1Click(Sender: TObject); var HndOwner: THandle; begin //Afficher la fenêtre Form1 SendMessage(Self.Handle, WM_SYSCOMMAND, SC_RESTORE, 0); ShowWindow(Self.Handle, SW_SHOW); SetForegroundWindow(Self.Handle); //Afficher dans la barre des tâches HndOwner := GetWindow(Self.Handle, GW_OWNER); SendMessage(HndOwner, WM_SYSCOMMAND, SC_RESTORE, 0); ShowWindow(HndOwner, SW_SHOW); end; procedure TForm1.Masquer1Click(Sender: TObject); begin ShowWindow(Self.Handle, SW_HIDE);//Masquer Form1 ShowWindow(GetWindow(Self.Handle, GW_OWNER), SW_HIDE);//Masquer du TaskBar end; procedure TForm1.Quitter1Click(Sender: TObject); begin Close; end;