إجراء لتأكيد إغلاق برنامج
#1
السلام عليكم
قديماً في في بي 6 كنت أكتب هذا الإجراء لتأكيد إغلاق برنامج
كود :
dim x x = msgbox(" Do YOU Want To Close?","End",vbyesno) if x = vbyes then end else exit sub
و لكني أقوم بترجمة هذا الكود إلى باسكال بدون الأمر الذي يساوي الأمر exit sub و الذي يعني إنهاء الإجراء كأنه لم ينفذ
و فعلاً لا يتم إغلاق البرنامج و لكن الذي يحدث أنه يظل محجوز في الذاكرة و لا تظهر النوافذ
جربت الأمر .refresh; للنوافذ لم يفلح فما هو الحل ؟
و شكراً
الرد
#2
يبدو أيضاً أن فيجوال بيسك كانت تريحني كثيرا في فهم كا ما يتعلق بالذاكرة و لكن لا بأس لأنني أجد دلفي في سهولتها تتيح لي التعامل بحرية
الحل:
ما كنت أقصده إذا قام المستخدم بالضغط على x فإن صندوق حواري سيظهر له طالباً منه إغلاق البرنامج و لكن كان الإجراء الخاص بي ناقصاً و يجب أن يكون كالتالي
PHP كود :
procedure Tfrmmain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var 
x : longint ;
begin

  x 
:= messagedlg('do you want to close ',mtconfirmation,[mbyes,mbno],0);
   if 
x = mryes then
    application
.terminate
   
else
    
closeaction := CaNone;

   
end ; 
الكود السابق في بيئة التطوير لازاراس
أما في دلفي يتم تغيير
closeaction := canone;
ب
;action := canone
الرد
#3
وعليكم السلام ورحمة الله
ضع TBitBtn واضبط Kind على bkClose، في OnCloseQuery
PHP كود :
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose 
:= MessageDlg('Do you want to close ', mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end; 
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#4
السلام عليكم ورحمة الله

اما انا دائما استعمل هذا
في OnCloseQuery

إقتباس :canclose:=False;
if MessageDlg('are you sure?',mtWarning,mbYesNo,0)=mrYes then Application.Terminate;
لأستهلنّ الصعب أو أدرك المنى    فما انقادت الآمال إلاّ لصابر
الرد


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


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