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ß