AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Treeview Dragdrop Listview Problem :-(

Ein Thema von Bernd29bln · begonnen am 17. Dez 2006 · letzter Beitrag vom 17. Dez 2006
Antwort Antwort
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#1

Treeview Dragdrop Listview Problem :-(

  Alt 17. Dez 2006, 15:34
Hallo,

Folgendes Problem:

Delphi-Quellcode:
Function GetNodeText(Node: TTreeNode): String;
var I: Integer;
begin
if Node.Count>0 then //Untereintrag vorhanden
begin
Result:=Node.Text+#13#10; //Node hinzufügen

For I:=0 to Node.Count-1 do //Untereinträge auslesen
Result:=Result+Node[i].text+#13#10; //Untereinträge hinzufügen
end
else //Nur Node vorhanden
Result:=Node.Text; //Node hinzufügen
end;

procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
if (Sender = Playview) then //Von TreeView1
Accept := True; //Drag&Drop erlauben/aktivieren
end;

procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
with listview1 do
 begin
  if (TargetNode = nil) then
   begin
    EndDrag(False);
    Exit;
 end;
caption := GetNodeText(TargetNode); //Eintrag/Einträge in ListView hinzufügen

end;

end;

procedure TForm1.TreeViewMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 TargetNode:= TreeView.GetNodeAt(X,Y); //Node ermitteln per X,Y Koordinaten

end;
Problem in Listview wird nichts eingefügt.

Gruss Bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Treeview Dragdrop Listview Problem :-(

  Alt 17. Dez 2006, 19:17
Hallo Bernd,

klar dass da nichts in die ListView eingefügt wird. Mit "caption := GetNodeText(TargetNode)" wird lediglich der Text in der Titelzeile von Form1 verändert. Ist aber für mich auch schwer zu verstehen, was du da wo einfügen willst. Du holst dir aus einer TreeView den Text eines Knoten und aller seiner direkten Nachfolger - ich habe deinen Code mal um eine Prüfung erweitert und leicht umgestellt:

Delphi-Quellcode:
function GetNodeText(Node: TTreeNode): String;
var
  i: Integer;
begin
  if Assigned(Node) then
  begin
    Result := Node.Text;
    for i := 0 to Pred(Node.Count) do
      Result := Result + sLineBreak + Node[i].Text;
  end else Result := '';
end;
Wenn du den Knoten beim Ereignis OnMouseMove() festlegst, dann brauchst du eine ruhige Hand um die Maus nicht an der falschen Stelle aus der TreeView zu ziehen. Und eine optische Kennzeichnung des festgelegten Knotens hast du dann auch nicht. Warum verwendest du nicht einfach den angeklickten Knoten TreeView.Selected für deine Zwecke?

Beim Ereignis OnDragOver() kannst du deinen Code vereinfachen:

Delphi-Quellcode:
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Sender = Playview);
end;
Wenn eine Drag-Operation unzulässig ist, solltest du das nicht erst beim Ereignis OnDragDrop() erkennen. Du könntest die Operation bereits beim Ereignis OnStartDrag() unterbinden. Zum Beispiel muss sich der ausgewählte Knoten sicherlich auf einer ganz bestimmten Ebene befinden, da eine Ebene tiefer keine Unterknoten mehr anzutreffen sein könnten.

Ein neues Item fügst du mit ListView.Add() in die Liste ein:

Delphi-Quellcode:
var
  s: TStrings;
begin
  s := TStringList.Create;
  s.Text := GetNodeText(TreeView.Selected);
  with ListView.Add do
  begin
    Caption := s[0];
    s.Delete(0);
    SubItems.Assign(s);
  end;
  s.Free;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#3

Re: Treeview Dragdrop Listview Problem :-(

  Alt 17. Dez 2006, 23:16
Hallo,

Danke für die Antword. Hab den Code mal ausprobiert ,er funktioniert nicht.

gruss bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#4

Re: Treeview Dragdrop Listview Problem :-(

  Alt 17. Dez 2006, 23:20
Hallo,

geht jetzt und anke für den denk anstoss.

gruss bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  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 19:51 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