关于TreeView 的 OnEdited事件的困惑,请高手指点!!! ( 积分: 60 )

  • 主题发起人 主题发起人 LearningNov
  • 开始时间 开始时间
L

LearningNov

Unregistered / Unconfirmed
GUEST, unregistred user!
新建一个树节点,节点名设置为空,然后让此节点处于被编辑状态,好让用户输入新的节点名。但是用户在新建节点后,如果直接按下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.Text = S then
begin
Application.MessageBox('已经有相同的节点名存在了,请重新命名!','提示',MB_OK+MB_ICONWARNING);
tv.Selected := Node;
break;
end;
end;
end;
end;
 
改为在onKeyPress里加些处理不就可以了..
 
还有种方法:
新建节点后,立即添加字符进去,如"请输入名称"
 
感觉都没有回答到点子上
 
后退
顶部