من روی فرمم چندتا Image دارم که میخوام با رفتن موس روی اون اندازش بزرگ بشه و وقتی موس از روی Image بزرگ شده کنار کشیده شد(یعنی موس Image را ترک کرد) Image به اندازه اولیه اش برگرده. لطفا راهنماییم کنین.
Printable View
من روی فرمم چندتا Image دارم که میخوام با رفتن موس روی اون اندازش بزرگ بشه و وقتی موس از روی Image بزرگ شده کنار کشیده شد(یعنی موس Image را ترک کرد) Image به اندازه اولیه اش برگرده. لطفا راهنماییم کنین.
سلام
كاري كه بايد بكنيد اين است كه براي روال هاي OnMouseEnter و OnMouseLeave كنترل مورد نظر كد بنويسيد، ولي كنترل TImage فاقد اين دو روال است، ميتوانيد از كنترل هاي مشابه كه اين روال ها را دارند استفاده كنيد و يا اين دو روال را به TImage اضافه كنيد .
كد زير با با اسم ImageEx.pas ذخيره كنيد، بعد بعنوان يك كامپوننت نصب كنيد.
کد:unit ImageEx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TImageEx = class (TImage)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
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;
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.