AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [TTreeView] Während Drag&Drop auf Select reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von RWarnecke · begonnen am 13. Okt 2008 · letzter Beitrag vom 22. Okt 2008
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

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

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

  Alt 13. Okt 2008, 20:54
Hallo zusammen,

ich möchte gerne in meinem TreeView per Drag & Drop Einträge verschieben können. Das funktioniert auch schon soweit. Nur habe ich das Problem, wenn ich eine Node selektiere während des Drag, dann wird diese Node nicht erweitert. Wie kann ich das realisieren ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

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

  Alt 13. Okt 2008, 22:29
Meinst du so?

Delphi-Quellcode:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  Node: TTreeNode;
begin
  Node := TreeView1.GetNodeAt(X, Y);
  if Assigned(Node) then
    Node.Expand(False);
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

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

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

  Alt 13. Okt 2008, 23:33
Jepp, genau so meine ich das toms. Danke.

Ich habe noch zusätzlich dieses Beispiel gefunden.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
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, 17: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
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#5

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

  Alt 22. Okt 2008, 18:36
Zitat von RWarnecke:
Ich wollte damit erreichen, dass ich auch Nodes verschieben kann, die noch mehrere Childs haben.
MoveNode verschiebt den Konten inkl. Childs. Also ist hier keine Sonderbehandlung notwendig.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

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

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

  Alt 22. Okt 2008, 19:09
Danke Tom, ich habe das Drag & Drop jetzt mit MoveTo gemacht. Es scheint besser zu sein. Ich werde es mal beobachten.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz