3

我想实现一个搜索过程 aVirtualStringTree并且我想通过将搜索文本与来自节点而不是来自指针(例如Data^.Column0)的文本进行比较来做到这一点,因为这并不总是 as String

请帮助我提出从节点取回文本的建议。

为了更好地理解,请参见下面的代码(我调整了 Lazarus 的示例)

type
  PTreeData = ^TTreeData;
  TTreeData = record
    Column0: TDate; //Date
    Column1: Integer; //Integer
    Column2: String;
  end;

procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
 Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  Data: PTreeData;
begin
  Data := VST.GetNodeData(Node);
  case Column of
    0: CellText := DateToStr(Data^.Column0); //2015-05-11 or 11-05-2015
    1: CellText := IntToStr(Data^.Column1) + ' days'; //22 days
    2: CellText := Data^.Column2;
  end;
end;
4

1 回答 1

3

如果要获取虚拟树视图单元格文本,则可以使用该Text属性。这将在内部触发OnGetText事件,您将能够获取文本,就像您将其返回以显示在树中一样:

var
  S: string;
  Node: PVirtualNode;
  Column: TColumnIndex;
begin
  ...
  S := VirtualStringTree.Text[Node, Column];
end;
于 2015-05-11T07:31:23.317 回答