Hast du eventuell eine Option beim VirtualStringTree aktiviert, die bewirkt, dass die Komponente eigenständig auf ENTF reagiert und dann die selektierten Nodes entfernt? Bei mir funktioniert folgender Testcode nämlich wunderbar:
Delphi-Quellcode:
procedure TForm2.VirtualStringTree1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_DELETE) then
if MessageDlg('wirklich löschen?', mtConfirmation,[mbYes, mbNo, mbCancel],0) = mrYes then
VirtualStringTree1.DeleteNode (VirtualStringTree1.FocusedNode);
end;