Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: [TTreeView] Während Drag&Drop auf Select reagieren

  Alt 22. Okt 2008, 16:43
Ich habe das Beispiel in einer etwas anderen Form verwendet. Ich habe das Verschieben in eine eigene Procedure gesteckt. Nun habe ich das Problem dabei, dass sich mein Programm fast regelmäßig aufhängt, wenn ich zu schnell die Kategorien wechsel mit der Maus. Mit dem Debugger habe ich herrausgefunden, dass ich immer in der Procedure für das Verschieben hängen bleibe. Nur weiß ich nicht warum. Hier die Procedure zum Verschieben :
Delphi-Quellcode:
procedure TMainForm.MoveNode(TargetNode, SourceNode : TTreeNode);
var
  nodeTmp : TTreeNode;
  i : Integer;
begin
  with TV_Category do
  begin
    nodeTmp := Items.AddChild(TargetNode,SourceNode.Text);
    nodeTmp.ImageIndex := SourceNode.ImageIndex;
    nodeTmp.SelectedIndex := SourceNode.SelectedIndex;
    for i := 0 to SourceNode.Count -1 do
    begin
      MoveNode(nodeTmp,SourceNode.Item[i]);
    end;
  end;
end;
Das funktioniert auch alles wunderbar, wenn ich langsam damit arbeite. Das Programm bleibt in der For-Schleife hängen und wiederholt immer die Kategorie, die als letztes vor dem Aufhängen angeklickt wurde. Ich wollte damit erreichen, dass ich auch Nodes verschieben kann, die noch mehrere Childs haben.

Jetzt meine Frage, wird das OnDragOver-Ereignis auch dann aufgerufen, wenn ich nur eine Node anklicke ? Kann ich das irgendwie verhindern, dass sich diese Procedure aufhängt und wenn ja wie ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat