Autor Beitrag
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Fr 18.04.03 11:00 
Hallöle...


hab mit folgender Anweisung...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button4MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  const sc_dragmove = $f012;
begin
OldPosX := button4.Left;
OldPosY := button4.Top;

ReleaseCapture;
TWinControl(Button4).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;


... ein Button, was ich durch die Gegend ziehen kann. Funktioniert soweit auch ganz gut.

Nun wollt ich mit jener Anweisung...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source = Button4 then
begin
button4.Left := OldPosX;
button4.Top := OldPosY;
end;
end;


... dafür sorgen, das der Button wieder an seinen alten Ort "zurückkehrt" wenn ich ihn über dem Panel absetze.

Funktioniert leider nicht.

Kann mir einer weiterhelfen?

Vielen Dank schonma...

mfg
kiwicht


Zuletzt bearbeitet von kiwicht am Fr 18.04.03 14:35, insgesamt 2-mal bearbeitet
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 18.04.03 12:27 
Das OnDragDrop-Ereignis ist ein "VCL-DragDrop"-Ereignis (keine Ahnung wie ich das anders nennen soll), wird also vom VCL-DragDrop-Mechanismus ausgelöst. Du arbeitest jedoch mit einer Windows-Message!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 18.04.03 12:49 
Hi,

Einfach die Position des panels abfragen. Dann klappt beides in einer procedure.

so gehts:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button4MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const sc_dragmove = $f012;
begin
  OldPosX := button4.Left;
  OldPosY := button4.Top;

  ReleaseCapture;
  TWinControl(Button4).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);

  if (Button4.Left >= panel1.Left - Button4.Width) and
  (Button4.Left  <= panel1.Left + panel1.Width) and
  (Button4.Top >= panel1.Top - button4.Height) and
  (Button4.Top <= panel1.Top + panel1.Height) then
  begin
    button4.Left := OldPosX;
    button4.Top := OldPosY;
  end;

end;


MFG

- Ernesto -
kiwicht Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Fr 18.04.03 14:34 
jup, danke euch Beiden.

Werd den Code von Ernesto ma umsetzen...

thx & mfg