همونطور که از اسم Class Helper ها مشخصه راه حلی برای کمک به کلاس های موجود هستند ! یعنی چی ؟ یعنی به کمک اونها میتونید پراپرتی و متد به کلاس موجود اضافه کنید و کلاس موجود رو بدون درگیر شدن با مباحث وراثت توسعه بدید . مثلا کلاس TEdit رو در نظر بگیرید ؛ میخواهیم تابعی به این کلاس اضافه کنیم که بررسی کنه ببینه داخل متن وارد شده ( Text ) کارکتر عددی هست یا نه ، خوب این کار به راحتی با استفاده از Class Helper ها قابل پیاده سازی هست : [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 [/TD] [TD="class: code"]type TEditNumberCheckHelper = class Helper for TEdit public function IsNumericCharInText: Boolean; end; [/TD] [/TR] [/TABLE] در کد فوق Class Helper ی با نام TEditNumberCheckHelper برای کلاس TEdit تعریف شده که تابع IsNumericCharInText رو به کلاس TEdit اضافه میکنه . توجه کنید که نمیتونید شیئتون رو از کلاس TEditNumberCheckHelper مشتق کنید و بسازید ، TEditNumberCheckHelper یک Class Helper هست و تغییرات رو روی کلاس اصلی مورد نظر ما ( در اینجا TEdit ) اعمال میکنه و اون رو توسعه میده . پس با این توضیحات تمام کنترل های مشتق شده از TEdit دارای تابعی با نام IsNumericCharInText هستند ! حالا تابع IsNumericCharInText رو به صورت زیر تعریف میکنیم : [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 7 8 9 10 [/TD] [TD="class: code"]function TEditNumberCheckHelper.IsNumericCharInText: Boolean; var Ch: Char; begin Result := False; // Check text for numeric charecter for Ch in Text do if Ch in ['0' .. '9'] then Exit(True); end; [/TD] [/TR] [/TABLE] به همین سادگی ؛ حالا یک شئ Edit روی فرمتون بزارید و تو یک دکمه کد زیر رو بنویسید و نتیجه رو ببینید : [TABLE] [TR] [TD="class: gutter"]1 2 [/TD] [TD="class: code"]if Edit1.IsNumericCharInText then ShowMessage('The text contain numeric charecter'); [/TD] [/TR] [/TABLE] به همین شیوه میشه موارد مورد نیاز و یک بار مصرف رو بدون درگیر شدن با جزئیات و پیاده سازی های پیچیده و وراثت پیاده سازی کرد . در آخر دقت کنید که در Class Helper ها امکان تعریف فیلد وجود نداره و اگر تصمیم به این کار داشتید فیلد ها رو باید از نوع Class Var تعریف کنید : با این حساب کد زیر کامپایل نخواهد شد : [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 [/TD] [TD="class: code"]type TEditNumberCheckHelper = class Helper for TEdit public fField: Boolean; function IsNumericCharInText: Boolean; end; [/TD] [/TR] [/TABLE] و راه حل : [TABLE] [TR] [TD="class: gutter"]1 2 3 4 5 6 [/TD] [TD="class: code"]type TEditNumberCheckHelper = class Helper for TEdit public class var fField: Boolean; function IsNumericCharInText: Boolean; end; [/TD] [/TR] [/TABLE] در ضمن با استفاده از Class Helper ها میتونید رفتار Property ها و متدهای موجود در کلاس پایه مورد نظر رو هم تغییر بدید .