求助各位老師了,謝謝
procedure TForm2.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TempNode:TTreeNode;
begin
TempNode := TreeView1.GetNodeAt(x,y);
if (TempNode<>nil) and (TempNode=TreeView1.Selected) then
begin
if treeview1.Items[0].GetNext.items[0].Selected then
begin
mainmenu1.Items[1][0].Click
end;
end;
end;
為什么提示 list index out of bounds (0)??

uj5u.com熱心網友回復:
procedure TForm2.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TempNode:TTreeNode;
begin
TempNode := TreeView1.GetNodeAt(x,y);
if (TempNode<>nil) and (TempNode=TreeView1.Selected) then
begin
if treeview1.Items[0].GetNext.item[0].Selected then
begin
mainmenu1.Items[1][0].Click
end;
end;
end;
uj5u.com熱心網友回復:
源代碼是后面那個哈uj5u.com熱心網友回復:
treeview下標越界uj5u.com熱心網友回復:
樓主想要實作什么樣的功能,是點擊treeview里面的items事件和mainmenu里面的單擊事件相關聯嗎?uj5u.com熱心網友回復:
問題出在 treeview1.Items[0].GetNext.item[0].Selected說明:
一、A樹結構
掛號科室
內科
外科
眼科
醫生辦公
辦公1
辦公2
辦公3
后臺管理
后臺1
后臺2
后臺3
二、B樹結構
掛號科室
內科
內科1
內科2
內科3
外科
眼科
醫生辦公
辦公1
辦公2
辦公3
后臺管理
后臺1
后臺2
后臺3
三、分析
1、treeview1.Items[0].GetNext=treeview1.Items[1] 對于A樹就是“內科”節點
2、treeview1.Items[0].GetNext.item[0] 對于A樹就是“內科”節點的第1個子節點,A樹沒有子節點,出現越界錯誤
3、對于B樹 treeview1.Items[0].GetNext.item[0] 就是“內科”節點的第1個子節點:“內科1”,不會出現越界錯誤
四、結論
treeview1.Items[0].GetNext.item[0]不是一個正確代碼,正確代碼不管樹結構如何,都不會出現越界錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84771.html
標籤:VCL組件開發及應用
