Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Timage Verschieben, wenn das BIld gross ist. (https://www.delphipraxis.net/71453-timage-verschieben-wenn-das-bild-gross-ist.html)

Karstadt 15. Jun 2006 14:24


Timage Verschieben, wenn das BIld gross ist.
 
Hallo. Ich habe einen Form 300,300 dort ist ein TImage. Wenn das TImage größer ist als die form, will ich diese per Maus verschieben. (nach oben, nach unten). Nun überlege ich mir wie ich mir das am leichtesten mache. Per Drag und Drop..? Problem ist nur ich muss wissen wo die "verschiebung endet, wenn die höhe = formular.höhe...

Ich hoffe ich konnte mein Problem verständlich schildern.

Evian 15. Jun 2006 15:15

Re: Timage Verschieben, wenn das BIld gross ist.
 
Ich raff nicht ganz, wo Du das TImage hinschieben willst?!

_frank_ 15. Jun 2006 15:58

Re: Timage Verschieben, wenn das BIld gross ist.
 
die leichteste Variante dürfte TScrollbox (align=alClient und image.parent=Scrollbox) sein.
Ich weis aber nicht, was du genau unter "verschieben" meinst und ob es unbedingt Drag&drop sein muss.
Wenn doch Drag&Drop, dann ist imagemoving.zip evtl. eine Hilfe...

Gruß Frank

Karstadt 16. Jun 2006 08:26

Re: Timage Verschieben, wenn das BIld gross ist.
 
Zitat:

Ich weis aber nicht, was du genau unter "verschieben" meinst und ob es unbedingt Drag&drop sein muss
Dein Projekt ist meine Lösung!

Karstadt 20. Jun 2006 14:07

Re: Timage Verschieben, wenn das BIld gross ist.
 
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  x_v := x; // globale variable
  y_v := y; // globale variable
  TImage(Sender).Tag := 1;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Caption := 'x '+IntToStr(x)+' Y '+IntToStr(y);
  TImage(Sender).Tag := 0;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var Maustaste: TMouseButton;
begin
  Caption := IntToStr(x)+' '+IntToStr(y);
  If TImage(Sender).Tag = 1 Then
  begin
    If y_v > y Then
      TImage(Sender).Top := TImage(Sender).Top+y-y_v
    else TImage(Sender).Top := TImage(Sender).Top+y-y_v;

    If x_v > x Then
      TImage(Sender).left := TImage(Sender).left+x-x_v
    else TImage(Sender).left := TImage(Sender).left+x-x_v;
  end;
end;

So meinte ich das...

Das Bild liegt in TScrolbox

Mein Problem ist aber... Das rukelt sehr, wenn sich die Bildkoorednaten ändern... hat jemand eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz