PDA

View Full Version : نوشتن Event



DAMAVAND
دوشنبه 28 خرداد 1386, 11:16 صبح
سلام :چشمک:
من میخوام یه کنترول رو با کد نویسی به وجود بیارم مثالا یه Button تا اینجا مشکلی نیست!

اگه بخوام یکی از Event های اون کنترول رو با کد نویسی بنویسم چی ?? :متفکر:
مثالا OnClick رو خودمون بنویسیم که هر وقت OnClick اتفاق افتاد ,
مثلا رنگ فرم عوض بشه????
اگه لطف کنید و یه مثال کامل بزنید خیلی ممنون میشم.
با تشکر.

Hamid_PaK
دوشنبه 28 خرداد 1386, 13:21 عصر
ببینید دلفی یک زبان کامپایلری است پس اگر چیزی قرار جایی کار کنه باید از قبل تعریف شده باشه !
شما برای استفاده از رخداد یک کنترلی که با کد نویسی خواهید ساخت باید روال رخداد را از قبل تعریف کرده باشید .



type
Tfrm_main = class(TForm)
procedure FormCreate(Sender: TObject);
procedure ButtonTMPClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frm_main: Tfrm_main;

implementation

{$R *.dfm}

procedure Tfrm_main.FormCreate(Sender: TObject);
begin
with TButton.Create(Self) do begin
Parent := Self;
Width := 100;
Caption := 'Back to WHITE';
OnClick := ButtonTMPClick;
end;
end;

procedure Tfrm_main.ButtonTMPClick(Sender: TObject);
begin
//;
// Testing to change the color of the parent.
with TButton( Sender ) do begin
if Parent is TForm then
TForm( Parent ).Color := clWhite;
end;
end;


یا حق ...

DAMAVAND
دوشنبه 28 خرداد 1386, 17:48 عصر
سلام
امکانش هست که این رو تویه یه DLL بکار ببریم???
من میخوام یه تابع توی یه DLL بنویسم که اگه این تابع رو تویه یه برنامه از DLL فراخوانی کنیم
مثلا یه button بوجود بیاد که Event هم داشته باشه?
من هر چی سعی کردم نشد! ( یعنی نتونستم! )
با تشکر

Hamid_PaK
دوشنبه 28 خرداد 1386, 17:58 عصر
ساختن فرم از طریف اجرای تابع در DLL توی انجمن زیاد بحث شده ، یه جستجو بزن اگه چیزی که خواستی نشد بگو مثال ضمیمه کنیم .

یا حق ...

DAMAVAND
دوشنبه 28 خرداد 1386, 18:10 عصر
ساختن فرم از طریف اجرای تابع در DLL توی انجمن زیاد بحث شده ، یه جستجو بزن اگه چیزی که خواستی نشد بگو مثال ضمیمه کنیم .

یا حق ...

سلام
دوست عزیز من فقط میخوام یه تابع داشته
باشیم که یه buttn به مابده!
که مثلا Event (Onclick) هم داشته
باشه.که اگه اتفاق افتاد مثلا رنگ فرم عوض بشه!!
نمیخوام یه فرم بسازم!!!!!
فرض کنیم یه تابع توی DLL داریم بنام createbutton

اگه تویه برناممون این تابع رو از DLL بالا
فراخوانی کنیم روی فرممون یه Button بوجود بیاد.

با تشکر از راهنماییتون.:لبخندساده:

merced
دوشنبه 28 خرداد 1386, 23:40 عصر
توی DLL داری یه کامپوننت ویژال میسازی مگه نه ؟
خوب اون تابع DLL باید بدونه که کجا بسازه .. پس مثل ساخت فرم با DLL ، باید هندل فرمی و parent اونی که قراره ساخته بشه رو توی DLL بدونی ..

حدس می زنم باید اینجوری باشه .. به همین سادگی !

DAMAVAND
سه شنبه 29 خرداد 1386, 10:54 صبح
توی DLL داری یه کامپوننت ویژال میسازی مگه نه ؟
خوب اون تابع DLL باید بدونه که کجا بسازه .. پس مثل ساخت فرم با DLL ، باید هندل فرمی و parent اونی که قراره ساخته بشه رو توی DLL بدونی ..

حدس می زنم باید اینجوری باشه .. به همین سادگی !

درسته دارم یه جورایی یه کامپوننت Button میسازم
منتها تو یه DLL !
مشکلی تو ساختن نیست.ولی من میخوام یه Event مثلا ONClick داشته
باشه!
ولی نمیدونم توی DLL چطوری این کار رو انجام بدم? :افسرده:

با تشکر

Hamid_PaK
سه شنبه 29 خرداد 1386, 19:37 عصر
تا جایی که من میدونم کامپوننت رو مثل TButton توی یک یونیت طراحی کن و بعد از طریق ActiveX Control Wizard از کامپوننت یک اکتیوایکس خروجی بگیر که همه جا هم کار خواهد کرد ...

یا حق ...

DAMAVAND
سه شنبه 29 خرداد 1386, 19:39 عصر
من مشکلم تو
نوشتن EVENT است.
میشه یه مثال بزنید من هر کاری میکنم نمیتونم
این رو توی یه یونیت بنویسم که بعدش ازش یه Activx یا dll بسازم!!

merced
چهارشنبه 30 خرداد 1386, 05:19 صبح
یعنی انیجوری نمی خوای ؟



procedure TForm1.FormCreate(Sender: TObject);
var w : TButton ;
begin
w := TButton.Create(Self) ;
w.Left := 10 ;
w.Top := 10 ;
w.Parent := Self ;
w.OnClick := x;


end;

procedure TForm1.X(sender: Tobject);
begin
ShowMessage(sender.ClassName);
end;