Hallo zusammen.
Ich kann das Problem leider nicht reproduzieren (wobei ich natürlich die neueste Version 5.3 getestet habe). Kannst du vielleicht ein Beispielprojekt und den geänderten Record anhängen?
Der geänderte Record sieht folgendermaßen aus:
Delphi-Quellcode:
TVirtualNode = packed record
Index, // index of node with regard to its parent
ChildCount: Cardinal; // number of child nodes
NodeHeight: Word; // height in pixels
States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
Align: Byte; // line/button alignment
CheckState: TCheckState; // indicates the current check state (e.g. checked, pressed etc.)
CheckType: TCheckType; // indicates which check type shall be used for this node
Dummy: Byte; // dummy value to fill DWORD boundary
TotalCount, // sum of this node, all of its child nodes and their child nodes etc.
TotalHeight: Cardinal; // height in pixels this node covers on screen including the height of all of its
// children
DrawImageCentered: Boolean; // >>>>>>>>>> HIER MEINE ÄNDERUNG <<<<<<<<<<
// Note: Some copy routines require that all pointers (as well as the data area) in a node are
// located at the end of the node! Hence if you want to add new member fields (except pointers to internal
// data) then put them before field Parent.
Parent, // reference to the node's parent (for the root this contains the treeview)
PrevSibling, // link to the node's previous sibling or nil if it is the first node
NextSibling, // link to the node's next sibling or nil if it is the last node
FirstChild, // link to the node's first child...
LastChild: PVirtualNode; // link to the node's last child...
Data: record end; // this is a placeholder, each node gets extra data determined by NodeDataSize
end;
Ein Beispielprojekt ist schwierig. Ich habe versucht, ein neues Projekt zu erstellen, in dem nur die geringst mögliche Anzahl von Codezeilen vorhanden sein muss, damit man etwas sieht. Die Einstellungen des Trees habe ich ebenfalls übernommen.
Folgende Einstellungen sind geändert:
Code:
TreeOptions.AnimateOptions --> Beides aktiviert
TreeOptions.PaintOptions --> toUseExplorerTheme (aktiviert)
TreeOptions.MiscOptions --> toCheckSupport (aktiviert)
Allerdings schmiert mir das Projekt direkt ab, sobald ich eine Stringvariable im GetText Event in meinem Datenrecord anspreche. NodeDataSize ist gesetzt, daran sollte es also nicht liegen.
Mein Datenrecord bei dem das Programm den Müll verursacht, aber nicht abschmiert sieht folgendermaßen aus:
Delphi-Quellcode:
TAttribs = record
FAttribDBID : Int64;
FAttribGroupDBID : Int64;
FCaption : string;
FGroupCaption : string;
FDescription : string;
FAttribChecked : Boolean;
end;
PAttribs = ^TAttribs;
Hast du vielleicht Spalten definiert, so dass es an einer Spalte abgeschnitten wird oder so?
Darauf kann ich dir ein klares "Nein" geben. Wäre zu schön gewesen und war auch das Erste, an das ich gedacht hatte, weil es bei dem Tree, bei dem ich es bemerkt hatte, kein Header sichtbar ist.
Das eigentliche Projekt kann ich nicht hochladen, da dort noch eine Datenbank und einige andere Dinge dahinterstecken und es auch relativ groß ist. Ich hoffe du/ihr könnt mit diesen Infos etwas anfangen.