新建一个树节点,节点名设置为空,然后让此节点处于被编辑状态,好让用户输入新的节点名。但是用户在新建节点后,如果直接按下Enter或者Esc键,则我写在OnEdited事件里的代码没有起到作用(该代码用来检查节点名是否为空或节点重名),只有用户在树节点的标签编辑框中真正有修改的时候,OnEdited事件才起到做用,请问我应该怎么使新建节点之后,马上就能使OnEdited事件有效呢?///////////////////////////////////////////////////////////////////
新建树节点的代码如下:
var
tNode : TTreeNode;
begin
tNode := tv.Items.AddChild(tv.Selected, '');
tNode.MakeVisible;
tv.Selected := tNode;
tNode.EditText;
end;//////////////////////////////////////////////////////////////////OnEdited的代码如下:
procedure Tfrm_main.tvEdited(Sender: TObject; Node: TTreeNode;
var S: string);
var
I:integer;
begin //节点名为空
if Length(Trim(S)) = 0 then
begin
Application.MessageBox('节点名不能为空!','提示',MB_OK+MB_ICONWARNING);
tv.Selected := Node;
end; if Length(Trim(S)) > 0 then
begin
for I:= 0 to tv.Items.Count -1 do
begin
if tv.Items[I].Text = S then
begin
Application.MessageBox('已经有相同的节点名存在了,请重新命名!','提示',MB_OK+MB_ICONWARNING);
tv.Selected := Node;
break;
end;
end;
end;
end;
新建树节点的代码如下:
var
tNode : TTreeNode;
begin
tNode := tv.Items.AddChild(tv.Selected, '');
tNode.MakeVisible;
tv.Selected := tNode;
tNode.EditText;
end;//////////////////////////////////////////////////////////////////OnEdited的代码如下:
procedure Tfrm_main.tvEdited(Sender: TObject; Node: TTreeNode;
var S: string);
var
I:integer;
begin //节点名为空
if Length(Trim(S)) = 0 then
begin
Application.MessageBox('节点名不能为空!','提示',MB_OK+MB_ICONWARNING);
tv.Selected := Node;
end; if Length(Trim(S)) > 0 then
begin
for I:= 0 to tv.Items.Count -1 do
begin
if tv.Items[I].Text = S then
begin
Application.MessageBox('已经有相同的节点名存在了,请重新命名!','提示',MB_OK+MB_ICONWARNING);
tv.Selected := Node;
break;
end;
end;
end;
end;
解决方案 »
- delphi 调用数据集的元素
- 在Type Library中定义的参数怎么不能定义成数组啊
- 动态连接SQL数据库
- D6 中ComboBoxEx的用法 怎样为其itemex[].imageindex引用文件形式的图片?up有分
- delphi转换时间格式:2002-11-30 19:32:34 到20021130193234
- 运行超时
- 如何快速录入数据到ACCESS数据库?
- 高手请进,急需解决的高难度问题!!!
- 一个关于Zlib的问题?
- 有否用Delphi写ASP组件的代码及ASP调用此组件的代码?若没有,能否细谈!有,能否发一份!
- Delphi与SQL中的English Query
- 增加判断出错问题?
var
tNode : TTreeNode;
s:string;
begin
s:= chr(Key);
if Length(Trim(S)) = 0 then
begin
Application.MessageBox('节点名不能为空!','提示',MB_OK+MB_ICONWARNING);
//这里只是测试,要换成你自己点到的节点,设置个公有变量
tNode :=tv.Items.GetFirstNode ;
tNode.Selected;
tNode.EditText;
end;
end;