Einzelnen Beitrag anzeigen

Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

einfaches Drag & Drop und MouseUp

  Alt 13. Jun 2017, 15:50
Hallo,
ich habe schon zum Drag&Drop einiges gelesen und mitbekommen, dass es dann Probleme mit dem MouseUp gibt, wenn man dieses auch benötigt.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    ListBox1: TListBox;
    procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    StartDragging: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  StartDragging := False;
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  StartDragging := True;
  Label1.BeginDrag(False, 8);
  StartDragging := False;
end;

procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if StartDragging then
  begin
    ShowMessage('StartDragging=True');
    Exit;
  end;

  if Button = mbRight then
    ShowMessage('mbRight');

  if Button = mbLeft then
    ShowMessage('mbLeft');
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Sender is TLabel then
  begin
    ListBox1.Items.Add(TLabel(Sender).Caption);
  end;
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Sender is TLabel then
    Accept := True
  else
    Accept := False;
end;
Hier mal ein ganz einfaches Beispiel mit einem Label und einer ListBox.
Ich möchte eigentlich, die entsprechende ShowMessage erhalten wenn ich mit der linken oder rechten Maustaste drauf drücke bzw. das entsprechende DragEvent wenn ich es in die ListBox ziehe.

Hat jemand eine Idee wie man das hinbekommt?
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat