我想也是,你愿意帮一帮我吗?我很想早点完成这个程序,但我的分不太多。我有什么条件,我能办到的,我一定尽量。先谢了!
email:[email protected]

解决方案 »

  1.   

    现在回答你的第一个问题:
    你所要做的有两件事,一:在treeview中实现拖拽功能,很简单:
    procedure TForm1.treeview1DragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    begin
       Accept:=sender=source;
    if y<10 then
         postmessage(treeview1.handle,WM_VScroll,SB_LINEUp,0)
       else if treeview1.Height-y<10 then
         postmessage(treeview1.handle,WM_VScroll,SB_LINEDOWN ,0)
    end;
    procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);var 
      AnItem: TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
      if TreeView1.Selected = nil then Exit;
      HT := TreeView1.GetHitTestInfoAt(X, Y); 
      AnItem := TreeView1.GetNodeAt(X, Y);
      if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then 
      begin
        if (htOnItem in HT) or (htOnIcon in HT) then AttachMode := naAddChild
        else if htNowhere in HT then AttachMode := naAdd    else if htOnIndent in HT then AttachMode := naInsert;
        TreeView1.Selected.MoveTo(AnItem, AttachMode); 
      end;
    end;
    有一个问题是:有些节点不能移动,这就需要你自己根据需要控制了;
    二:你要在改变树型结构同时改变员工的所属部门;
    在上面的TreeView1.Selected.MoveTo(AnItem, AttachMode); 语句下写上:
    with query1 do 
    begin
      colse;
      sql.clear;
      sql.add('update ‘表2’');
      sql.add('set '员工名字段'='''+anitem.text+'''');
      sql.add('where '员工名字段'='''+TreeView1.Selected.text+'''');
    end;
      

  2.   

    刚才回答的是第二个问题!现在回答第一个,不过我觉得你的问题‘我想在dbgrid中动态修改数据后能自动存盘,却无法修改dbgrid中的数据,更谈不上存盘了。’中的第一个dbgrid应该是treeview吧!
      

  3.   

    不是,就是我在treeview中单击员工时,在dbgrid中显示相应的员工数据库中的数据,我在 dbgrid中修改数据后存盘的功能。
      

  4.   

    1。当你修改了数据库的时候,要及时修改 Treeview 中 TreeNode。
    2。基本同意 wanwangzhiwang(万王之王),若公司部门(第一级节点)不需要移动,在
      Accept:=sender=source 前加上一句: Accept:=Not (Source.Lever=0);
    3。当你修改了一个结点,要及时对数据库做相应的修改。
    4。本来删除、增加比较简单。但要考虑到员工的名字可能相同,所以不能以名字来检索,
       要利用TTreeNode.Data 属性。你的问题其实比较简单,就是很繁。所以我也只能说这么多了。
      

  5.   

    小MM,我想就其中几个问题发表一下自己的看法,可能不对,至少可以去试试。
    1.无法修改dbgrid中的数据的问题:你可以查看一下你的dbgrid中的属性设置,比如Options中的dgEditing属性,ReadOnly属性,若这些属性设为只读,则将不能修改dbgrid中的数据。具体设置可以查一下参考资料。另外,你连接数据库的用户是否有对数据库写的权限(请说明一下无法修改的原因)。
    2.自动存盘及自动更改的问题:这个主要是选择触发事件,你可以在dbgrid中数据发生或焦点改变时(事件中)执行存盘操作(提交)。但这样做我觉得并不很好,当一个数据库很大,而在输入时就出错了,想修改一下,将会浪费时间。在treeview中动态调整某人所属部门也是同样的道理。
    就如wanwangzhiwang(万王之王)兄所说的,这个实现很繁,慢慢做吧!呵呵。
    说得不对,请各路高手指正,希望能共同提高。
      

  6.   

    最好不要用dbgrid修改数据!还有我不理解你所说的‘存盘’是什么意思?应该是修改数据库吧?
    如果你真的想在dbgrid中修改的话,建议你加一个TDBNavigator控件,使用起来很简单!
    如果相同时修改treeview中的数据就有点繁,这样吧,你干脆重新构建一次!
    至于其他问题,我现在很忙,等我有时间帮你解决吧!
      

  7.   

    希望此贴能成为treeview控件的详细技术资料!
      

  8.   

    并能介绍一些有关treeview控遇到的问题,或一些实例呢?
      

  9.   

    希望大家多多参与treeview讨论。比如treeview怎样更好地与数据库联系起来?
      

  10.   

    对了,怎样清出treeview中显示的所有数据?
      

  11.   

    我收集了treeview的很多方法和实例,有愿要者,请给我来信!
      

  12.   

    我收索了一下,关于treeview的问题,少说也有100个。
      

  13.   

    我收索了一下,关于treeview的问题,少说也有100个。
      

  14.   

    我收索了一下,关于treeview的问题,少说也有100个。