Örneğimiz için form ekranına 1 adet TImage nesnesi yerleştirmeniz ve içerisine resim yüklemeniz yeterlidir.
Test amaçlı rastgele bir nesne daha eklemeniz de gerek. Çünkü yerini değiştireceğimiz TImage nesnesi, o eklediğimiz resmin üzerine geldiğinde donuyormu onu test etmek için.
İlk olarak Uses kısmına gerekli kütüphaneyi ekleyelim:
System.Math.Vectors
Sıradaki işlem "private" bölümüne aşağıdaki değişkenleri tanımlayınız. Tercih sebebi olarak genel var bloğunada tanımlayabilirsiniz.
FStartPos: TPointF; FPressed: Boolean;
Bu TImage nesnemizin uyladığımız işlemleri kullanabilmesi için "AutoCapture" özelliğinin daima true olması gerekmektedir. Formun OnCreate bölümüne aşağıdaki kodu ekleyiniz.
DraggableImage.AutoCapture := True;
Sıradaki işlemimiz parmağımızın resmin üzerine geldiğini algılaması ve bu durumda tanımladığımız FPressed değişkenini true yapmak. Bunun için resmin OnMouseDown eventine aşağıdaki kodu ekleyiniz.
FPressed := True; FStartPos := TPointF.Create(X, Y);
Şimdi parmağımızın resimde olmadığı durumu değişkenimize aktarmaya geldi onun için resmin OnMouseUp eventine aşağıdaki kodu ekleyiniz.
FPressed := False;
Ve son olarak resmin OnMouseMove eventine hareket işlemleri için gerekli kod bloğumuzu ekliyoruz.
var
MoveVector: TVector;
begin
if FPressed then
begin
MoveVector := TVector.Create(X - FStartPos.X, Y - FStartPos.Y, 0);
MoveVector := DraggableImage.LocalToAbsoluteVector(MoveVector);
if DraggableImage.ParentControl <> nil then
MoveVector := DraggableImage.ParentControl.AbsoluteToLocalVector(MoveVector);
DraggableImage.Position.Point := DraggableImage.Position.Point + MoveVector.ToPointF;
end;
Not: www.fire-monkey.ru formundaki bir yazıdan anladığım kadarı ile uyguladığım bir uygulamadır.

Hiç yorum yok:
Yorum Gönder