Hallo DataCool,
hier ist ein Vorschlag zur Lösung deines Problems:
Delphi-Quellcode:
type
TForm1 = class(TForm)
[...]
private
OldSelection : TNodeArray;
procedure HandleSelection (const aNode: PVirtualNode);
procedure HandleDeselection (const aNode: PVirtualNode);
end;
procedure TForm1.VSTChange (Sender: TBaseVirtualTree; Node: PVirtualNode);
function _Contains (const aNodes: TNodeArray; const aNode: PVirtualNode): Boolean;
var
i : Integer;
begin
for i := 0 to High(aNodes) do
if (aNodes[i] = aNode) then
begin
Result := True;
Exit;
end;
Result := False;
end;
var
NewSelection : TNodeArray;
i : Integer;
begin
NewSelection := VST.GetSortedSelection(False);
for i := 0 to High(OldSelection) do
if (not _Contains(NewSelection, OldSelection[i])) then
HandleDeselection (OldSelection[i]);
for i := 0 to High(NewSelection) do
if (not _Contains(OldSelection, NewSelection[i])) then
HandleSelection (NewSelection[i]);
OldSelection := Copy(NewSelection);
end;
procedure TForm1.HandleSelection (const aNode: PVirtualNode);
begin
Memo.Lines.Add(VST.Text[aNode, -1] + ' selected');
end;
procedure TForm1.HandleDeselection (const aNode: PVirtualNode);
begin
Memo.Lines.Add(VST.Text[aNode, -1] + ' deselected');
end;
Gruß Hawkeye