AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein VirtualStringTree und Klasseninstanzen - Node Data finden
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree und Klasseninstanzen - Node Data finden

Ein Thema von günni0 · begonnen am 16. Apr 2018 · letzter Beitrag vom 17. Apr 2018
 
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: VirtualStringTree und Klasseninstanzen - Node Data finden

  Alt 17. Apr 2018, 11:26
Delphi-Quellcode:
procedure DeleteUserNode(iIndex: Integer);
begin
 if iIndex > aVSTDataClasses.Count - 1 then // ---------------- neu
  Exit;

 VST.Clear;
 aVSTDataClasses.Delete(iIndex);
 VST.RootNodeCount := aVSTDataClasses.Count; // re-draws alle nodes of VST
end;
Da sind wir dann jetzt schon beim ErrorHandling. Aber das ist ok. Alternativ zum Exit könntest du es auch so machen. Sieht eventuell besser aus:
Delphi-Quellcode:
procedure DeleteUserNode(iIndex: Integer);
begin
  if (iIndex > -1) and (iIndex < aVSTDataClasses.Count) then begin
    VST.Clear;
    aVSTDataClasses.Delete(iIndex);
    VST.RootNodeCount := aVSTDataClasses.Count; // re-draws all nodes of VST
  end;
end;


Zitat:
Alternativ zum RootNodeCount und OnInitNode-Eventhandler kannst du natürlich auch versuchen mit AddChild zu arbeiten.
Zitat:
Bloß nicht.
Habe es eben dennoch mal ausprobiert.
Mein erstes Erlebnis waren Nodes die nicht richtig gezeichnet wurden, wenn man das AfterItemPaint-Event nutzt. Aber das war nur minimal und nicht weiter schlimm und auch sofort wieder weg, sobald man mit der Maus über den Node gefahren ist.
Dazu eine kleine Sache. Das hast du zwar in dem anderen Thread geschrieben, aber da du es jetzt gerade hier ansprichst. Die Änderung der Schriftfarbe solltest du im OnPaintText oder im OnDrawText Event durchführen. OnAfterCellPaint bzw. OnAfterItemPaint sind die Events, die eigentlich nur noch ausgelöst werden, wenn du unabhängig von Text und Images noch etwas in die jeweiligen Cells malen möchtest. Beispielsweise ein Flag, wenn du irgendwann mal Daten im VST geändert hast (mit den Inplace Editoren; da wirst du bestimmt auch irgendwann mal hinkommen).


Anbei mal die Reihenfolge der Events (Auszug aus der Hilde des VST):
Zitat von PaintEvents:
Usually the following paint stages are executed during a paint cycle:
  • before paint (OnBeforePaint)
  • before item paint (OnBeforeItemPaint)
  • before item erase (OnBeforeItemErase)
  • after item erase (OnAfterItemErase)
  • before cell draw (OnBeforeCellPaint)
  • on paint text (string trees only, OnPaintText)
  • after cell draw (OnAfterCellPaint)
  • after item paint (OnAfterItemPaint)
  • after paint (OnAfterPaint)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz