الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن الغاء (alt+F4) عندما نريد إغلاق البرنامج من شرريط المهام

بدأه أحمد_ليبيا في 28 مارس 2010 · 5 رد · 1,045 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

- السلام عليكم

- كما بالصورة في المرفقات , كيف يمكن تعطيل امر (Alt+F4) والتي تظهر عندما نقوم بالضغظ بزر الماوس الايمن على شريط المهام للبرنامج..!؟

- والسلام عليكم

post-60406-12697418737199_thumb.jpg

moslimbag8.gif

------

saaid.jpg

#2

السلام عليكم...

يمكنك تعطيل الأمر في القائمة (حسب Windows XP) بالكود التالي، لكن ذلك لا يمنع إغلاق البرنامج باستعمال المفاتيح Alt+F4.

لتعطيل الأمر Close اكتب الكود التالي في الإجراء OnCreate للنافذة الرئيسية:

procedure TFRtlForm1.FormCreate(Sender: TObject);
var
    hSysM: HMENU;
begin
    hSysM := GetSystemMenu(Application.Handle, False);
    ModifyMenu(hSysM, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED, SC_CLOSE, 'Close');
end;

ربما يحتاج الأمر إلى تعديل معالج الرسائل (Message Handler).

لكن هناك حيلة لتنفيذ الأمر:

قم بالتصريح عن متغير من النوع Boolean، مثلاً:

var
    AllowClose: Boolean;

في الإجراء OnCreate للنافذة الرئيسية أضف السطر التالي للسطرين السابقين:

    AllowClose := False;

في الإجراء OnCloseQuery للنافذة الرئيسية اكتب السطر التالي:

    CanClose := AllowClose;

يجب أن يكون لديك زر لإغلاق البرنامج، و يكون الكود فيه كالتالي:

    AllowClose := True;
    Close;

أي يجب ضبط المتغير AllowClose على True للسماح بإغلاق النافذة الرئيسية، و بالتالي إغلاق البرنامج.

نرجو الاستفادة و السلام.

1

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

- بارك الله فيك على الشرح المفيد والبسيط .. زجزالك الله خيراً

- بالله لدي سؤال عن (CanClose := AllowClose;) هل ...CanClose .. متغير هنا ..؟

moslimbag8.gif

------

saaid.jpg

#4

السلام عليكم...

CanClose هو بارامتر في إجراء الحدث OnCloseQuery لأي Form و هو بارامتر متغير var، أي يمكنك تغيير قيمته داخل الإجراء. قيمته الافتراضية هي True أي السماح بإغلاق النافذة. إذا غيرناه داخل الإجراء إلى False فإن النافذة ترفض أن تغلق.

procedure TFMDIWindow.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

غالباً ما نستخدم هذا الإجراء OnCloseQuery لتأكيد الخروج من البرنامج في النافذة الرئيسية: نعرض على المستخدم رسالة تأكيد خروج، و إذا أجاب بـ "لا" فإننا نضبط البارامتر CanClose على False فتبقى النافذة و لا تغلق.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#5

يعطيك العافية ويجزيك كل خير

#6

بارك الله فيك اخوي وجزالك الله خيرا ... ومشكور جدا ...........*_^

moslimbag8.gif

------

saaid.jpg

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…