طلب غريب بعض الشيء . وغير مألوف . بكل الاحول هذا اقرب واسهل ما يمكن عمله
تعتمد الفكرة على الحصول على رسالة WMNCActivate من النظام . وهي ترسل في حال تم تغير في الـ activate للنوافذ.
في نافذة modul form :
type
mform = class(tform)
.
.
protected
procedure WMNCActivate(var Message: TWMNCActivate); message WM_NCACTIVATE;
.
.
end;
في implementation
procedure TForm2.WMNCActivate(var Message: TWMNCActivate);
begin
EnableWindow(form1.Handle, true); // تمكين النافذة الرئيسية form1 قبل الاغلاق لمنع الصوت المزعج
modalresult := mrOK; // اغلاق النافذة بإعادة قيمة ـ استبدلها ما تريد. او اغلقها بـ close
inherited; // هذه للتاكد من اتمام الاجراءات المتعلق بالرسالة wmncActivate إن وجد تتمة
end;
ملاحظة هامة : هذه طريقة لا تصلح اذا كان هناك رسائل messageBox ستظهر من النافذة module . لانها متعمدة على تفعيل النافذة وظهور مثل هذه الرسائل سؤدي إلى تغير في الـ actvate وحدوث اشياء غير متوقعة .