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/)
-   -   Delphi VST -> Exception bei checked Interation von seletiertem Node (https://www.delphipraxis.net/120951-vst-exception-bei-checked-interation-von-seletiertem-node.html)

richard_boderich 19. Sep 2008 11:24


VST -> Exception bei checked Interation von seletiertem N
 
Hallo allerseits!

Ich benutzte folgenden Code um über alle checked nodes zu interieren.

Delphi-Quellcode:
var daten:TOMeineDaten;
lnode:PVirtualNode;
begin
  daten:=TOMeineDaten(vst.GetNodeData(lnode)^);

  lnode:=vst.getfirstchecked(csCheckedNormal);
while assigned(lnode) do
begin
  daten:=TOMeineDaten(vst.GetNodeData(lnode)^);
  application.ProcessMessages;
  vst.DeleteNode(lnode,false);
  lnode:=vst.getnextchecked(lnode,csCheckedNormal);
end;
Das funktioniert auch wunderbar, außer wenn das gerade selectierte Node mit angehakt ist. Dann gibts ne Zugriffsverletztung. Weis vielleicht jemand wieso?
Ich habe auch schon ein VST.clearselection vor der Routine probiert, aber das hat auch nicht geholfen.

mirage228 19. Sep 2008 11:27

Re: VST -> Exception bei checked Interation von seletiert
 
Du löscht den Node und willst dann vom nicht-existierenden Node zum nächsten Node. Das geht nicht...

Viele Grüße

richard_boderich 19. Sep 2008 12:49

Re: VST -> Exception bei checked Interation von seletiert
 
Ich habe den Fehler gefunden.

Ich muss den Event onFocusChanged auf nil setzten, dann klappt es.

Mirage so gesehen hast du eigentlich Recht, aber warum funktioniert es dann? Kann es sein das es daran liegt das ich bei deletenode den Parameter
"Reindex" auf false habe?

mirage228 20. Sep 2008 03:26

Re: VST -> Exception bei checked Interation von seletiert
 
Zitat:

Zitat von richard_boderich
Mirage so gesehen hast du eigentlich Recht, aber warum funktioniert es dann? Kann es sein das es daran liegt das ich bei deletenode den Parameter "Reindex" auf false habe?

Hm, möglicherweise. Ich müsste mir den Parameter jetzt aber nochmal genauer im Code oder in der Doku anschauen, um sagen zu können, ob das die beabsichtige Funktion ist oder das bei Dir nur ein "Seiteneffekt" war... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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