سؤال

وMESSAGEBOX (مقبض،؟ هل تريد حقا للخروج '،' هل أنت متأكد؟ '، 1)؛

وفي هذا الزر هناك نوعان من الأشياء، ما يمكن للمستخدم القيام به. طيب وإلغاء. رمز ما يمكنني أن تكتب، أن الزر إغلاق البرنامج في "موافق" وينتهي الحوار، عند الضغط على إلغاء؟

هل كانت مفيدة؟

المحلول

يوفر

ودلفي أفضل الحلول لتظهر MESSAGEBOX. وأود أن استخدام وظيفة MessageDlg. القيمة المرجعة من الدالة MessageDlg (وMESSAGEBOX) يشير إلى اختيار المستخدمين. لذلك كنت عند وضع زر نعم على MessageDlg، ستكون قيمة الإرجاع mrYes عندما يضغط المستخدم على زر نعم. لذا التعليمات البرمجية سيكون مثل هذا:

var
  ShouldClose: Boolean;
begin
  if MessageDlg('Do you really want to quit?', mtConfirmation, 
      [mbYes, mbNo], 0) = mrYes then
    ShouldClose := True
  else
    ShouldClose := False;
end;

وتحتاج أيضا إلى إغلاق التطبيق الخاص بك إذا المستخدمين يختار نعم. عندما يكون لديك تطبيق دلفي VCL العادي يمكنك تنفيذ الحدث CloseQuery منكم mainform، يتم تنفيذ الحدث CloseQuery عند محاولة إغلاق mainform الخاص بك (مثل النقر على closebutton)، ولها CanClose متغير. وضع CanClose إلى True يعني MainForm هو موافق لإغلاق، ووضع لها كاذبة من شأنها منع mainform بك من إغلاق:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := MessageDlg('Do you really want to quit?', mtConfirmation, 
    [mbYes, mbNo], 0) = mrYes;
end;

نصائح أخرى

أولا، تأكد من أن الأزرار في مربع الرسالة تطابق النص. حتى إذا كان النص هو "هل تريد حقا للخروج؟" ثم الأزرار يجب أن يكون "نعم" و "لا".

وثانيا، استخدام الثوابت المناسبة، بحيث التعليمات البرمجية أسهل للقراءة في وقت لاحق. ومن شأن ذلك أن يكون:

var
  Res: integer;

Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
  MB_ICONQUESTION or MB_YESNO);

وكانت النتيجة بعد ذلك سوف يكون إما IDYES أو IDNO. حتى على افتراض أن المكالمة داخل طريقة النموذج الرئيسي، فإن استخدامه مثل:

if Res = IDYES then
  Close;

إذا نسمي هذا من مكان آخر، هل يمكن أن ندعو أيضا

if Res = IDYES then
  Application.Terminate;

تعديل: يرجى التحقق أيضا إلى ويندوز فيستا العضو إرشادات و inteface على مربعات الحوار التي تنص على:

<اقتباس فقرة>   

وتأكيدات غير الضرورية مزعج

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top