procedure TFrmBMZJJG.FormClose(Sender: TObject; var Action: TCloseAction);
var node:TTreenode;
begin
inherited;
node:=treeview1.selected;
dwdm:=Trim(copy(Node.Text,Pos('-',Node.Text)+1,Length(Node.Text)));//取得部门编码
dwmc:=Trim(copy(trim(node.Text),1,Pos('-',Node.Text)-1));//取得部门编码
action:=cafree;
end;
procedure TFrmBMZJJG.TreeView1Change(Sender: TObject; Node: TTreeNode);
var Query3:TQuery;
begin
inherited;
if ((Node.Level>1) and (Node.HasChildren=False) and (Node.Level<4)) then
begin
//生成下一级目录
Query3:=TQuery.Create(Application);
Query3.DatabaseName:='IMS_DATA';
Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add('SELECT * FROM BISFCDEPA ');
Query3.SQL.Add('WHERE UP_DEPARTMENT_CODE=:Aup_Department_Code AND DELETE_SIGN=''N'' ');
Query3.SQL.Add('AND DEPARTMENT_GRADE<>''6'' AND DEPARTMENT_GRADE<>''7''');
Query3.ParamByName('Aup_Department_Code').AsString:=copy(Node.Text,Pos('-',Node.Text)+1,Length(Node.Text));
Query3.Open;
Query3.First;
if Query3.RecordCount<>0 then
begin
while not Query3.Eof do
begin
TreeView1.Items.AddChild(Node,Query3.FieldByName('DEPARTMENT_NAME').AsString+'-'+Query3.FieldByName('DEPARTMENT_CODE').AsString);
Query3.Next;
end;
end;
Query3.Free;
Node.Expanded:=True;
end;
end;
procedure TJG_CustomerPriceF.NodeSelect(Node: TTreeNode);
var
Node0,Node1,Node2,Node3,Node4: TTreeNode;
begin
if Node=nil then exit;
Node0 := Node;
case Node0.StateIndex of
1: //之前为全选状态,通过此过程将其和其所有孩子节点的选择状态全取消,置为2
begin
TreeCust.Selected := Node0;
TreeCust.Selected.StateIndex := 2;
Node1 := Node0.getFirstChild;
while Node1<>nil do
begin
TreeCust.Selected := Node1;
TreeCust.Selected.StateIndex := 2;
Node2 := Node1.getFirstChild;
while Node2<>nil do
begin
TreeCust.Selected := Node2;
TreeCust.Selected.StateIndex := 2;
Node3 := Node2.getFirstChild;
while Node3<>nil do
begin
TreeCust.Selected := Node3;
TreeCust.Selected.StateIndex := 2;
Node4 := Node3.getFirstChild;
while Node4<>nil do
begin
TreeCust.Selected := Node4;
TreeCust.Selected.StateIndex := 2;
Node4 := Node3.GetNextChild(Node4);
end;
Node3:=Node2.GetNextChild(Node3);
end;
Node2:=Node1.GetNextChild(Node2);
end;
Node1 := Node0.GetNextChild(Node1);
end;
end;
2: //之前为全取消状态,通过此过程将其和其所有孩子节点的选择状态全选择,置为0
begin
TreeCust.Selected := Node0;
TreeCust.Selected.StateIndex := 1;
Node1 := Node0.getFirstChild;
while Node1<>nil do
begin
TreeCust.Selected := Node1;
TreeCust.Selected.StateIndex := 1;
Node2 := Node1.getFirstChild;
while Node2<>nil do
begin
TreeCust.Selected := Node2;
TreeCust.Selected.StateIndex := 1;
Node3 := Node2.getFirstChild;
while Node3<>nil do
begin
TreeCust.Selected := Node3;
TreeCust.Selected.StateIndex := 1;
Node4 := Node3.getFirstChild;
while Node4<>nil do
begin
TreeCust.Selected := Node4;
TreeCust.Selected.StateIndex :=1;
Node4 := Node3.GetNextChild(Node4);
end;
Node3:=Node2.GetNextChild(Node3);
end;
Node2:=Node1.GetNextChild(Node2);
end;
Node1 := Node0.GetNextChild(Node1);
end;
end;
3: //之前为部分选择状态,通过此过程将其和其所有孩子节点的选择状态全选择,置为0
begin
TreeCust.Selected := Node0;
TreeCust.Selected.StateIndex := 1;
Node1 := Node0.getFirstChild;
while Node1<>nil do
begin
TreeCust.Selected := Node1;
TreeCust.Selected.StateIndex := 1;
Node2 := Node1.getFirstChild;
while Node2<>nil do
begin
TreeCust.Selected := Node2;
TreeCust.Selected.StateIndex := 1;
Node3 := Node2.getFirstChild;
while Node3<>nil do
begin
TreeCust.Selected := Node3;
TreeCust.Selected.StateIndex := 1;
Node4 := Node3.getFirstChild;
while Node4<>nil do
begin
TreeCust.Selected := Node4;
TreeCust.Selected.StateIndex := 1;
Node4 := Node3.GetNextChild(Node4);
end;
Node3:=Node2.GetNextChild(Node3);
end;
Node2:=Node1.GetNextChild(Node2);
end;
Node1 := Node0.GetNextChild(Node1);
1.展开
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Selected.Expand(True);
end;
2。取子结点下面只取下一层的如果要全部取得要用递归
procedure TForm1.Button2Click(Sender: TObject);
var
SelectedNode, ChildNode: TTreeNode;
I: Integer;
begin
SelectedNode := TreeView1.Selected;
if SelectedNode <> nil then
begin
for I := 0 to SelectedNode.Count - 1 do
begin
ShowMessage(SelectedNode.Item[I].Text);
end;
end;
end;