نقل قول: تعریف یک رویداد در کلاس
با سلام
عذر خواهی می کنم بابت اینکه این تاپیک رو زنده کردن
لطفا درمورد تعریف و استفاده از رویدادها بیشتر توضیح بدید
و
اینکه نوع کلاسی که تعریف میکنیم با اضافه شدن رویداد به اون کلاس تغییر میکنه یا نه؟
مثلا :
TMyClass = class(TCustomControl)
نوع کلاسمونه آیا موقعی که میخوایم از رویداد در این کلاس استفاده کنیم باید نوع اون رو عوض کنیم ؟
مثلا :
TMyClass = class(TWinControl)
یا
TMyClass = class(TComponent)
با تشکر:لبخندساده:
نقل قول: تعریف یک رویداد در کلاس
کسی از دوستان میتونه راهنمایی کنه؟؟؟؟؟؟ لطفا:ناراحت:
نقل قول: تعریف یک رویداد در کلاس
سلام.
برای این که در یک کلاسی که تعریف شده، یک رویداد اضافه کنید، می باید یک کلاس از اون مشتق کنید و در اون زیر کلاس کارهاتون رو اضافه کنید. در حالت کلی درست نیست که کلاس پدر رو دستکاری کنید.
کلا راههای زیر برای تغییر یک کلاس وجود داره:
1- استفاده از زیر کلاس مشتق شده از کلاس مبدا
2- تغییر در سورس کلاس پدر و اضافه کردن رویداد (توصیه نمی شه)
3- هــــک کردن کلاس پدر در یک یونیت
4- استفاده از Class Helper ها
باید ببینید که در کجا دارید چه کار می کنید، کلاس مبدا شما چی هست و سایر موارد.
رویدادی که دارید اضافه می کنید هم مهمه. معمولا رویداد ها در کلاس های بالاتر وجود دارند.
کاری که دارید انجام می دید دقیقا چیه؟
نقل قول: تعریف یک رویداد در کلاس
ممنون از جوابتون
دارم روی این موضوع
که در مورد بهترین روش برای ساخت یک پرسشنامه بود یک کلاس می نویسم
می خوام برای یک لیبل و دکمه توی کلاسم رویداد کلیک بذارم و توی اون کد بنویسم که بعد از کلیک کردن اون کد اجرا بشه
ولی با مطالب توی سایت نتونستم چیزی متوجه بشم
اگه بتونید یک مثال در این مورد بزنید ممنون میشم:لبخندساده:
نقل قول: تعریف یک رویداد در کلاس
شما رویدادی رو به کلاس اضافه نمی کنید. دارید برای یکی از رویداد های یک کلاس، متدی رو انتصاب می دید و این دو با هم خیلی فرق دارن.
در همون آموزش کامپوننت ها هم مثال هایی رو گذاشتم که کاملا گویای این مطلب هست.
فکر می کنم بهتر باشه کمی در مورد OOP تسلط خودتون رو بالاتر ببرید.
اما اجالتا، مثلا برای ساخت یک کلاس که دکمه ی اون رویدادی رو کال می کنه:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyClass = class(TCustomControl)
private
procedure B1Click(Sender: TObject);
protected
B1: TButton;
public
constructor Create(AOwner: TComponent); override;
end;
implementation
{ TMyClass }
constructor TMyClass.Create(AOwner: TComponent);
begin
inherited;
Width := 300;
Height := 200;
Color := clBlue;
B1 := TButton.Create(Self);
with B1 do
begin
Parent := Self;
Name := 'B1';
SetBounds(1, 1, 100, 60);
OnClick := B1Click;
end;
end;
procedure TMyClass.B1Click(Sender: TObject);
begin
ShowMessage(TButton(Sender).Name + ' has been Clicked');
end;
end.