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?