Announcement

Collapse
No announcement yet.

Ziehen von Objekten mit der Maus

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ziehen von Objekten mit der Maus

    Hallo,

    wie kann ich ein Objekt, z.B. ein Panel, zur Programmlaufzeit mit der Maus ziehen und dabei die Umrisse des Objekts und seine Position anzeigen
    (wie es z.B. in der Entwicklungsumgebung von Delphi der Fall ist) ?

    Bin für jeden Tipp dankbar

    Martin

  • #2
    Hallo Martin,

    ich glaube Dir eine passende Lösung anbieten zu können. Es ist eigentlich relativ einfach ein solches Feature in Dein Programm einzubinden. In meiner Lösung kannst Du mit der Maus das Objekt nehmen (wird als Rahmen angezeigt) und an einer anderen Position ablegen. Ferner wäre es Möglich mit kleinen Änderungen am Programm auf Grössenänderungen zu reagieren. Wenn Du gerne das Programm haben möchtest, melde Dich bei mir.

    e-Mail: [email protected]

    Comment


    • #3
      Hallo Oliver,

      klar möchte ich eine Lösung für mein Problem.
      Es wäre riesig nett wenn Du eine solche für mich hättest!

      mfG.

      Marti

      Comment


      • #4
        Hallo Martin,

        gib mir bitte Deine e-Mail Adresse, damit ich Dir mein D4-Projekt zukommen lassen kann. Es sollte auch kein Problem darstellen das Projekt mit einer anderen Delphi Version zum laufen zu bringen.

        PS: Da ich z.Zt. noch arbeite und keinen Zugriff auf meine Daten habe, werde ich Dir heute Abend den Code zukommen lassen.

        Gruss

        Ol

        Comment


        • #5
          Hallo Oli,

          anbei meine E-mail Adresse: [email protected]

          Nochmal vielen Dank
          Marti

          Comment


          • #6
            Hallo Martin,

            anbei der Quellcode für ein Beispiel, alle 4 Buttons sind mit den selben Mausereignissen verdrahtet, das Prinzip ist simpel wie du siehst.

            unit Unit1;

            interface

            uses
            Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
            StdCtrls;

            type
            TForm1 = class(TForm)
            Button1: TButton;
            Button2: TButton;
            Button3: TButton;
            Button4: TButton;
            procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
            Y: Integer);
            procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
            Shift: TShiftState; X, Y: Integer);
            procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
            Shift: TShiftState; X, Y: Integer);
            private
            { Private-Deklarationen }
            public
            { Public-Deklarationen }
            end;

            var
            Form1: TForm1;
            move:boolean;
            offsetX, offsetY:integer;

            implementation

            {$R *.DFM}

            procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
            Y: Integer);
            begin
            if ((shift = [ssLeft]) and (move=true)) then
            begin
            if move then
            with Sender as TButton do
            begin
            Left:=Left+X-offsetX;
            Top:=Top+Y-OffsetY;
            end;
            end;
            end;

            procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
            Shift: TShiftState; X, Y: Integer);
            begin
            move:=true;
            with sender as TButton do
            begin
            OffsetX:=x;
            OffsetY:=y;
            end;
            end;

            procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
            Shift: TShiftState; X, Y: Integer);
            begin
            move:=false;
            end;

            end

            Comment


            • #7
              Hallo,

              wen es noch interessiert, hier gibt es noch einen Extratipp von Borland:

              procedure MouseDown...
              begin
              Perform(WM_SYSCOMMAND, $F012, 0);
              end;

              und schon kann man das Objekt ziehen.

              Gruss, Marti

              Comment

              Working...
              X