نمایش نتایج 1 تا 7 از 7

نام تاپیک: تعریف یک رویداد در کلاس

  1. #1

    تعریف یک رویداد در کلاس

    با عرض سلام و خسته نباشید خدمت دوستان
    بنده میخواهم در یکی از کلاس هایی که با دلفی نوشته ام
    یکسری رویداد (Event) تعریف کنم تا هر موقع یکی از آن ها
    به وقوع پیوست تعدادی از دستورات مشخص احرا شوند.
    ----------------------------------------
    نا گفته نماند که من دو سه ماهی بیشتر نیست که با دلفی
    کار میکنم. با C#‎ به راحتی این کار رو انجام میدم ولی توی دلفی
    نمیدونم چه کار کنم.
    طبق قوانین سایت اول جستجو کردم اما نتیجه ای بدست نیاوردم.
    امیدوارم شما دوستان دلفی کار من رو نا امید نکنید.

  2. #2
    یک مثال میزنم و سعی میکنم همه چیز توش باشه :

    type
    TOnMyEvent= (AParam: Integer) of object;
    ....
    MyClass = class
    ..
    private
    ...
    FOnMyEvent: TOnMyEvent;
    ...
    public
    ...
    property OnMyEvent: TOnMyEvent read FOnMyEvent write FOnMyEvent;
    ...
    end//of class

    حال یک جایی توی کلاس وقتی میخوای Eventرو کال کنی :

    if Assigned(FOnMyEvent) then OnMyEvent(4//اون پارامتر عددی)


  3. #3

    نقل قول: تعریف یک رویداد در کلاس

    با سلام
    عذر خواهی می کنم بابت اینکه این تاپیک رو زنده کردن
    لطفا درمورد تعریف و استفاده از رویدادها بیشتر توضیح بدید
    و
    اینکه نوع کلاسی که تعریف میکنیم با اضافه شدن رویداد به اون کلاس تغییر میکنه یا نه؟

    مثلا :
      TMyClass = class(TCustomControl)

    نوع کلاسمونه آیا موقعی که میخوایم از رویداد در این کلاس استفاده کنیم باید نوع اون رو عوض کنیم ؟
    مثلا :

    TMyClass = class(TWinControl)
    یا
    TMyClass = class(TComponent)


    با تشکر

  4. #4

    نقل قول: تعریف یک رویداد در کلاس

    کسی از دوستان میتونه راهنمایی کنه؟؟؟؟؟؟ لطفا

  5. #5

    نقل قول: تعریف یک رویداد در کلاس

    سلام.
    برای این که در یک کلاسی که تعریف شده، یک رویداد اضافه کنید، می باید یک کلاس از اون مشتق کنید و در اون زیر کلاس کارهاتون رو اضافه کنید. در حالت کلی درست نیست که کلاس پدر رو دستکاری کنید.
    کلا راههای زیر برای تغییر یک کلاس وجود داره:

    1- استفاده از زیر کلاس مشتق شده از کلاس مبدا
    2- تغییر در سورس کلاس پدر و اضافه کردن رویداد (توصیه نمی شه)
    3- هــــک کردن کلاس پدر در یک یونیت
    4- استفاده از Class Helper ها

    باید ببینید که در کجا دارید چه کار می کنید، کلاس مبدا شما چی هست و سایر موارد.
    رویدادی که دارید اضافه می کنید هم مهمه. معمولا رویداد ها در کلاس های بالاتر وجود دارند.
    کاری که دارید انجام می دید دقیقا چیه؟
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  6. #6

    نقل قول: تعریف یک رویداد در کلاس

    ممنون از جوابتون

    دارم روی این موضوع

    که در مورد بهترین روش برای ساخت یک پرسشنامه بود یک کلاس می نویسم
    می خوام برای یک لیبل و دکمه توی کلاسم رویداد کلیک بذارم و توی اون کد بنویسم که بعد از کلیک کردن اون کد اجرا بشه
    ولی با مطالب توی سایت نتونستم چیزی متوجه بشم

    اگه بتونید یک مثال در این مورد بزنید ممنون میشم

  7. #7

    نقل قول: تعریف یک رویداد در کلاس

    شما رویدادی رو به کلاس اضافه نمی کنید. دارید برای یکی از رویداد های یک کلاس، متدی رو انتصاب می دید و این دو با هم خیلی فرق دارن.
    در همون آموزش کامپوننت ها هم مثال هایی رو گذاشتم که کاملا گویای این مطلب هست.
    فکر می کنم بهتر باشه کمی در مورد 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.

    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •