سلام علیکم
یک کد از این سایت گرفتم برای جابجایی اشیاء در زمان اجرا.
میخوام با حرکت دادن یک پنل کوچک یک متن رو در TImage حرکت بدم. یعنی TPanel منظور، مثل دستگیره هست. به این منظور به برنامه گفتم وقتی ماوس روی پنل حرکت کرد، پس زمینه متن در تصویر رو بازیابی کنه و متن رو در مکان جدید بنویسه.
اما این کد تا زمانی که دست رو از دکه ماوس بردارم، کار نمی کنه. آیا میشه جور دیگه پارامترها رو تغییر داد یا از کد دیگه ای استفاده کرد؟

procedure TMainForm.TextCornerPanelMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(TextCornerPanel.Handle , $A1, 2, 0);
end;

procedure TMainForm.TextCornerPanelMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
TextEditChange(nil);
end;



این کد هم برای بهتر فهمیدن مطلب(از بعضی از متغیرهای سراسری هم استفاد کرده ام):
procedure TMainForm.TextEditChange(Sender: TObject);
Var
R:TRect;
begin
//ImgBmp1.Assign(TmpBmp1);
//روش بهينه و سريعتر
R:=Rect(TextLeft,TextTop,TextLeft+TextWidth,TextTo p+TextHeight);
ImgBmp1.Canvas.CopyRect(R,TmpBmp1.Canvas,R);
ImgBmp1.Canvas.Font.Assign(TextFontBut.Font);
ImgBmp1.Canvas.Font.Color:=TextColorShape.Brush.Co lor;
SetBkMode(ImgBmp1.Canvas.Handle,Transparent);
TextLeft:=TextCorNerPanel.Left+10;
TextTop:=TextCorNerPanel.Top+10;
TextWidth:=ImgBmp1.Canvas.TextWidth(TextEdit.Text) ;
TextHeight:=ImgBmp1.Canvas.TextHeight(TextEdit.Tex t);
ImgBmp1.Canvas.TextOut(TextLeft,TextTop,TextEdit.T ext);
end;