سؤال

في شاشة إدخال البيانات الرئيسية، لدينا مربع حوار موافق/إلغاء في حدث OnBeforePost.

  • نعم يترك الأمور تأخذ مجراها
  • يلغي الآن يفعل Dataset.Cancel;

وهو ما يؤدي الغرض المقصود منه، وهو التراجع عن أي تغييرات ووضع مجموعة البيانات في وضع التصفح.

يعد هذا أمرًا جيدًا بالنسبة لمعظم العملاء، ولكن تم سؤالنا عما إذا كان من الممكن تغييره إلى

  • يلغي, قم بإلغاء النشر والبقاء في وضع التحرير مع الاحتفاظ بالتغييرات الحالية.

إذا أرادوا الإلغاء، يمكنهم استخدام زر الإلغاء.

النظر في المصدر ل procedure TDataSet.Post; لا يبدو من الممكن استخدام الحدث بهذه الطريقة.

هل لدى أي شخص أي أفكار حول طريقة يمكن القيام بها؟

متابعة:هذه هي الطريقة التي اخترت التعامل معها الآن

case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
  mrYes: ;
  mrNo: Dataset.Cancel;
  mrAbort: Abort;
  mrNone: Abort;
end;
هل كانت مفيدة؟

المحلول

استدعاء الطريقة Abort (من الوحدة System, ، إذا كنت أتذكر بشكل صحيح) يثير الصمت EAbort الاستثناء الذي يلغي العملية الحالية فقط.التي يجب أن تعمل.

(بالمناسبة:تم أيضًا وصف طريقة إلغاء عملية قاعدة البيانات هذه في مكان ما في نظام المساعدة باعتبارها الطريقة "العادية" لتحقيق ذلك --- ومن هنا حصلت على هذه التقنية في الأصل).

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