![]() |
Image verschieben
Hallo zusammen,
weis nicht ob ich hier in der richtigen Rubrik bin, wenn nicht bitte verschieben. Ich habe zwei images in Meiner Anwendung, und möchte nun das eine über das andere Schieben, also die Position left,top bei gedrückter Maustaste verändern. Wie mach ich das am besten? Gruß Matthias |
Re: Image verschieben
Wo ist Dein Problem?
Eigentlich genuegt es doch wenn du die properties left und top veraenderst. (Hinweis: das funzt latuernich nicht, wenn Du align <>alNone hast) Vielleicht brauchst du noch ein abschliessendes Update auf Dein Form. Evtl. muesstest Du einfach mal noch ein wenig mehr Code posten. |
Re: Image verschieben
Verwende mal bitte die Suche und oder schau mal in die Codelib.
![]() ![]() Das Thema gibts garantiert schohn . ;) Zitat:
Eine andere Möglichkeit ist ggf. Drag&Drop. |
Re: Image verschieben
Komisch, wenn ich die Suche bemühe spuckt das ding was anderes aus, tja da bräuchte man fasst ein tutorial fürs suchen :oops:
Aber zurück zur Sache, hab das gefunden
Delphi-Quellcode:
da war aber ursprünglich ein Panel eingetragen, damit funktionierts dann auch, aber beim Image funktionierts nicht, da passiert dann einfach - nix. ?
procedure TPlanmarker.CopyImageMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer); const SC_DRAGMOVE = $F012; begin if copydown then begin; if Shift = [ssLeft] then // ist linke Maustaste gedrücht, dann... begin ReleaseCapture; // "Maus an akt. Form binden" copyimage.Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0); // Panel verschieben end; end; end; Kann ich dieses API-Kommando auf das Image nicht anwenden ? Gruß Matthias |
Re: Image verschieben
Hallo nochmal,
bin inzwischen in der Schweiz fündig geworden. Danke für eure Hinweise, bin jetzt wieder um einiges schlauer Gruß Matthias |
Re: Image verschieben
Das geht nur mit Komponenten die von TWinControl abgeleitet sind.
Eine möglichkeit wäre noch das Image auf ein Panel zu setzen.
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Panel1.perform(WM_SYSCOMMAND, $F012, 0); end; |
AW: Image verschieben
:-)
Delphi-Quellcode:
:-)
Unit uMovePNG;
Interface Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, PNGImage, ExtCtrls; Type TForm1 = Class(TForm) picPNG: TImage; Procedure FormCreate (Sender: TObject); Procedure picPNGMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Procedure picPNGMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Procedure MoveTimer (Sender: TObject); End; VAR Form1: TForm1; Ti: TTimer; PosX: Integer; PosY: Integer; Implementation {$R *.dfm} Procedure TForm1.FormCreate(Sender: TObject); Begin DoubleBuffered:= True; Ti:= TTimer.Create(Application); Ti.Interval:= 30; Ti.Enabled:= False; Ti.OnTimer:= Form1.MoveTimer; End; Procedure TForm1.picPNGMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin If Button = mbLeft Then Begin PosX:= X; PosY:= Y; ShowCursor(False); Ti.Enabled:= True; End; End; Procedure TForm1.MoveTimer(Sender: TObject); Var P: TPoint; Begin P:= ScreenToClient(Mouse.CursorPos); picPNG.Top:= P.Y - PosY; picPNG.Left:= P.X - PosX; End; Procedure TForm1.picPNGMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin If Button = mbLeft Then Begin Ti.Enabled:= False; ShowCursor(True); End; End; End. btw: Ein MultimediaTimer eignet sich gut für optische Bewegungen (unter Windows..) ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz