TVirtualStringTree:如何获取编辑文本?

时间:2014-11-03 14:45:53

标签: delphi virtualtreeview tvirtualstringtree

我正在编辑TVirtualStringTree中显示节点的第二列。但是,在编辑完成后,我无法使用Sender.GetNodeData(Node)检索文本 - 它不包含任何文本。

如何在OnEdited事件中获取文本?有没有其他方法来获取编辑的文本?我已经阅读了Virtual Treeview CHM帮助文档的前几个FAQ页面,并且还提到了答案in this SO question,但找不到答案。

以下是目前的代码:

  TTherapData = record
    TherapID: Integer;
    TherapName: String[120];
    TherapInstr: String[120];
    Selected: Byte;
  end;

  PTherapData = ^TTherapData;

procedure TfmPatient_Conslt.vstRxList_AsgEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
var
  TherapData: PTherapData;
begin
  TherapData := Sender.GetNodeData(Node);
  if Assigned(TherapData) then
  begin
    TherapData^.TherapInstr := vstRxList_Asg.Text[Node, 1];
    showmessage(TherapData^.TherapInstr);
  end;

  FTherapDataListAsg_Iter := 0;
  vstRxList_Asg.NodeDataSize := SizeOf(TTherapData);
  vstRxList_Asg.RootNodeCount := 0;
  vstRxList_Asg.RootNodeCount := TherapDataList_CountSelectedItems;

end;

1 个答案:

答案 0 :(得分:1)

感谢来自 TLama 的提示,答案是处理OnNewText事件:

procedure TfmPatient_Conslt.vstRxList_AsgNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
  NewText: string);
var
  TherapData: PTherapData;
begin

  if (Column = 1) then
  begin
    TherapData := Sender.GetNodeData(Node);
    if Assigned(TherapData) then
      TherapData^.TherapInstr := NewText;
  end;

end;