Re: VirtualTreeView: Es klappt nicht ganz
das sieht sehr komplizert aus.
die vcl hat doch noch die klasse tpersistent. warum leitest du nicht von der ab und nutzt die methoden der vcl um objekte in streams zu speichern? (ich muss zugeben mit dem thema habe ich mich noch nicht beschäftigt) |
Re: VirtualTreeView: Es klappt nicht ganz
So, habe heute endlich mal weitermachen können an dem Projekt. Laden und Speichern funktioniert jetzt einwandfrei. Nächstes Problem:
Ich rechtsklicke auf einen Node, um auf einem PopUpMenu "edit" auszuwählen. Dann erscheint ein neues Formblatt in das ich einen neuen Namen für den Knoten eintippe. Dann klicke ich auf Speichern und das Formblatt verschwindet. Der Name des Knotens wird nun im VST aktualisiert und angezeigt. Problem: Solange der Knoten immer noch blau selektiert ist bleibt diese "blaue Box" wie sie vorher war und passt sich nicht der neuen Wortlänge an. Ich muss erst woandershin klicken und zurückklicken, dann ist die "blaue Selektionsbox" so breit wie der Name des Knotens. Versteht Ihr was ich meine? Ich mache sonst maln Screenshot. Gibts irgendwie eine Repaint-Funktion, falls die überhaupt die Lösung wäre? |
Re: VirtualTreeView: Es klappt nicht ganz
da sollte folgendes helfen:
Delphi-Quellcode:
VirtualTreeView.InvalidateNode(Node);
Gruß Dale |
Re: VirtualTreeView: Es klappt nicht ganz
Wann genau soll ich das ausführen? Ich habs jetzt nach der Knotenaktualisierung, aber es passiert nichts.
|
Re: VirtualTreeView: Es klappt nicht ganz
hm, wundert mich, dass es nicht funktioniert. Versuchs mal mit:
Delphi-Quellcode:
ansonsten solltest du mal den Quelltext posten.
VirtualTreeView.BeginUpdate;
... // Knoten aktualisieren; ... VirtualTreeView.EndUpdate; Gruß Dale |
Re: VirtualTreeView: Es klappt nicht ganz
Hier etwas Code, es klappt immernoch nicht:
Delphi-Quellcode:
procedure updateSession;
var Data: PTreeData; begin Form1.VST1.BeginUpdate(); Data := Form1.VST1.GetNodeData(currentNode); TSessionObject(Data.FObject).datum:=datetimetounix(Form1.DateTimePicker1.date); [...] Form1.VST1.EndUpdate(); Form1.VST1.InvalidateNode(currentNode); end;
Delphi-Quellcode:
currentNode ist global und enthält die aktuell selektierte Node.
procedure TForm2.Button1Click(Sender: TObject);
begin if editmode then updatePoint else insertPoint; saveTree; editmode:=false; close; end; |
Re: VirtualTreeView: Es klappt nicht ganz
Stimmt alles was du geschrieben hast,
es hilft nur folgendes: (ich habs getestet)
Delphi-Quellcode:
Gruß Dale
VirtualStringTree.BeginUpdate;
... VirtualStringTree.ReinitNode(CurrentNode, False); VirtualStringTree.EndUpdate; |
Re: VirtualTreeView: Es klappt nicht ganz
So, da bin ich wieder. Hab den Vorschlag mit dem ReInitNode getestet, aber es wirkt sich immernoch nicht positiv auf das Programm aus. Habe auch mal dieses RepaintNode ausprobiert, aber es klappt nicht. Vielleicht liegt der Fehler woanders, ich schau nochmal rein...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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