Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Nachfrage vorm Löschen eines Nodes beim Virtual String Tree (https://www.delphipraxis.net/170958-nachfrage-vorm-loeschen-eines-nodes-beim-virtual-string-tree.html)

ernschd 12. Okt 2012 10:18

Nachfrage vorm Löschen eines Nodes beim Virtual String Tree
 
Hi,

wie kann ich verhindern, dass beim Drücken der Taste "Entf" (Delete) der ausgewählte Node sofort gelöscht wird, und statt dessen ein Dialogfeld erscheint?
Ich habe in dem OnKeyAction- und im OnKeyDown-Event jeweils den Code stehen, jedoch erfolglos.
Beim drücken der Backspace-Taste wird der Dialog angezeigt; ich vermute mal, dass die Entf-Taste von Windows anders gehandhabt wird.
Delphi-Quellcode:
OnKeyAction:
if ((Shift = []) and (CharCode = VK_DELETE)) then
    if MessageDlg('wirklich löschen?', mtConfirmation,[mbYes, mbNo, mbCancel],0) = mrYes then
        Sender.DeleteNode (Sender.FocusedNode);


OnKeyDown:
if (Key = VK_DELETE) or (Key = VK_BACK) then begin
    if MessageDlg('wirklich löschen?', mtConfirmation,[mbYes, mbNo, mbCancel],0) = mrYes then begin
        Key := VK_DELETE;
        VST.EditNode(VST.FocusedNode, VST.FocusedColumn);
        SendKeys('{DELETE}', True);
        VST.SetFocus;
        VST.Selected[Node] := True;
        VST.FocusedNode    := Node;
    end;
end;
Danke und Gruß

Zacherl 12. Okt 2012 10:23

AW: Nachfrage vorm Löschen eines Nodes beim Virtual String Tree
 
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;

ernschd 12. Okt 2012 10:31

AW: Nachfrage vorm Löschen eines Nodes beim Virtual String Tree
 
Hmm, ich wüsste nicht, welche Option dieses Verhalten bewirken könnte...

Zacherl 12. Okt 2012 11:09

AW: Nachfrage vorm Löschen eines Nodes beim Virtual String Tree
 
Zitat:

Zitat von ernschd (Beitrag 1186746)
Hmm, ich wüsste nicht, welche Option dieses Verhalten bewirken könnte...

Entferne notfalls die Komponente vom Formular, füge sie dann erneut hinzu und stell dann nur die Optionen, die du benötigst wieder ein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz