现在做重命名node 的text的操作,同一Level不允许重复
在TTreeview的OnEdited事件里写
procedure TForm1.Tree_AEdited(Sender: TObject; Node: TTreeNode;
var S: String);
begin
if Trim(S)='' then
begin
S:=Node.Text;
ShowMessage(NoValidName);
end
else if SameLevelExistsSameName(Node,S) then //检测同Level是否有重名
begin
// ShowMessage('存在同名');
Node.EditText; //*********
end ;
end;问题://********行并不能进入编辑状态~~~~~
怎么弄?
在TTreeview的OnEdited事件里写
procedure TForm1.Tree_AEdited(Sender: TObject; Node: TTreeNode;
var S: String);
begin
if Trim(S)='' then
begin
S:=Node.Text;
ShowMessage(NoValidName);
end
else if SameLevelExistsSameName(Node,S) then //检测同Level是否有重名
begin
// ShowMessage('存在同名');
Node.EditText; //*********
end ;
end;问题://********行并不能进入编辑状态~~~~~
怎么弄?
var S: String);
begin
if Trim(S)='' then
begin
S:=Node.Text;
ShowMessage(NoValidName);
end
else if SameLevelExistsSameName(Node,S) then //检测同Level是否有重名
begin
// ShowMessage('存在同名');
Node.Text='';
Node.SetFoues();//*********
end ;
end;
执行Node.EditText结点进去编辑状态
但是在OnEdited里事件里执行Node.EditText
却不能进入编辑状态
我的意思就是在出现重名的情况下重新进入编辑状态to yangguo_god(杨过):
Delphi Help :
Call EditText to allow the user to edit the node'label. This method implicitly sets the Selected and Focused properties to True
procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
var S: String);
var
n: integer;
TmpNode: TTreeNode;
begin
TmpNode := Node.Parent;
for n := 0 to TmpNode.Count - 1 do
if TmpNode.Item[n] <> Node then
if TmpNode.Item[n].Text = S then
S := Node.Text;
end;
----------------------------------------------
riff ur life
begin
if true then
begin
s:=node.Text;
postMessage(TreeView1.Handle, TVM_EDITLABEL, 0, Longint(node.ItemId));
end;
end;