Einzelnen Beitrag anzeigen

torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Panels (alTop) per Drag and Drop neu anordnen

  Alt 3. Aug 2005, 14:04
Danke für Deinen Tipp. Ich habe aber festgestellt, dass die Panels während des movens ziemlich stark flackern und flimmern. Ich habe mich noch mal mit Delphi-Hilfe beschäftigt und daraus folgenden eigenen Lösungsvorschlag gebaut:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1EndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbLeft then { Nur ziehen, wenn linke Maustaste gedrückt ist }
    with Sender as TPanel do { Sender als TFileListBox behandeln }
sou BeginDrag(False); { Wenn ja, dann ziehen }
end;

procedure TForm1.Panel1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if Target <> nil then
  begin
    (sender as TPanel).Top:=y;
    (sender as TPanel).Left:=x;
    (sender as TPanel).Update;
  end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source is TPanel then
    Accept := True
  else
    Accept := False;
end;

end.
Das funktioniert auch einwandfrei, ohne Flicker und Flacker und ich habe dabei auch wieder was gelernt.
Danke
Tom
  Mit Zitat antworten Zitat