Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TVirtualTree, Knoten neuzeichnen (https://www.delphipraxis.net/126776-tvirtualtree-knoten-neuzeichnen.html)

hoika 2. Jan 2009 11:04


TVirtualTree, Knoten neuzeichnen
 
Hallo #,

folgender Code (vereinfacht)

Delphi-Quellcode:
procedure TForm.LV_TPDataFocusChanging(Sender: TBaseVirtualTree;
  OldNode, NewNode: PVirtualNode; OldColumn, NewColumn: TColumnIndex;
  var Allowed: Boolean);
begin
  if OldNode=NIL then Exit;

  if DataSaved then
  begin
   // to "reload view"
    Sender.InvalidateNode(OldNode);
   // Sender.Invalidate. klappt auch nicht
  end
end;
Im FocusChanging prüfe, ob sich Daten geändert haben (es gibt noch ein paar Edits zum Ändern).
Ist das der Fall wird in die DB gespeichert und jetzt soll der alte Knoten aktualisiert werden.

Klappt aber nicht.
Es passiert einfahc nix (keine Ändeurng).

Notlösung.
Neuladen des kompletten Views im OnFocusChanged.

Was mache ich denn falsch ?


Danke


Heiko

generic 2. Jan 2009 23:40

Re: TVirtualTree, Knoten neuzeichnen
 
lässt du den VST als ganzen Zeit um neuzuzeichnen?
Wird die Nachrichtenwarteschlange noch abgearbeitet?

Prototypjack 3. Jan 2009 10:07

Re: TVirtualTree, Knoten neuzeichnen
 
Moin,

Was ist, wenn du die direkte Anweisung (VirtualStringTree.RepaintNode(ANode);) verwendest?

Grüße,
Max

Edit: Smileys deaktiviert.

hoika 3. Jan 2009 16:34

Re: TVirtualTree, Knoten neuzeichnen
 
Hallo,

Wird die Nachrichtenwarteschlange noch abgearbeitet?

ich bin ja im Changing drin.
Auch in Application.ProcessMessages bringt nichts.

RepaintNode bringt auch nichts.


Ich mach mal ein Bsp.-Programm.
Wird aber erst Mitte nächster Woche was.



Heiko

generic 3. Jan 2009 23:54

Re: TVirtualTree, Knoten neuzeichnen
 
im Zweifelsfall setze den ganzen VST auf invalidate.

Delphi-Quellcode:
vst.invalidate;

hoika 4. Jan 2009 10:04

TVirtualTree, Knoten neuzeichnen gelöst
 
Hallo,

habe den Bug gefunden,
er saß vor dem Monitor ... ;)

Ursache:
Beim Schreiben habe ich die Formular-Daten in eine eigenes (neues) Objekt geschrieben.
Das Original-Objekt (Data^-property) wurde nicht angerührt,
d.h. der alte Wert wurde bei jedem Neuzeichnen-Versuch wieder angezeigt.


Danke und schönen Sonntag noch.


Heiko


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