من این کد رو از برای یک Image نوشتم. میشه برای n تا Image نوشت. (کد رو از قسمتی از کامپوننتهای خودم تغییر دادم)
کل Propertyها و رفتار این کامپوننتو ننوشتم(مثل Destructor و ... که معمولا همه دارند)
در این کد با یاجاد یک Property بنام Image1 و ظاهر شدن Combo براس آون میشه یک Image رو انتخاب کرد و کارهای مربوطه رو انجام داد. :shock:
من شبیه این کامپوننتو برای یک لیست باکس نوشتم
TMyPanel = class(TPanel)
private
FImage : TImage;
public
{ Public declarations }
procedure ImageMouseDown(Sender: TObject; Button:TMouseButton;Shift: TShiftState;X, Y: Integer);
procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState;X, Y: Integer);
Procedure ImageMouseMove (Sender: TObject; Shift: TShiftState; X,Y: Integer);
published
{ Published declarations }
property Image1 : TImage Read FImage Write SetFImage;
End;
///////////تعریف رویدادها اینجا انجام میشه////////////////
procedure TMyPanel.ImageMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
////////////// Your Code For MouseDown/////////////
end;
procedure TMyPanel.ImageMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
////////////// Your Code For MouseUp/////////////
end;
Procedure TMyPanel.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
////////////// Your Code For MouseMove/////////////
end;
///////////ربط رویدادها اینجا انجام میشه////////////////
procedure TMyPanel.SetFImage(MyImage,Value : TImage);
Begin
FImage := Value;
FImage.OnMouseDown:= ImageMouseDown;
FImage.OnMouseMove:= ImageMouseMove;
FImage.OnMouseUp := ImageMouseUp;
End;