PDA

View Full Version : اظافه کردن یک رویداد جدید به TImage ؟؟



ali_mohamadi8928
پنج شنبه 20 دی 1386, 13:18 عصر
سلام دوستان .

چه جوری میشه رویداد OnMouseLeave رو به شیء TImage اظافه کرد ؟

babak_delphi
پنج شنبه 20 دی 1386, 15: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, 16:07 عصر
دوست عزیز خیلی ممنون از راهنماییت . ولی من نمیدونم که این کدها رو باید کجا بزارم .

اگه میشه یک مثال کامل بزاری خیلی ممنون میشم .

با تشکر ....

vcldeveloper
پنج شنبه 20 دی 1386, 16:27 عصر
ولی من نمیدونم که این کدها رو باید کجا بزارم .
یک کلاس جدید از روی کلاس TCustomImage درست کن و متد فوق را بهش اضافه کن. برای اطلاع بیشتر میتونی روی TImage در سورس دلفی Ctrl+Click کنی تا سورس TImage را ببینی و متوجه بشی که چطور این کار را باید انجام داد.

ali_mohamadi8928
پنج شنبه 20 دی 1386, 17:07 عصر
سلام اقا علی .

من کارهایی که گفتین رو کردم تا حدودی.
ولی گیج شدم و نتونستم اون کار رو بکنم .

اگه ممکنه یک راهنمایی کامل و جامع بکنید .



یک کلاس جدید از روی کلاس TCustomImage درست کن و متد فوق را بهش اضافه کن.


چه جوری درست کنم اخه ؟؟؟؟

اگه ممکنه یک راهنمایی کامل و جامع بکنید .

یک دنیا ممنون ......

vcldeveloper
پنج شنبه 20 دی 1386, 22: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
پنج شنبه 20 دی 1386, 23:58 عصر
جزء TImage که این رویداد رو داره , چرا می خواید دوباره تعریفش کنید؟

vcldeveloper
جمعه 21 دی 1386, 02:37 صبح
جزء TImage که این رویداد رو داره
TImage رویدادهای OnMouseEnter و OnMouseLeave نداره.

rasool_brn
جمعه 21 دی 1386, 09:33 صبح
TImage رویدادهای OnMouseEnter و OnMouseLeave نداره.ولی مال من داره

manvaputra
جمعه 21 دی 1386, 14:45 عصر
عجیبه چون تا دلفی 7 رو که من مطمئنم نداره چون خودم لازم داشتم مجبور شدم اضافه کنم!!!!

vcldeveloper
جمعه 21 دی 1386, 18:33 عصر
ولی مال من داره
احتمالا در ورژن های جدید اضافه کردند. من هنوز از دلفی 7 استفاده می کنم.

ali_mohamadi8928
شنبه 22 دی 1386, 07:30 صبح
با تشکر از همه ی دوستان .

درسته منم از دلفی 7 استفاده میکنم و این رویدادها رو نداره .

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

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

ali_mohamadi8928
شنبه 22 دی 1386, 07:58 صبح
ولی مال من داره


ببخشید میشه دقیقا بگین از کدوم نسخه استفاده میکنید ؟؟

با تشکر ...

rasool_brn
شنبه 22 دی 1386, 09:20 صبح
ببخشید میشه دقیقا بگین از کدوم نسخه استفاده میکنید ؟
من از نگارش 2006 دلفی استفاده می کنم

s.mostafa.rahmani
پنج شنبه 07 شهریور 1387, 15:09 عصر
دلفي 2007 هم داره :)