用了treeview1.items.clear不行
uj5u.com熱心網友回復:
delphi7uj5u.com熱心網友回復:
用的是ADOtable,在剛打開程式的時候使用查詢,就可以顯示出節點。我用treeview1.items.clear后再次查詢就顯示不出來節點了uj5u.com熱心網友回復:
treeview1.items.clear是清除現有的所有節點;”剛打開程式的時候使用查詢,就可以顯示出節點“,這個應該不是你打開查詢就自動加載并填充了節點資料,肯定會有其他代碼去處理節點資料的。所以你清除原有節點資料后僅僅只是再查詢,肯定不會有節點出現。
你看看剛打開程式后那個查詢后面的代碼吧。
uj5u.com熱心網友回復:
還有一個簡單辦法,你全代碼搜索”treeview1“就可以找到在什么地方對其進行了操作處理。uj5u.com熱心網友回復:
procedure TForm1.show();var
node1,node2,node3,node4:TTreeNode;
i,j,k,l:Integer;
id1,id2,id3:string;
begin
company:='';
GroupBox4.Hide;
GroupBox5.Hide;
ADOTable1.Active:=True;
ADOTable1.Filter:='Cstate='+'0';
ADOTable1.Filtered:=True;
ADOTable2.Active:=True;
ADOTable3.Active:=True;
ADOTable4.Active:=True;
try
TreeView1.Selected:=nil;
while not ADOTable1.Eof do
while not ADOTable2.Eof do
while not ADOTable3.Eof do
while not ADOTable4.Eof do
for i := 0 to ADOTable1.RecordCount - 1 do
begin
node1:=Treeview1.Items.Add(nil, ADOTable1.FieldByName('CompanyName').AsString);
node1.StateIndex:=1;
node1.SelectedIndex:=ADOTable1.FieldByName('CompanyID').AsInteger;
id1:=ADOTable1.FieldByName('CompanyID').AsString;
ADOTable2.Filter:='ToCompanyID='+#39+id1+#39+' and Mstate='+'0';
ADOTable2.Filtered:=True;
for j := 0 to ADOTable2.RecordCount - 1 do
begin
node2:=TreeView1.Items.AddChildObject(node1,ADOTable2.FieldByName('MainDepartmentName').AsString,nil);
node2.StateIndex:=2;
node2.SelectedIndex:=ADOTable2.FieldByName('MainDepartmentID').AsInteger;
id2:=ADOTable2.FieldByName('MainDepartmentID').AsString;
ADOTable3.Filter:='ToMainDepartmentID='+#39+id2+#39+' and MState='+'0';
ADOTable3.Filtered:=True;
for k := 0 to ADOTable3.RecordCount - 1 do
begin
node3:=TreeView1.Items.AddChildObject(node2,ADOTable3.FieldByName('SecondDepartmentName').AsString,nil);
node3.StateIndex:=3;
node3.SelectedIndex:=ADOTable3.FieldByName('SecondDepartmentID').AsInteger;
id3:=ADOTable3.FieldByName('SecondDepartmentID').AsString;
ADOTable4.Filter:='ToDepartmentID='+#39+id3+#39+' and Wstate='+'0';
ADOTable4.Filtered:=True;
for l := 0 to ADOTable4.RecordCount - 1 do
begin
node4:=TreeView1.Items.AddChildObject(node3,ADOTable4.FieldByName('WorkerName').AsString,nil);
node4.StateIndex:=4;
node4.SelectedIndex:=ADOTable4.FieldByName('WorkerID').AsInteger;
ADOTable4.Next;
end;
ADOTable3.Next;
end;
ADOTable2.Next;
end;
ADOTable1.Next;
end;
except
ShowMessage('無公司資訊');
end;
TreeView1.FullExpand;
end;
uj5u.com熱心網友回復:
上面是我的查詢代碼,我的查詢顯示陳述句里有回圈添加節點的陳述句呀。
uj5u.com熱心網友回復:
1、ADOTable1到ADOTable4的Active:=True后,你可以再ADOTable1.First;一下,確保在第一條記錄。2、沒看出來你一堆 while not ADOTable1.Eof do 是想做什么用的,特別是結合for i := 0 to ADOTable1.RecordCount - 1 do的情況下。
3、for i := 0 to ADOTable1.RecordCount - 1 do的回圈方式到也可以,如果使用while not ADOTable1.Eof do會更好一些;
4、'ToDepartmentID='+#39+id3+#39+' and Wstate='+'0';這里的 #39,其實你可以 'ToDepartmentID='''+id3+''' and Wstate=0'; 這樣使用;
最后說一下,通常我們處理樹,不會這樣多代碼去嵌套,因為有時候我們并不知道樹會有多少級。
以下代碼僅參考,修改的你的。
var
node1,node2,node3,node4:TTreeNode;
id1,id2,id3:string;
begin
company:='';
GroupBox4.Hide;
GroupBox5.Hide;
ADOTable1.Active:=True;
ADOTable1.Filter:='Cstate='+'0';
ADOTable1.Filtered:=True;
ADOTable1.First;
ADOTable2.Active:=True;
ADOTable3.Active:=True;
ADOTable4.Active:=True;
try
TreeView1.Selected:=nil;
while not ADOTable1.Eof do
begin
node1:=Treeview1.Items.Add(nil, ADOTable1.FieldByName('CompanyName').AsString);
node1.StateIndex:=1;
node1.SelectedIndex:=ADOTable1.FieldByName('CompanyID').AsInteger;
id1:=ADOTable1.FieldByName('CompanyID').AsString;
ADOTable2.Filter:='ToCompanyID='''+id1+''' and Mstate=0';
ADOTable2.Filtered:=True;
ADOTable2.First;
while not ADOTable2.Eof do
begin
node2:=TreeView1.Items.AddChildObject(node1,ADOTable2.FieldByName('MainDepartmentName').AsString,nil);
node2.StateIndex:=2;
node2.SelectedIndex:=ADOTable2.FieldByName('MainDepartmentID').AsInteger;
id2:=ADOTable2.FieldByName('MainDepartmentID').AsString;
ADOTable3.Filter:='ToMainDepartmentID='''+id2+''' and MState=0';
ADOTable3.Filtered:=True;
ADOTable3.First;
while not ADOTable3.Eof do
begin
node3:=TreeView1.Items.AddChildObject(node2,ADOTable3.FieldByName('SecondDepartmentName').AsString,nil);
node3.StateIndex:=3;
node3.SelectedIndex:=ADOTable3.FieldByName('SecondDepartmentID').AsInteger;
id3:=ADOTable3.FieldByName('SecondDepartmentID').AsString;
ADOTable4.Filter:='ToDepartmentID='''+id3+''' and Wstate=0';
ADOTable4.Filtered:=True;
ADOTable4.First;
while not ADOTable4.Eof do
begin
node4:=TreeView1.Items.AddChildObject(node3,ADOTable4.FieldByName('WorkerName').AsString,nil);
node4.StateIndex:=4;
node4.SelectedIndex:=ADOTable4.FieldByName('WorkerID').AsInteger;
ADOTable4.Next;
end;
ADOTable3.Next;
end;
ADOTable2.Next;
end;
ADOTable1.Next;
end;
except
ShowMessage('無公司資訊');
end;
TreeView1.FullExpand;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229981.html
標籤:數據庫相關
