المشاركات : 239
المواضيع 77
:
: 11
الإنتساب : May 2011
السلام عليكم
قديماً في في بي 6 كنت أكتب هذا الإجراء لتأكيد إغلاق برنامج
كود :
dim x
x = msgbox(" Do YOU Want To Close?","End",vbyesno)
if x = vbyes then
end
else
exit sub
و لكني أقوم بترجمة هذا الكود إلى باسكال بدون الأمر الذي يساوي الأمر exit sub و الذي يعني إنهاء الإجراء كأنه لم ينفذ
و فعلاً لا يتم إغلاق البرنامج و لكن الذي يحدث أنه يظل محجوز في الذاكرة و لا تظهر النوافذ
جربت الأمر .refresh; للنوافذ لم يفلح فما هو الحل ؟
و شكراً
المشاركات : 239
المواضيع 77
:
: 11
الإنتساب : May 2011
يبدو أيضاً أن فيجوال بيسك كانت تريحني كثيرا في فهم كا ما يتعلق بالذاكرة و لكن لا بأس لأنني أجد دلفي في سهولتها تتيح لي التعامل بحرية
الحل:
ما كنت أقصده إذا قام المستخدم بالضغط على 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
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله
ضع 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;
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
المشاركات : 553
المواضيع 49
:
: 296
الإنتساب : Dec 2008
السلام عليكم ورحمة الله
اما انا دائما استعمل هذا
في OnCloseQuery
إقتباس :canclose:=False;
if MessageDlg('are you sure?',mtWarning,mbYesNo,0)=mrYes then Application.Terminate;
لأستهلنّ الصعب أو أدرك المنى فما انقادت الآمال إلاّ لصابر