一我想在TDBGrid中选中多条记录后拖至Dbtreeview中的一个目录时,将所有选中记录'名称'字段的值改为此目录名.我用下面的试了一下,发现只能修改鼠标按信住的那条记录的值.
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
T: TTreeNode;
begin
T:= TreeView1.GetNodeAt(X, Y);
Accept:= (Source is TDBGrid) and (T <> nil);
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X,
 Y: Integer);
var T:TTreenode;
   i,j:integer;
begin
 T:=TreeView1.getnodeat(x,y);
 begin
 for i:=1 to DBGrid1.SelectedRows.Count-1  do
 dbgrid1.DataSource.DataSet.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i-1]));
 dbgrid1.DataSource.DataSet.Edit;
 dbgrid1.DataSource.DataSet.FieldByName('名称').Text:=T.Text; 
 dbgrid1.DataSource.DataSet.post;
end;
end;procedure TForm1.DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:= (Source is TDBGrid);
end;procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
DBGrid1.BeginDrag(True)
else
DBGrid1.EndDrag(False);
end;
二我想在修改完treeview的目录名后,马上得到修改后的目录名的值,再根据此目录名对数据进行查询操作.该用哪个事件。
我首先在修改目录这个菜单里添加了treeview.selected.edittext;然后在onendedit事件中用newname:=treeview1.selected.text;但得到的却还是修改前的目录名,请各位高手指点。谢谢.

解决方案 »

  1.   

    先说第二个问题,在OnEndEdit事件中,有一个var S的参数,那个就是修改后的名字。第一个问题是DBGrid和DataSet控件相关联的,而DataSet当前选中的记录就是你鼠标点击的那条记录,所以会出现你说的情况的。
      

  2.   

    第一个问题,我知道原因了,因为你Post后Book发生变化了,建议你先把所选的记录中有唯一字段的值先保存下来,然后再统一update一下就可以了。