پکیج و کامپوننت
------------------
تعریف:
یک کامپوننت چیزی جز یک شی از کلاس TComponent یا زیرکلاسهای اون نیست. این اشیا دارای خصوصیاتی هستند که در برنامه نویسی دلفی خیلی کاربرد پیدا می کنند، از جمله این خصوصیات، قرار گرفتن اونها روی فرم یا دیتاماژول و درنتیجه اضافه شدن کد ساخت اونها به فایل DFM همنام هست. خصوصیت مهم دیگه آوردن برخی خصوصیات اونها در لیست Object Inspector است و در نتیجه تنظیم آسان و کاربرد راحت اونهاست. شما می تونید لیستی از تعریف کامپوننتها رو در قالب یک Package ذخیره کنید و اون رو انتقال بدید تا یکی دیگه اونها رو نصب کنه و استفاده کنه. بعد از نصب پکیج اونها در یک یا چند Tab در IDE ظاهر خواهند شد.
می تونید لیستی از کامپوننتهای استفاده شده رو از طریق خصوصیت Components ببینید.
توجه:
خصوصیات Components و Controls رفتار های متفاوتی دارند. برای تست می تونید یک ادیت درون یک پنل بگذارید و ببینید. Components برای فرم تمام کامپوننتهای بکار رفته در فرم رو در اختیار شما قرار می ده. یعنی اون ادیت رو هم حساب می کنه اما Controls درختی نیست و فقط کامپوننت هایی از نوع کنترل رو اون هم در شاخه ی اصلی درخت کامپوننت ها براتون در دسترس قرار می ده.
ببینید:
var
i: integer;
begin
for i := 0 to ComponentCount -1 do
ShowMessage(Components[i].Name);
for i := 0 to ControlCount -1 do
ShowMessage(Controls[i].Name);
end;
برای پیمایش کنترل ها باید درخت رو پیمایش کنید (با یکی از روشهای پیمایش، معمولا بازگشتی) پس حواستون باشه اگر قصد داشتید تمام اشیای یک فرم رو ببینید باید این نکته رو مد نظر داشته باشید.
تصویر بکار رفته برای کامپوننتی که شما می نویسید اگر به طور مستقیم اشاره نشه، از اولین آیکون پدر خواهد بود و اگر کلاس پدر هم آیکونی نداشت یک آیکون پیش فرض به اون اختصاص پیدا می کنه.
هر پکیج می باید فایل های سورس کامپوننت ها رو در خودش معرفی کنه. اگر لازمه ریسورس های بکار رفته رو هم معرفی کنه. معمولا این ریسورس ها همنام با فایل Pas معرفی شده هستند با پسوند DCR.
بعد از کامپایل موفقیت آمیز یک پکیج در شاخه ای از برنامه که از قبل Set شده یک فایل هم نام با پکیج با پسوند BPL ایجاد خواهد شد که برای نصب بکار می ره. این مسیر برای دلفی 7 آدرس C:\Program Files\Borland\Delphi7\Projects\Bpl و برای XE آدرس C:\Users\Public\Documents\RAD Studio\8.0\Bpl است. (الیته روی سیستم من!)
طریقه ی استفاده از این فایل معمولا به صورتی هست که دیگه نیازی به گذاشتنش کنار برنامه ندارید. الیته می تونید با عوض کردن تنظیمات کاری کنید که به جای ورود کدها به EXE اون رو همراه برنامه منتشر کنید.
می تونید کاری کنید که پکیج شما فقط در یکی از زمانهای کامپایل یا ران تایم استفاده بشه.
فایل های BPL نوع خاصی از فایل های کتابخانه ای هستند که مثل اکتیواکس ها در زمان کامپایل و طراحی هم مواردی رو در دسترس قرار می دن.
شما اجباری به پکیج کردن کامپوننتهای نوشته شدتون ندارید اما در این صورت باید اونها رو مثل کلاس های معمولی استفاده کنید و کد ساختشون رو دستی بنویسید.
نکته: در صورتی که در کامپوننت نوشته شدتون از کامپوننتهای دیگه ای استفاده کرده باشید بعد از نصب اون کامپوننت و استفاده از اون، کل شی گرفته شده از کامپوننت شما در شمارش، یک کامپوننت محسوب خواهد شد.