delphi+treeview+access+dbgrid问题?(100分)

  • 主题发起人 主题发起人 wupaul
  • 开始时间 开始时间
W

wupaul

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,我想将treeview开成以下结构该怎样做?
A单位:
--李三
--李四
--李五
。。。。。
B单位:
--李三娃
--李七
--李八
。。。。。
C单位:
。。。。。。
。。。。。。
当我用单击‘A单位’时,在DBGRID显示A单位的所有员工,当我用单击‘李三’时记录指针指向李三的记录.
及添加,删除,修改等。谢谢!!
 
首先需要明白一点:
在TreeView的每一个Code,有两个信息:其一,是Code.Text(String型),这是用户能够看到的节点信息;
其二,是Code.Data(pointer型),这是该节点对应的数据信息,因为是一个指针型字段,所以可以用
于存取任何信息。根据你的需求,这里可用于存放当前节点对应的ID信息,如单位ID,员工ID。这样做
的好处是避免了因为名称相同带来的混乱。你可以让前台用户看到每一个节点的Text值,但是节点所对应
的ID信息才是你编程所真正需要的数据信息。

明白了这一点,你就可以按照如下的方法来编写自己的代码了。
1、首先声明两个记录类型,一个记录单位信息(主要是单位ID),一个是员工信息(主要是员工ID);
2、树的第一级节点用TQuery(如Query1)按照单位取。将从数据库里取出的单位名称为每一个
Code的Text属性赋值,并且动态生成一个单位记录,将包括单位ID信息在内的单位信息写入该记录,并将
当前节点的Data属性指向该记录;
3、树的第二级节点按照第一级节点的ID信息查找该单位的所有员工来产生。这一步操作可以通过一个
TTable来实现(如Table1),对于每一个单位ID,查找员工的单位ID为当前节点的员工,并将其信息添加
为当前节点的子节点(添加时方法同第二步,即用员工名称给节点的Text赋值,而用包含员工ID在内的信息
给当前节点的Data指针赋值);
4、在TreeView的OnMouseDown事件里判断鼠标单击位置是否为选种某一节点,如果为NIL,
则不执行任何操作;否则根据鼠标单击的位置取出选种的节点。然后判断该节点的Level,
如果是第一级节点,那么用Query1来根据当前节点的Data指针所存放的单位ID信息来取得该
单位的所有的员工信息,将显示信息的DBGrid.DataSource.DataSet指定为TQuery1;如果是
第二级节点(员工信息),那么用Table1来取得当前节点的Data指针存放的员工ID信息来取
得该员工的详细信息。并将显示信息的DBGrid的DBGrid.DataSource.DataSet指定为Table1,
并且将Table1依次Open.Edit(可编辑状态,以备用户修改)。

 
请问WolfXP能给出详细的源码吗,因为我是初学者~~~~~[8D]
 
后退
顶部