Thema: Drag'n'Drop

Einzelnen Beitrag anzeigen

Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Drag'n'Drop

  Alt 18. Okt 2006, 21:56
@jfheins: warum immer gleich Fremdkomponenten verwenden?

@mikegu: als erstes kann man den Quellcode, den man hier postet per "Delphi-Code"-Button formatieren, so das dieser dann für die Leser schön lesbar ist.

Delphi-Quellcode:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft Then
    Panel1.BeginDrag(false) ;
end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft Then
    Button1.BeginDrag(false) ;
end;

procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft then
    Panel2.BeginDrag(false);
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If button=mbleft then
    Label1.BeginDrag(True)
end;


procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  // beim Droppen müssen wir wie beim Ziehen der Komponenten
  // den Typ der Komponente beachten
  // (Typ TPanel, TButton und TLabel)
  if Source is TPanel then
  begin
    TPanel(Source).Left := x;
    TPanel(Source).Top := y;
    TPanel(Source).Parent := TWinControl(Sender);
  end else if Source is TButton then
  begin
    TButton(Source).Left := x;
    TButton(Source).Top := y;
    TButton(Source).Parent := TWinControl(Sender);
  end else if Source is TLabel then
  begin
    TLabel(Source).Left := x;
    TLabel(Source).Top := y;
    TLabel(Source).Parent := TWinControl(Sender);
  end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
  // wir erlauben das Ziehen von Komponenten
  // vom Typ TPanel, TButton und TLabel
  accept := (Source is TPanel) or
            (Source is TLabel) or
            (Source is TButton);
end;
So sollte das ganze funktionieren,
die wesentlichen Änderungen kannst du den Kommentaren im Quellcode entnehmen
  Mit Zitat antworten Zitat