请问,我想将treeview开成以下结构该怎样做?
A单位:
--李三
--李四
--李五
。。
B单位:
--李三娃
--李七
--李八
。。
C单位:
当我用单击‘A单位’时,在DBGRID显示A单位的所有员工,当我用单击‘李三’时记录指针指向李三的记录.
及添加,删除,修改等。谢谢!!
A单位:
--李三
--李四
--李五
。。
B单位:
--李三娃
--李七
--李八
。。
C单位:
当我用单击‘A单位’时,在DBGRID显示A单位的所有员工,当我用单击‘李三’时记录指针指向李三的记录.
及添加,删除,修改等。谢谢!!
解决方案 »
- 可否实现 检测网络延迟的程序?
- 各位老师,消息循环(Application.Run)之前,显示的Form也能相应消息该如何解释?
- 如何自定义报表设计器?
- 在TImage上每0.5秒定時畫波譜圖象並invalidate,顯示時經常閃動,但winamp的圖象變化更快卻不會出現,請問如何同步掃描?
- 哪位大哥知道next表示什么意思??
- 怎样通过程序实现删除和添加dxDBGrid的列?
- 执行到 RvProject1.Open时提示:the following reporting does not exist "",是怎么回事?
- CreatePolygonRgn ,得不到句柄,下面是代码,进行多边形剪裁,帮忙看一下,谢谢,
- 在Delphi中如何获得计算机上网卡的MAC地址。
- 首次提问
- 如何用ADOX
- 汉字内码如何转换(100)不够再加
Filter := '单位名 = A单位', 在var
ls_Filter : string;
begin
Case Node.Level of
0: begin
if node.Text = 'A单位' then
ls_Filter := '单位 = A单位'
else if node.Text = ' b单位' then
ls_Filter := '单位 = b单位'
ADODataset1.Filter := ls_Filter ;
ADODataset1.Filtered := true;
end;
1: begin
ls_filter := '单位= ' + node.Parent.Text;
ls_Filter := ls_Filter + ' and 姓名=' + node.text
ADODataset1.Filter := ls_Filter ;
ADODataset1.Filtered := true;
ADODataset1.First;
end;
end;至于增删改就自己研究吧
parent_id, id, 单位名/个人名称.-->用id和个人资料表建立连系。
A单位id1, 1, A单位
...id1 , 2, 张三
...id1 , 3, 李四
B单位id2, 4, B单位
...id2, 6, 王五id作为主键
procedure DataSetToTreeView(DataSet: TDataSet; var TreeView: TTreeView; NodeRoot: string);
var Nodes: array of TTreeNode;
Strs: array of string;
i: integer;
begin with DataSet do
begin
Close;
Open;
SetLength(Nodes, FieldCount+1);
SetLength(Strs, FieldCount);
Nodes[0] := TreeView.Items.AddChild(nil, NodeRoot);
for i:=Low(Strs) to High(Strs) do Strs[i] := #255;
First;
while not Eof do
begin
for i:=Low(Strs) to High(Strs) do
if Strs[i]<>Fields[i].AsString then
begin
Strs[i] := Fields[i].AsString;
Nodes[i+1] := TreeView.Items.AddChild(Nodes[i],Fields[i].AsString);
end;
Next;
end;
Close;
end;
end;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
SavePlace: TBook;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
begin
SavePlace :=Table1.GetBook ;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.GotoBook(SavePlace);
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, Grids, DBGrids;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var tmp:string;
i:integer;begin
with adotable1 do
begin
disablecontrols;
First;
while not eof do
begin
if fieldbyname('pid').AsString = '' then
begin
TreeView1.Items.AddObject(nil,fieldbyname('单位全名').AsString,pchar(FieldByName('id').AsString));
end
else begin
with TreeView1 do
begin
for i := 0 to Items.Count -1 do
begin
tmp := pchar(items[i].data); // var temp : String
if (tmp = fieldbyname('pid').AsString )then
begin
items.AddChildObject(items[i],
fieldbyname('单位全名').AsString,
pchar(fieldbyname('id').AsString));
//break;
end; // if
end; // for
end; // with treeview1
end; // else
next;
end; // while Enablecontrols;end; // with table1TreeView1.FullExpand;end;
请问大家在这段代码里,怎样加入记录定位,我想点击一吓其中某个节点,adotable会自动定位到该节点所指向的记录.