AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TImage in Runtime mit Maus verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

TImage in Runtime mit Maus verschieben

Ein Thema von Antonov · begonnen am 11. Apr 2014 · letzter Beitrag vom 12. Apr 2014
 
Antonov

Registriert seit: 11. Apr 2014
21 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TImage in Runtime mit Maus verschieben

  Alt 11. Apr 2014, 20:55
[...]

OnMouseDown des Images: hier rien der Code von ImageMouseDown
OnMouseMove des Images: hier rein der Code von ImageMouseMove


[...]

Es gibt sehr viele mögliche Exceptions, da kann es nie schaden, wenn man etwas genauer wird.
Sorry, ich verstehe nicht, was du mit den Aussagen meinst. Soweit der Compiler meint, existiert ImageMouseDown nicht ... oder nicht in dem Kontext. Keine Ahnung.
Die Exception kann ich nicht reproduzieren, keine Ahnung. Ich weiß nicht mehr, was genau ich verändert hatte.

Ich habe den Code jetzt soweit runtergestutzt, wie ich ihn benötige. Also keine Resize mehr und kein Abspeichern der Buttonpositionen nach dem Bewegen. Simples Verschieben mit Checkbox:

Delphi-Quellcode:
unit Unit1;

interface

uses
  IniFiles,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;


type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Panel1: TPanel;
    Button2: TButton;
    chkPositionRunTime: TCheckBox;
    Image1: TImage;
    procedure ControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure ControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    inReposition : boolean;
    oldPos: TPoint;
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.ControlMouseDown(
  Sender: TObject;
  Button: TMouseButton;
  Shift: TShiftState;
  X, Y: Integer);
begin
  if (chkPositionRunTime.Checked) AND (Sender is TWinControl) then
  begin
    inReposition:=True;
    SetCapture(TWinControl(Sender).Handle);
    GetCursorPos(oldPos);
  end;
end;

procedure TForm1.ControlMouseMove(
  Sender: TObject;
  Shift: TShiftState;
  X, Y: Integer);
var
  newPos: TPoint;
  frmPoint : TPoint;
begin
  if inReposition then
  begin
    with TWinControl(Sender) do
    begin
      GetCursorPos(newPos);
      begin
        Screen.Cursor := crSize;
        Left := Left - oldPos.X + newPos.X;
        Top := Top - oldPos.Y + newPos.Y;
        oldPos := newPos;
      end;
    end;
  end;
end;

procedure TForm1.ControlMouseUp(
  Sender: TObject;
  Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if inReposition then
  begin
    Screen.Cursor := crDefault;
    ReleaseCapture;
    inReposition := False;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
Begin

  Button1.OnMouseDown := ControlMouseDown;
  Button1.OnMouseMove := ControlMouseMove;
  Button1.OnMouseUp := ControlMouseUp;

  Edit1.OnMouseDown := ControlMouseDown;
  Edit1.OnMouseMove := ControlMouseMove;
  Edit1.OnMouseUp := ControlMouseUp;

  Panel1.OnMouseDown := ControlMouseDown;
  Panel1.OnMouseMove := ControlMouseMove;
  Panel1.OnMouseUp := ControlMouseUp;

  Button2.OnMouseDown := ControlMouseDown;
  Button2.OnMouseMove := ControlMouseMove;
  Button2.OnMouseUp := ControlMouseUp;

  Image1.OnMouseDown := ControlMouseDown;
  Image1.OnMouseMove := ControlMouseMove;
  Image1.OnMouseUp := ControlMouseUp;
end;

end.
Soweit funktioniert alles. Leider nur nicht die Graphik. Falls jemand Zeit und Lust hat, kann er noch den Teil mit TForm1.OnCreater erklären. Ich verstehe überhaupt nicht, was man da deklariert und was die Bezeichnungen sollen.
Den Rest des Codes verstehe ich einigermaßen, nur nicht wie man Graphiken zum Bewegen bringt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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