سؤال

عندما أضع عنصر تحكم TRibbon في نموذج ليس النموذج الرئيسي للتطبيق ، فإن إجراءات TRibbon (مثل القص واللصق) ستعيد التركيز دائمًا إلى النموذج الرئيسي بعد تنفيذ الإجراء.

يحدث هذا حتى إذا لم يكن TForm الذي يحمل TRibbon تابعًا للنموذج الرئيسي.

أنا أستخدم Windows 7 64 بت ، إصدار Embarcadero RAD Studio XE 15.0.3953.35171.

هل أستخدم عنصر تحكم TRibbon بشكل غير صحيح ، أم أن هذه مشكلة في TRibbon؟

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

المحلول

من الواضح أن هذا عن طريق التصميم. عينة مقتطف رمز من "ribbonactnctrls.pas":

Genacodicetagpre

كما ترى ، لا توجد شروط تم فحصها من شأنها أن تساعدنا في تجنب المكالمة. يوجد نفس الرمز أيضًا في تحديد عناصر القائمة ومعالجات الضغط على المفاتيح.


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

كبديل ، يمكنك استعادة التركيز مرة أخرى إلى النموذج الخاص بك بعد أن يتم تحويله إلى النموذج الرئيسي. لنفترض أن "ActionList1" هي قائمة TActionList التي تحتوي على إجراءات قياسية في النموذج الرئيسي ليس : Genacodicetagpre

ومع ذلك ، سيؤدي هذا إلى وميض النموذج الرئيسي لفترة وجيزة في كل مرة يتم فيها تنفيذ إجراء. إذا كنت لا تريد ذلك ، يمكنك تغيير التصميم بحيث يعرف الشكل الرئيسي متى يحصل على تركيز غير مرغوب فيه ، وتزيف أنه غير مركّز.

في الوحدة 1:

Genacodicetagpre

في الوحدة 2:

Genacodicetagpre


ومع ذلك ، هذا لا يكفي إذا لم يكن لديك "MainFormOnTaskBar" معين في مصدر المشروع ، حيث لن يكتسب النموذج الرئيسي التركيز فحسب ، بل سيتم عرضه في المقدمة. في هذه الحالة ، يمكن أن يستجيب كلا النموذجين لتغيير / تنشيط التركيز غير المرغوب فيه عن طريق تجميد أوامر z الخاصة بهم. سيصبح الرمز بعد ذلك للوحدة 1:

Genacodicetagpre

وللوحدة 2:

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