关于TreeView选择节点的问题(150分)

  • 主题发起人 主题发起人 sjw74
  • 开始时间 开始时间
S

sjw74

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用TreeView实现树状列表过程中,选择节点并要提取显示数据时,第一
次没有错,但第二次总是显示出现‘没有当前记录’的错误,兄弟实在没辙
了。
请各位大哥指点一二。
具体出错提示:Project project1.exe raised exception class
EDbEngineError with message 'No Current
Record' Process Stopped.
具体程序:
// Country 库表中‘国家’字段
// City 库表中‘城市’字段
// Company 库表中‘公司’字段
// Scountry,Scity是全局String变量

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var node:TtreeNode;
str:string;
begin

Node:=TreeView1.GetNodeAt(x,y);
if Node<>nil then
str:= Node.Text;
try
case node.Level of
0:Begin
table1.Filter :='Country = '+''''+str+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
End;
1:begin
Scountry:=Node.Parent.Text;
table1.Filter :='City = '+''''+str+''''+' and Country = '+''''+Scountry+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
end;
2:begin
Scountry:=Node.Parent.Parent.Text;
Scity:=Node.parent.Text;
table1.Filter :='Company = '+''''+str+''''+' and Country = '+''''+Scountry+''''+' and City = '+''''+Scity+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
end;
else
end;
except
node.Free;
end;

end;

请详加指正,多谢.多谢.多谢......
 
try case node.Level of
0:Begin
table1.Filtered :=False;
table1.Filter :='Country = '+''''+str+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
End;
1:begin
Scountry:=Node.Parent.Text;
table1.Filtered :=False;
table1.Filter :='City = '+''''+str+''''+' and Country = '+''''+Scountry+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
end;
2:begin
Scountry:=Node.Parent.Parent.Text;
Scity:=Node.parent.Text;
table1.Filtered :=False;
table1.Filter :='Company = '+''''+str+''''+' and Country = '+''''+Scountry+''''+' and City = '+''''+Scity+'''';
table1.Filtered :=true;
DataSource1.Enabled :=true;
end;
else
end;
except
node.Free;
end;
 
caiaj 老兄
我用了您给的方法,但还是出现同样的错误,就连错误提示都没有变,
请问为何?
 
请在Filtered :=true后用table1.first或别的什么移动指针。
 
把Except后面的Node.Free去掉.完全没有用,而且还会出错.
估计问题在此;同时Case语句中也有错.
 
如果你帖出来的代码是原样,真得恭喜你的运气很好,运行竟然不出错

if Node<>nil then
str:= Node.Text;
try <--------这以下的语句在node为nil的时候照样被执行,你的运气真的好到
从来没在treeviewe的其他地方按过鼠标? :-)

把这个错误先改掉,再说别的.
 
问题已经解决,在下是新手,请众位大虾指点......
‘礼品’很少,但也敬请奉上。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
763
import
I
后退
顶部