Pour savoir si la sélection a changé, on peut utiliser l'event OnFocusChanged
function TForm1.GetSelectedMarker: TMarker; var pNode: PVirtualNode; pData: PVSTMarkData; begin pNode := VSTMark.GetFirstSelected; if assigned(pNode) then begin pData := VSTMark.GetNodeData(pNode); Result := pData^.Marker; end else Result := nil; end;
var vI: integer; vNodes: TNodeArray; begin vNodes := TVirtualStringTree(Source).GetSortedSelection(True); for vI := 0 to length(vNodes) - 1 do ... end;