سؤال

لقد قمت بإنشاء نوع أجمل مخصص يحتوي على خصائص إضافية من السلسلة من النوع، وتعداد.

تعرض قيمة السلسلة في غرامة مفتش الكائنات، ومع ذلك، فإن نوع التعداد لا يظهر على الإطلاق. كيف يمكنني الحصول على نوع التعداد المخصص لعرضه كقيمة خاصية منسدلة في مفتش الكائنات؟

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

المحلول

يجب أن تستخدم خصائص Enum فئة Tenumproperty الافتراضية لتحرير الخصائص.

يبدو أن معلومات RTTI لا يمكن العثور عليها. أين هو نوع المعمنة المحدد؟ في نفس الملف كمكون؟

وهل تستخدم نوع المعمنة مع قيم مخصصة مثل:

TMyEnum = (aA = 1, aB = 3);

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

type
  TMyEnum = 1..3;
const
  aA : TMyEnum = 1;
  aB : TMyEnum = 3;

يمكن أن يؤدي ذلك إلى حالات غريبة مثل: Succ (AA) ليس AB ولكن 2. المعلومات في المساعدة (دليل اللغة) أنواع بسيطة [الأنواع المستعملة مع العسمة المعينة بشكل صريح].

هذا يمكن أن يكون مصدر المشكلة.

إذا فشل كل شيء آخر، يمكنك إنشاء محرر الخاصية الخاص بك. والتي هي قادرة على تغيير خاصية ENUM في مفتش الكائنات. عادة سوف تكون قادرا على استخدام Tenumproperty الافتراضي. ولكن إذا لم يكن ذلك كافيا، فيمكنك تقويم خاصة بك:

الخطوة 1، تستمد محرر خاصية. في حالتك، ربما ستكون TenumProperty (Rostrometors) كافية مع التغييرات الصغيرة.

الخطوة 2، تأكد من أن أساليب GetValue و SetValue تعمل بشكل جيد. إنهم بحاجة إلى ترجمة سلسلة إلى خاصية Enum والظهر.

الخطوة 3، إذا كنت تريد التحرير الخاص الحقيقي تأكد من تجاوز طريقة التحرير.

الخطوة 4، تأكد من سمات EeDitor صالحة.

الخطوة 5، سجل محرر الممتلكات باستخدام RegisterPropertyEditor.

مجرد إلقاء نظرة على دليل كتاب المكونات لمزيد من المعلومات.

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