Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Image taşıma
#1
Merhaba,


TImage nesnesini taşımak için aşağıdaki kodları kullanıyorum.
Kısmen güzel çalışıyor fakat bazen anlam veremediğim durumlar ortaya çıkıyor. Taşıdığım TImage taşıma anında bir anda formun başka tarafına gidiyor.
Birde yapamadığım şey TImage TLayout içinde bu TLayout dışına çıkmamasını nasıl sağlarım? veya başka yöntemlede nasıl yapabilirim?



var
  ImageStartDragPos: TPointF;
  ImageDragging: Boolean;


procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  if (ssleft in Shift) then
  begin
    ImageStartDragPos := ClientToScreen(Point(Round(X), Round(Y)));
    ImageDragging := True;
  end;
end;

procedure TMainForm.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
begin
  if ImageDragging then
  begin
    Imag1.Position.Point := ScreenToClient(ClientToScreen(Image1.Position.Point + ClientToScreen(Point(Round(X), Round(Y))) - ImageStartDragPos));
  end;
end;

procedure TMainForm.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  ImageDragging := False;
end;
Cevapla
#2
Bu şekliyle, Layout sınırlarını vererek Image'in yeniden pozisyon almasını önleyecek bir iki dokunuş lazım. 

Örneğin

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Single);
var
  MoveOK  : Boolean;
  aPoint  : TPointF;
begin
  if ImageDragging then
  begin
    aPoint := ScreenToClient(ClientToScreen(TImage(Sender).Position.Point + ClientToScreen(Point(Round(X), Round(Y))) - ImageStartDragPos));
    MoveOK := ( aPoint.x >= 0 )
          AND ( aPoint.x <= TLayout(TImage(Sender).Parent).Width   - TImage(Sender).Width  )
          AND ( aPoint.y >= 0 )
          AND ( aPoint.y <= TLayout(TImage(Sender).Parent).Height  - TImage(Sender).Height );
    if MoveOK then TImage(Sender).Position.Point := aPoint
              else Image1MouseDown(Sender, TMouseButton.mbLeft, Shift, X, Y ); // this line prevents move but refreshes MouseDown (ImageStartDragPos) Point
  end;
end;


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Birden Fazla İmage ı Whatsapp ile paylaşmak barissagir 1 631 05-06-2025, Saat: 03:24
Son Yorum: barissagir
  FMX Listview Image Sorunu [ÇÖZÜLDÜ] Mesut 1 928 20-10-2023, Saat: 15:03
Son Yorum: Mesut
  Tıklanılan Image'yi Android Galeride Açmak kajmerantime 7 3.047 06-10-2023, Saat: 09:10
Son Yorum: kajmerantime
  Image Kalite Nasıl yükseltilir? barissagir 1 1.312 28-09-2023, Saat: 18:52
Son Yorum: hi_selamlar
Photo Rest Serverdan androide image download etmek serifaliyagci 6 2.481 17-07-2023, Saat: 09:55
Son Yorum: serifaliyagci



Konuyu Okuyanlar: 1 Ziyaretçi