كيف يمكنني اكتشاف ما إذا كان تطبيق دلفي الخاص بي يحتوي حاليًا على نافذة مشروطة؟

StackOverflow https://stackoverflow.com/questions/284581

  •  08-07-2019
  •  | 
  •  

سؤال

لدي مؤقت قيد التشغيل في تطبيق Delphi MDI الخاص بي وأرغب في استخدامه لإظهار رسالة منبثقة إذا تغير شيء ما في الخلفية.لكنني لا أريد أن تظهر هذه الرسالة عندما يكون لدى التطبيق مربع حوار مشروط في المقدمة لأن المستخدم لا يمكنه فعل أي شيء حيال ذلك.

إذن ما أود معرفته هو كيف يمكنني التحقق من وجود مربع حوار مشروط في طلبي؟

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

المحلول

هل يمكن أن تحاول مع هذا الرمز:

var
  ActForm: TCustomForm;
begin
  ActForm := Screen.ActiveForm;
  if (ActForm = nil) or not (fsModal in ActForm.FormState) then begin

  end;
end;

واختبرت مع دلفي 4، يعمل بالنسبة لي.

[تحرير]: ولكن يجب أن نفكر حقا حول ما إذا ظهرت على شكل وسرقة التركيز هو فكرة جيدة. ذلك يعتمد على التطبيق الخاص بك، ولكن إذا كان المستخدم يدخل حاليا شيء في حقل تحرير، أو يفعل شيئا مع الماوس، ثم وهذا قد كسر سير العمل.

نصائح أخرى

ومنذ دلفي 2005 لديك ModalLevel الملكية على TApplication. ذلك بحساب عدد الأشكال مشروط فتح في التطبيق.

ربما يكون الحل هو إظهار تلميح لا يسرق التركيز.تلميح قابل للنقر عليه في مكان ما، ولكنه ليس غزويًا للغاية.وبالتالي، إذا أراد المستخدم اتخاذ إجراء يمكنه ذلك، أو يمكنه إنهاء ما كان يفعله، فاتخذ الإجراء.أو ربما تجاهلها تماما.

يستخدم AnyPopup() وظيفة

عن GetLastActivePopup().قد تُرجع قيمة هي نفس المعلمة hWnd متى

  • كانت النافذة التي تم تحديدها بواسطة hWnd نشطة مؤخرًا.
  • النافذة التي تم تحديدها بواسطة hWnd لا تمتلك أي نوافذ منبثقة.
  • النافذة التي يتم تعريفها بواسطة hWnd ليست نافذة المستوى الأعلى، أو أنها مملوكة لنافذة أخرى.

histrio أجاب بشكل صحيح في <لأ href = "https://stackoverflow.com/questions/3306260/ دلفي للكشف عن-إذا-بي-التطبيق-لديها واحد الوسائط-الحوار مفتوحة "> موضوع آخر أن مجرد رصد أشكال دلفي الوسائط ليست كافية. نوافذ يمكن أن يكون أيضا مربعات حوار مشروط.

الإجابة في موضوع آخر يظهر الذي كيفية التحقق من ذلك.

و- يروين

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