var HasSibling: Boolean; SelNode: TTreeNode; ParentNode: TTreeNode; begin SelNode := TTreeView1.Selected; ParentNode := SelNode.Parent; HasSibling := (ParentNode.GetPrevChild(SelNode) <> nil) or (ParentNode.GetNextChild(SelNode) <> nil); end; 这时帮助里的,
文件或目录转换成TreeView 下面的这个函数就可以了: procedure DirToTreeView(Tree: TTreeView; Directory: string; Root: TTreeNode; IncludeFiles: Boolean); var SearchRec : TSearchRec; ItemTemp : TTreeNode; begin with Tree.Items do try BeginUpdate; if Directory[Length(Directory)] <> ' then Directory := Directory + '; if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then begin repeat if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then begin if (SearchRec.Attr and faDirectory > 0) then Root := AddChild(Root, SearchRec.Name); ItemTemp := Root.Parent; DirToTreeView(Tree, Directory + SearchRec.Name, Root, IncludeFiles); Root := ItemTemp; end else if IncludeFiles then if SearchRec.Name[1] <> '.' then AddChild(Root, SearchRec.Name); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; finally EndUpdate; end;end;
procedure TForm1.FormShow(Sender: TObject); var TreeNodeProvince,TreeNodeCity : TTreeNode; NodeDataRecPtr : PNodeDataRec; RegAdmiCode,Temp : String; begin TreeView1.Items.Clear; //TreeNodeProvince := nil; //TreeNodeCity := nil; with Query1 do begin Close; SQL.Clear; SQL.Text := 'select * from Admipartition order by ADMIPARTITIONNO asc'; try Open; except Close; Exit; end; //----^ if not (bof and eof) then begin First; while Not eof do begin Temp := fieldbyname('AdmipartitionNo').AsString; if Copy(fieldbyname('AdmipartitionNo').AsString,3,4) = '0000' then begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString; TreeNodeProvince := TreeView1.Items.AddObject(nil,FieldByName('ADMIPARTITIONNAME').AsString + '' + FieldByName('ADMIPARTITIONNO').AsString,NodeDataRecPtr); // TreeNodeProvince := TreeView1.Items.Add(nil,FieldByName('ADMIPARTITIONNAME').AsString // ); end else if Copy(FieldByName('ADMIPARTITIONNO').AsString,5,2) = '00' then begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString; TreeNodeCity := TreeView1.Items.AddChildObject(TreeNodeProvince,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr); end else begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNo').AsString; TreeView1.Items.AddChildObject(TreeNodeCity,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr); end; Next; end; end; end; TreeView1.SetFocus; TreeView1Click(Self); end; 以上是针对数据库的一个树型结构添加
var SelNode : TTreeNode;begin SelNode := TTreeView1.Selected;
if SelNode.text='你作判断的值' then begin form2.show; end;
procedure TForm1.FormShow(Sender: TObject); var TreeNodeProvince,TreeNodeCity : TTreeNode; NodeDataRecPtr : PNodeDataRec; RegAdmiCode,Temp : String; begin TreeView1.Items.Clear; //TreeNodeProvince := nil; //TreeNodeCity := nil; with Query1 do begin Close; SQL.Clear; SQL.Text := 'select * from Table'; try Open; except Close; Exit; end; //----^ if not (bof and eof) then begin First; while Not eof do begin Temp := fieldbyname('Field').AsString; if Copy(fieldbyname('Field').AsString,3,4) = '0000' then begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString; TreeNodeProvince := TreeView1.Items.AddObject(nil,FieldByName('Field').AsString + '' + FieldByName('Field').AsString,NodeDataRecPtr); end else if Copy(FieldByName('Field').AsString,5,2) = '00' then begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString; TreeNodeCity := TreeView1.Items.AddChildObject(TreeNodeProvince,FieldByName('Field').AsString,NodeDataRecPtr); end else begin New(NodeDataRecPtr); NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString; NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString; TreeView1.Items.AddChildObject(TreeNodeCity,FieldByName('Field').AsString,NodeDataRecPtr); end; Next; end; end; end; TreeView1.SetFocus; TreeView1Click(Self); end;
SelNode: TTreeNode;
ParentNode: TTreeNode;
begin
SelNode := TTreeView1.Selected;
ParentNode := SelNode.Parent;
HasSibling := (ParentNode.GetPrevChild(SelNode) <> nil) or
(ParentNode.GetNextChild(SelNode) <> nil);
end;
这时帮助里的,
下面的这个函数就可以了:
procedure DirToTreeView(Tree: TTreeView; Directory: string; Root: TTreeNode; IncludeFiles:
Boolean);
var
SearchRec : TSearchRec;
ItemTemp : TTreeNode;
begin
with Tree.Items do
try
BeginUpdate;
if Directory[Length(Directory)] <> ' then Directory := Directory + ';
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
Root := AddChild(Root, SearchRec.Name);
ItemTemp := Root.Parent;
DirToTreeView(Tree, Directory + SearchRec.Name, Root, IncludeFiles);
Root := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
AddChild(Root, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
finally
EndUpdate;
end;end;
var
TreeNodeProvince,TreeNodeCity : TTreeNode;
NodeDataRecPtr : PNodeDataRec;
RegAdmiCode,Temp : String;
begin
TreeView1.Items.Clear;
//TreeNodeProvince := nil;
//TreeNodeCity := nil;
with Query1 do
begin
Close;
SQL.Clear;
SQL.Text := 'select * from Admipartition order by ADMIPARTITIONNO asc';
try
Open;
except
Close;
Exit;
end;
//----^ if not (bof and eof) then
begin
First;
while Not eof do
begin
Temp := fieldbyname('AdmipartitionNo').AsString; if Copy(fieldbyname('AdmipartitionNo').AsString,3,4) = '0000' then
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString;
TreeNodeProvince := TreeView1.Items.AddObject(nil,FieldByName('ADMIPARTITIONNAME').AsString +
'' + FieldByName('ADMIPARTITIONNO').AsString,NodeDataRecPtr); // TreeNodeProvince := TreeView1.Items.Add(nil,FieldByName('ADMIPARTITIONNAME').AsString
// );
end
else
if Copy(FieldByName('ADMIPARTITIONNO').AsString,5,2) = '00' then
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString;
TreeNodeCity := TreeView1.Items.AddChildObject(TreeNodeProvince,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr);
end
else
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNo').AsString;
TreeView1.Items.AddChildObject(TreeNodeCity,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr); end;
Next;
end;
end;
end;
TreeView1.SetFocus;
TreeView1Click(Self);
end;
以上是针对数据库的一个树型结构添加
SelNode : TTreeNode;begin
SelNode := TTreeView1.Selected;
if SelNode.text='你作判断的值' then
begin
form2.show;
end;
var
TreeNodeProvince,TreeNodeCity : TTreeNode;
NodeDataRecPtr : PNodeDataRec;
RegAdmiCode,Temp : String;
begin
TreeView1.Items.Clear;
//TreeNodeProvince := nil;
//TreeNodeCity := nil;
with Query1 do
begin
Close;
SQL.Clear;
SQL.Text := 'select * from Table';
try
Open;
except
Close;
Exit;
end;
//----^ if not (bof and eof) then
begin
First;
while Not eof do
begin
Temp := fieldbyname('Field').AsString; if Copy(fieldbyname('Field').AsString,3,4) = '0000' then
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString;
TreeNodeProvince := TreeView1.Items.AddObject(nil,FieldByName('Field').AsString +
'' + FieldByName('Field').AsString,NodeDataRecPtr); end
else
if Copy(FieldByName('Field').AsString,5,2) = '00' then
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString;
TreeNodeCity := TreeView1.Items.AddChildObject(TreeNodeProvince,FieldByName('Field').AsString,NodeDataRecPtr);
end
else
begin
New(NodeDataRecPtr);
NodeDataRecPtr^.AdmiName := FieldByName('Field').AsString;
NodeDataRecPtr^.AdmiCode := FieldByName('Field').AsString;
TreeView1.Items.AddChildObject(TreeNodeCity,FieldByName('Field').AsString,NodeDataRecPtr); end;
Next;
end;
end;
end;
TreeView1.SetFocus;
TreeView1Click(Self);
end;