PDA

View Full Version : حرفه ای: ساخت کلاس در حالت ران تایم



یوسف زالی
دوشنبه 18 آذر 1392, 13:19 عصر
سلام.
دوستان کسی از شما تا به حال تجربه ی ساخت کلاس ها رو در زمان اجرا داشته؟
آیا می شه نام کلاس رو هم "پس از ساخت" عوض کرد؟
آیا می شه متد استاتیک یک کلاس رو بدون اشتقاق مجدد از اون کلاس تحریف کرد؟

با تشکر. مرد همیشه بی جواب!

BORHAN TEC
دوشنبه 18 آذر 1392, 15:01 عصر
سلام

دوستان کسی از شما تا به حال تجربه ی ساخت کلاس ها رو در زمان اجرا داشته؟
نه! :لبخند:

آیا می شه نام کلاس رو هم "پس از ساخت" عوض کرد؟
نام کلاس رو نمیشه عوض کرد. مگر اینکه با یک اسکریپت و با استفاده از ابزاری مثل PAX یک کلاس از اون کلاس مشتق کنی و نام دیگه ای بهش انتساب بدی و ازش استفاده کنی. برای چنین کاری تقریباً باید کل راهنمای PAX رو بخونی! من که متوجه نمیشم که هدفت از این کار چی هست. به نظر من که بی معنیه ولی خوشحال می شم که بدونم چرا می خوای این کار رو انجام بدی؟! :گیج:

آیا می شه متد استاتیک یک کلاس رو بدون اشتقاق مجدد از اون کلاس تحریف کرد؟
آره میشه. برای این کار باید از Class Helper ها استفاده کنی. دقیقاً یادم نیست که این قابلیت از چه زمانی به دلفی اضافه شده ولی اگه اشتباه نکنم از زمان XE3 بوده. برای این که روش کار رو متوجه بشی یه کد نمونه نوشتم:
type
TBase = class
public
class procedure msg;
end;

TBaseHelper = class helper for TBase
public
class procedure msg;
end;

implementation

{$R *.dfm}
{ TBase }

class procedure TBase.msg;
begin
ShowMessage('Message 1');
end;

{ TBaseHelper }

class procedure TBaseHelper.msg;
begin
ShowMessage('Message 2');
end;

procedure TForm4.Button1Click(Sender: TObject);
var
Base: TBase;
begin
Base := TBase.Create;
try
Base.msg;
finally
Base.Free
end;
end;

end.

با تشکر. مرد همیشه بی جواب!
:گریه:

یا حق...

یوسف زالی
دوشنبه 18 آذر 1392, 15:44 عصر
rolex عزیز ممنون که جواب دادی و زحمت کشیدی.
استفاده از کلاس هلپر یجورایی مخفی کردن متدهای بالاسریه. یک اشتقاق نصفه نیمه هست اما درسته و جواب می ده.

داستان استفاده اینه:

کامپوننتی ساختم برای فرمول نویسی بصورت ران تایم. این کامپوننت شبیه فست ریپورت کار می کنه. خودش درش کلاس رجیستر می شه و در زمان اجرا از روی اون کلاس ها آبجکت می سازه، ترتیب این کلاس ها توسط یک PopupMenu که برنامه نویس روی فرم می ذاره انتساب داده می شن.


دیدی تو فست ریپورت مثلا ممو داره لیبل داره عکس داره...
و می تونی کامپوننت اضافه کم کنی، یا حتی خود دلفی هم همین طوره،
من کامپوننتی نوشتم که توش این "کلاس ها" اضافه می شن و کاربر با توجه به کلاس هایی که در دسترس داره، در اینجا مثل کالا ها و مشتری ها، به هر ترتیب و تعداد توی کامپوننت می چینه و کامپوننت براش معادل فرمولی می سازه و ذخیره می کنه و محاسبات و این داستان ها. معادل فارسی می سازه، از روی متن اشیا رو می سازه، Evaluate می کنه، ایراد سینتکس و منطقی می گیره و ...

می خواستم کلک رشتی بزنم کلاس ها رو هم ران تایم اد کنم!! نشد.
توضیح بیشتری متاسفانه نمی تونم بدم. اگر لازم باشه خصوصی عرض می کنم.

BORHAN TEC
دوشنبه 18 آذر 1392, 16:05 عصر
دیدی تو فست ریپورت مثلا ممو داره لیبل داره عکس داره...
و می تونی کامپوننت اضافه کم کنی، یا حتی خود دلفی هم همین طوره،
یا TMS Script Studio

معادل فارسی می سازه، از روی متن اشیا رو می سازه، Evaluate می کنه، ایراد سینتکس و منطقی می گیره و ...
این قسمت رو متوجه نشدم. یعنی هدفت اینه که به کاربر این اجازه رو بدی که قسمتهایی از برنامه رو خودش بسازه؟! :متفکر: به نظرم بیا الان یه چت و چوتی انجام بدیم تا بفهمم دقیقاً چی می خوای.
delphiman68@gmail.com

یوسف زالی
دوشنبه 18 آذر 1392, 16:12 عصر
اوکی......