مثال على الكود: هل تعرف دلفي جيدًا حقًا؟
PROcedure StepEditor( strgrid: TStringGrid; Step: TStep );
فار
sValue، sField: سلسلة؛
فئة المحرر: TStepEditorClass;
المحرر: TStepEditor؛
يبدأ
sField := strgrid.Cells[0, strgrid.Selection.Top];
sValue := strgrid.Cells[1, strgrid.Selection.Top];
EditorClass := EditorClassList.Editors[ sField ];
المحرر := EditorClass.Create;
Editor.Field := sField;
Editor.Step := الخطوة;
Editor.Edit(sValue);
محرر.مجاني؛
strgrid.Cells[ 1, strgrid.Selection.Top] := sValue;
نهاية؛
EditorClass عبارة عن فئة من الفئات، أي فئة من الفئات
على سبيل المثال
TFormClass = فئة TForm؛
لكنه يختلف عن: TFormClass = Class(TForm); هذان مفهومان!
يقوم EditorClassList بتخزين قائمة الفئات؛
المحرر := EditorClass.Create;
الإنشاء هو أسلوب فئة، وليس أسلوب كائن، لذلك يمكن إنشاء مثيل EditorClass من EditorClass
تجديد:
TStepEditor = الفئة (TObject)
...
نهاية؛
TStepEditorClass = فئة TStepEditor؛
لماذا يمكن لـ Object Inspector توفير بيئة تحرير مناسبة؟
لماذا تحتوي الحقول المختلفة على قيم مختلفة للاختيار وطرق تحقق مختلفة ومربعات تحرير منبثقة؟
لا نفس الشيء؟ لأنه يتم تسجيل محرري الخصائص المختلفين وفقًا لأنواع الحقول المختلفة؛
يمكن وصف تبسيط وظيفة تسجيل محرر الخصائص التي توفرها دلفي على النحو التالي:
RegisteryPropertyEditor( PropertyFieldType, EditorClass );
^ هنا هو اسم النوع، مثل Bool، Integer، ...إلخ.
^ هنا هو اسم الفئة للمحرر المقابل، لاحظ أنه ليس وصف الحرف لاسم الفئة.
عند التشغيل فعليًا، عندما يقوم المستخدم بالنقر فوق حقل في Object Inspector،
تبحث دلفي داخليًا عن فئة المحرر المقابلة لنوع الحقل ثم تقوم بإنشاء مثيل للفئة من الفئة التي تم العثور عليها؛
تنفيذ العمليات ذات الصلة (تحديد ما إذا كان هناك مربع منسدل، أو ما إذا كان هناك زر، وما إلى ذلك)
المزيد من المقالات