ورود

View Full Version : نسبت دادن یک تصویر در رویداد MouseEnter در یک کامپوننت سفارشی



hadisalahi2
یک شنبه 04 اسفند 1387, 20:18 عصر
با سلام به همگی
شرمنده این قدر سوال کامپوننتی می پرسم. دیگه فعلا تو تیریپه کامپوننتیم .
من یک کامپوننت به لطف دوستم آقای ابراهیم نژاد ساختم که رویداد Mouse Leave رو به یک کنترل Image اضافه میکنه . حالا من میخوام اولا که یک خاصیت دیگه مثل خاصیت Picture بهش اضافه کنم البته کد زیر رو نوشتم ولی خطا میده.



type
TImageEx = class (TImage)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
FOverImage:TGraphic;
procedure CMMouseEnter(var msg: TMessage);
message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage);
message CM_MOUSELEAVE;
protected
{ Protected declarations }
procedure DoMouseEnter; dynamic;
procedure DoMouseLeave; dynamic;
public
{ Public declarations }
published
{ Published declarations }
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OverImage: TGraphic read FOverImage write FOverImage;



اون Property OverImage رو خودم تعریف کردم.ولی موقعی که بهش عکس می خوام نسبت بدم خطا میده.
حالا این یک موضع که باید چه جوری این خاصیت رو ایجاد کنم و عکس رو چه جوری داخلش قرار بدم.
موضوع دیگه اینکه میخوام عکسی که کاربر توی این خاصیت قرار میده رو موقع رویداد Mouse Enter به جای عکس اول قرار بدم و موقع رویداد MouseLeave هم همون عکس اول بیاد سرجاش. مثل دکمه هایی که دو تا عکس برای دو وضعیتشون دارند.
ممنون از همگی
البته کل کد این کامپوننت به صورت زیره:



unit ImageEX;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TImageEx = class (TImage)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
FOverImage:TGraphic;
procedure CMMouseEnter(var msg: TMessage);
message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage);
message CM_MOUSELEAVE;
protected
{ Protected declarations }
procedure DoMouseEnter; dynamic;
procedure DoMouseLeave; dynamic;
public
{ Public declarations }
published
{ Published declarations }
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
// property OverImage: TGraphic read FOverImage write FOverImage;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Additional', [TImageEx]);
end;

{ TImageEx }

procedure TImageEx.CMMouseEnter(var msg: TMessage);
begin
DoMouseEnter;
end;

procedure TImageEx.CMMouseLeave(var msg: TMessage);
begin
DoMouseLeave;
end;

procedure TImageEx.DoMouseEnter;
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TImageEx.DoMouseLeave;
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.

hadisalahi2
دوشنبه 05 اسفند 1387, 09:22 صبح
دوستان کسی نیست راهنمایی کنه ، من خیلی احتیاج فوری دارم.
ممنون میشم.

mehazizi@yahoo.com
پنج شنبه 16 تیر 1390, 11:10 صبح
VrHotImage1 با این کامپوننت که یکی از بخشهای کامپوننت TMS میباشد مشکل شما حل میشه :تشویق: