Einzelnen Beitrag anzeigen

shubbi
(Gast)

n/a Beiträge
 
#5

Re: So etwas halte ich für einen OnMouse-Up-Bug in der ListB

  Alt 21. Okt 2006, 21:43
Bei mir geschieht das gleiche (Drag wird nicht abgebrochen).
Ich hab mir mal die Controls.pas angeguckt:
EndDrag bewirkt nur etwas, wenn Dragging = True ist.
Listbox1.Dragging ist aber in Listbox1DblClick noch nicht True.
Aber folgendes beispiel beendet das Dragging:
Delphi-Quellcode:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
// FormDetail.ShowModal;
  tlistbox(Sender).EndDrag(false);
  Color:= not Color; // um zu sehen, ob was passiert
end;
Es liegt also daran, dass FormDetail.ShowModal in ListBox1DblClick aufgerufen wird. Die Lösung ist, dass du FormDetail.ShowModal erst in Listbox1.OnEndDrag aufrufst:
Delphi-Quellcode:
class TForm1: TForm
  {...}
private
  showFormDetailInEndDrag: boolean
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  showFormDetailInEndDrag:= false;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  showFormDetailInEndDrag:= true;
  TListbox(Sender).EndDrag(false);
end;

procedure TForm1.ListBox1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if showFormDetailInEndDrag then begin
    showFormDetailInEndDrag:= false;
    FormDetail.ShowModal;
  end;
end;

{ übrige Funktionen zum Dragging... }
  Mit Zitat antworten Zitat