View Full Version : اظافه کردن یک رویداد جدید به TImage ؟؟
ali_mohamadi8928
پنج شنبه 20 دی 1386, 14:18 عصر
سلام دوستان .
چه جوری میشه رویداد OnMouseLeave رو به شیء TImage اظافه کرد ؟
babak_delphi
پنج شنبه 20 دی 1386, 16:49 عصر
باید ابتدا یک Procedure به آن اضافه کنی
procedure CMMouseLeave(var msg : TMessage); message CM_MOUSELESVE;
این کد رو در بخش protected از اون control بنویس
بعد هم آن Procedure را که مثلا متعلق به TForm1 را به شکل زیر بنویسی :
procedure TForm1.CMMouseLeave(var msg : TMessage);
begin
// کد مورد نظر را در این قسمت بنویس
end;
ali_mohamadi8928
پنج شنبه 20 دی 1386, 17:07 عصر
دوست عزیز خیلی ممنون از راهنماییت . ولی من نمیدونم که این کدها رو باید کجا بزارم .
اگه میشه یک مثال کامل بزاری خیلی ممنون میشم .
با تشکر ....
vcldeveloper
پنج شنبه 20 دی 1386, 17:27 عصر
ولی من نمیدونم که این کدها رو باید کجا بزارم .
یک کلاس جدید از روی کلاس TCustomImage درست کن و متد فوق را بهش اضافه کن. برای اطلاع بیشتر میتونی روی TImage در سورس دلفی Ctrl+Click کنی تا سورس TImage را ببینی و متوجه بشی که چطور این کار را باید انجام داد.
ali_mohamadi8928
پنج شنبه 20 دی 1386, 18:07 عصر
سلام اقا علی .
من کارهایی که گفتین رو کردم تا حدودی.
ولی گیج شدم و نتونستم اون کار رو بکنم .
اگه ممکنه یک راهنمایی کامل و جامع بکنید .
یک کلاس جدید از روی کلاس TCustomImage درست کن و متد فوق را بهش اضافه کن.
چه جوری درست کنم اخه ؟؟؟؟
اگه ممکنه یک راهنمایی کامل و جامع بکنید .
یک دنیا ممنون ......
vcldeveloper
پنج شنبه 20 دی 1386, 23:32 عصر
من کارهایی که گفتین رو کردم تا حدودی.
ولی گیج شدم و نتونستم اون کار رو بکنم .
من اشتباه کردم، ببخشید. کلاس TCustomImage وجود نداره. TImage از TGraphicControl مشتق میشه.
برای سوال شما، باید کلاس جدیدی را از TImage مشتق بگیرید و متد فوق را به آن اضافه کنید:
TMyImage = class(TImage)
private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure SetOnMouseLeave(AValue: TNotifyEvent);
procedure SetOnMouseEnter(AValue: TNotifyEvent);
protected
procedure MouseEntering; virtual;
procedure MouseLeaving; virtual;
public
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write SetOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write SetOnMouseLeave;
end;
Implementation:
procedure TMyImage.CMMouseEnter(var Message: TMessage);
begin
if not (csDesigning in ComponentState) then
begin
MouseEntering;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
end;
end;
procedure TMyImage.CMMouseLeave(var Message: TMessage);
begin
if not (csDesigning in ComponentState) then
begin
MouseLeaving;
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
end;
procedure TMyImage.MouseEntering;
begin
end;
procedure TMyImage.MouseLeaving;
begin
end;
procedure TMyImage.SetOnMouseEnter(AValue: TNotifyEvent);
begin
FOnMouseEnter := AValue;
end;
procedure TMyImage.SetOnMouseLeave(AValue: TNotifyEvent);
begin
FOnMouseLeave := AValue;
end;
rasool_brn
جمعه 21 دی 1386, 00:58 صبح
جزء TImage که این رویداد رو داره , چرا می خواید دوباره تعریفش کنید؟
vcldeveloper
جمعه 21 دی 1386, 03:37 صبح
جزء TImage که این رویداد رو داره
TImage رویدادهای OnMouseEnter و OnMouseLeave نداره.
rasool_brn
جمعه 21 دی 1386, 10:33 صبح
TImage رویدادهای OnMouseEnter و OnMouseLeave نداره.ولی مال من داره
manvaputra
جمعه 21 دی 1386, 15:45 عصر
عجیبه چون تا دلفی 7 رو که من مطمئنم نداره چون خودم لازم داشتم مجبور شدم اضافه کنم!!!!
vcldeveloper
جمعه 21 دی 1386, 19:33 عصر
ولی مال من داره
احتمالا در ورژن های جدید اضافه کردند. من هنوز از دلفی 7 استفاده می کنم.
ali_mohamadi8928
شنبه 22 دی 1386, 08:30 صبح
با تشکر از همه ی دوستان .
درسته منم از دلفی 7 استفاده میکنم و این رویدادها رو نداره .
حتما شما از نسخه های بالاتر استفاده میکنی .
در کل با تشکر از تمامی دوستان .
ali_mohamadi8928
شنبه 22 دی 1386, 08:58 صبح
ولی مال من داره
ببخشید میشه دقیقا بگین از کدوم نسخه استفاده میکنید ؟؟
با تشکر ...
rasool_brn
شنبه 22 دی 1386, 10:20 صبح
ببخشید میشه دقیقا بگین از کدوم نسخه استفاده میکنید ؟
من از نگارش 2006 دلفی استفاده می کنم
s.mostafa.rahmani
پنج شنبه 07 شهریور 1387, 16:09 عصر
دلفي 2007 هم داره :)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.