Einzelnen Beitrag anzeigen

Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#1

So etwas halte ich für einen OnMouse-Up-Bug in der ListBox

  Alt 21. Okt 2006, 20:29
Hi,

habe zwei ListBoxen, bei denen ich mittel Drag'n Drop Items hin- und herverschiebe.
Klappt. Aber nun soll die Listbox auch auf Doppelklick auf einem Item eine andere Aktion (andere Form öffnen) ausführen.
Dabei soll das ziehen ohne "Zusatztaste" funtionieren.

Drag'n Drop Start:
Delphi-Quellcode:
procedure TFormLolc.ListBox1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if TListBox(Sender).Items.count > 0 then
 //if (Sender is TListBox) and (ssCtrl in Shift) then // soll OHNE Zusatztaste...
   TListBox(Sender).BeginDrag(False,5)
end;
Aber bei Doppelklick auf Item soll Drag-Funktion abgebrochen werden:
Delphi-Quellcode:
procedure TFormLolc.ListBox1DblClick(Sender: TObject);
var nr, Tabelle, Eintrag : String;
begin
    TListBox(Sender).EndDrag(false);
    FormDetail.ShowModal;
end;
Nun öffnet sich FormDetail, ich kann die Form nutzen.
Aber nachdem das Form geschlossen wird, ist der MouseCursor wieder im "DragModus", d.h. ich muss ersteinmal in die ListBox1 klicken um weitermachen zu können.
Egal wohin ich auch die "EndDrag"-Anweisung verschiebe.

Ausser wenn ich sie ins OnMouseUp verschiebe, denn dann funktioniert das Drag'n Drop garnicht mehr, denn es wird bei einem BeginDrag in OnMouseDown automatisch OnMouseUp aufgerufen.

Dieses hier halte ich für einen Bug (oder zumindest für nicht gewollt):

Delphi-Quellcode:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ListBox1.BeginDrag(false);
end;

procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage('Mouse-UP aufgerufen grrrr');
end;
Klicke ich mit der Maustaste in die Listbox und halte sie gedrückt,
wird trotzdem OnMouseUp ausgeführt.

Hat jemand eine IDE? (gut, könnte mit (ssCtrl in Shift) arbeiten, will ich aber nicht)

MJ
  Mit Zitat antworten Zitat