AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu DBTreeview

Ein Thema von onkelmehli · begonnen am 16. Apr 2007 · letzter Beitrag vom 19. Apr 2007
Antwort Antwort
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#1

Frage zu DBTreeview

  Alt 16. Apr 2007, 15:31
Hallo, ich möchte die DBTreeview-Komponente (DTADOTree) für meine Anwendung benutzen, habe aber noch keine großen Erfahrungen damit, somit hätte ich folgende Frage:

Wie kann ich per Drag&Drop ein Node-Item so verschieben, das in der Datenbank der Wert 0 in der parentid geschrieben wird, also das Note-Item praktisch als Root angelegt wird ?
Gibt es eine Einstell-Möglichkeit oder kann man diese nur als child verschieben ?

Gruß Matthias
  Mit Zitat antworten Zitat
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Frage zu DBTreeview

  Alt 18. Apr 2007, 09:38
Hallo, hat niemand Erfahrung mit der DBTreeview ? In der Hilfe zur Komponente steht leider nichts dazu, auch in sämtlichen Foren nicht.

währe für schnelle Hilfe sehr dankbar !

Gruß

Matthias
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Frage zu DBTreeview

  Alt 18. Apr 2007, 11:59
Hallo,

so wie ich es sehe geht das ganze nicht, da dir ein leerer/unsichtbarer Rootknoten fehlt.
Schau dir mal die Demo3 an, dort kann jedenfalls ein knoten auf ein anderen 'Rootknoten' verschoben
werden, daraus müsste man etwas machen können.


Gruß

(Melde mich heut noch mal).
  Mit Zitat antworten Zitat
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Frage zu DBTreeview

  Alt 18. Apr 2007, 13:24
Hallo, danke erst einmal.

Die Funktionalitäten der Demos sind mir soweit schon klar, nur löst keiner von ihnen mein Problem.
Und wenn ich mir die Komponente selbst anschaue, dann wird beim Move oder Copy eines Knotens immer abgefragt, ob es sich beim Zielknoten um den Rootknoten handelt, wenn ja, dann verschiebt er den Knoten erst gar nicht.
Gibt es einen besonderen Grund warum das so sein soll ?
Ich habe schon versucht, im DragDrop-Ereignis das ganze selbst zu steuern, leider erfolglos mit Zugriffsverletzungen beim Aktualisieren der Treeview.
Denn eigentlich ist es doch nichts weiter, als das in der DB die parentid geändert wird und die Treeview danach aktualisiert wird, oder seh ich das falsch ?

Mir geht es eigentlich darum, das ich in der Tabelle keinen Datensatz haben möchte, mit dem ich z. B. bei Auswertungen Probleme bekommen könnte.

Gibt es vielleicht eine Alternative zu der DBTreeview mit der man so etwas realisieren kann ?

Gruß

Matthias
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Frage zu DBTreeview

  Alt 18. Apr 2007, 18:03
Hallo Matthias,

wir bleiben mal bei der Demo3 und klinken uns in der Ereignisbehandlung DTTableTree1.OnDragDrop ein.

Delphi-Quellcode:
procedure TForm1.DTTableTree1DragDrop(Sender: TBaseVirtualTree;
  Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
  Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
  NewParentNode: PVirtualNode;
  CurData : PNodeItem;
begin
  if (Sender is TDTTableTree) then
  begin
    NewParentNode := TDTTableTree(Sender).GetNodeAT(Pt.X, Pt.Y);
    if NewParentNode = nil then
    begin
      with TDTTableTree(Sender).DataSource.DataSet, TDTTableTree(Sender) do
      begin
        DisableControls;
        Edit;
        FieldValues[DBTreeFields.ParentFieldName] := 0;
        Post;
        EnableControls;
      end;
    end
    else
    begin
      with TDTTableTree(Sender).DataSource.DataSet, TDTTableTree(Sender) do
      begin
        CurData := TDTTableTree(Sender).GetNodeData(NewParentNode);
        if Assigned(CurData) and Assigned(CurData^) then
        begin
          DisableControls;
          Edit;
          FieldValues[DBTreeFields.ParentFieldName] := CurData^.Key;
          Post;
          EnableControls;
        end;
      end;
    end;
  end;
end;
Das einzige was jetzt noch bleibt ist Aktualisierung der Anzeige.

Gruß
  Mit Zitat antworten Zitat
onkelmehli

Registriert seit: 8. Mär 2006
119 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Frage zu DBTreeview

  Alt 19. Apr 2007, 16:10
Hallo Alter Mann (bitte nicht persönlich nehmen ),

vielen dank noch einmal, das sich jemand mit meinem Problem beschäftigt.

Bis zur Lösung in dem DragDrop-Ereignis war ich bisher schon gekommen und das danach eine Aktualisierung statt finden muß. Und genau hier lag mein Problem:
ich bekam immer eine Zugriffsverletzung beim aktualisieren, durch den Debugger stellte ich fest, das wärend meiner Aktualisierung, genauer gesagt nach dem Löschen der Knoten, noch eine Aktualisierung stattfand, als diese dann versuchte die Knoten zu löschen, kam natürlich bei FreeMem(ist ja kein Knoten mehr da) die Zugriffsverletzung.
Und gerade als ich hier schreibe, fiel mir in den Optionen auf, das ich AutoDeleteMovedNodes auf true hatte , somit war mein Problem glöst.

Gruß

Matthias
  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 16:23 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