新建一个树节点,节点名设置为空,然后让此节点处于被编辑状态,好让用户输入新的节点名。但是用户在新建节点后,如果直接按下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;
解决方案 »
- ListView的详细用法?
- Delphi7,怎样获得DateTime数据的Time和Date值???在线等
- 为何不更新数据?
- 急~~~~~~~~~~~,谢谢!
- 如何令一个width=20,height=20的Image填充’满’一个width=300,height=300的Form
- treeview小问题,加到80分了!!!
- F9执行时,为什么我按任何一个控件,label1都不显示,错在哪里?
- 急救 我用控件mediaPlay播放.dat 怎样选择有歌声的频道?
- 各位大虾.100分求助,关于动态实现MAINMENU的问题!急急急急急!!!!
- ===关于checkbox的操作===
- 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;