完成VirtualStringTree排序,不仅要使用其HeaderClick还要使用CompareNodes:
procedure TFrmOrderList.ListOrderCompareNodes(Sender: TBaseVirtualTree;
Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
var
order1, order2: PlistOrder;
begin
order1 := Sender.GetNodeData(Node1);
order2 := Sender.GetNodeData(Node2);
if Column = 0 then
begin
result := WideCompareStr(order1.customername,order2.customername)
end
else if Column = 1 then
result := WideCompareStr(order1.goods,order2.goods) ;
if Column = 2 then
begin
if order1.intType > order2.intType then
result := 1
else
if order1.intType < order2.intType then
result := -1
else
result := 0;
end;
end;
博客介绍了完成VirtualStringTree排序的方法,需同时使用HeaderClick和CompareNodes。给出了CompareNodes的具体代码实现,根据不同列进行不同的比较逻辑,如比较客户名称、商品,以及整数类型的值。
909





