1

TVirtualStringTree に表示されているノードの 2 列目を編集しています。ただし、編集が完了した後、Sender.GetNodeData(Node) を使用してテキストを取得できません。テキストが含まれていません。

OnEdited イベントでテキストを取得するにはどうすればよいですか? 編集されたテキストを取得する他の方法はありますか? Virtual Treeview CHM ヘルプ ドキュメントの最初のいくつかの FAQ ページを読み、この SO の質問の回答も参照しましたが、回答が見つかりませんでした。

現在のコードは次のとおりです。

  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;
4

1 に答える 1

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;
于 2014-11-03T14:54:38.450 に答える