AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualTreeView - Bearbeitung von TVirtualNode führt zum Abschneiden von NodeText
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeView - Bearbeitung von TVirtualNode führt zum Abschneiden von NodeText

Ein Thema von Aviator · begonnen am 29. Mai 2014 · letzter Beitrag vom 1. Jun 2014
Antwort Antwort
Aviator

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

AW: VirtualTreeView - Bearbeitung von TVirtualNode führt zum Abschneiden von NodeText

  Alt 30. Mai 2014, 18:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.075 Beiträge
 
Delphi 12 Athens
 
#2

AW: VirtualTreeView - Bearbeitung von TVirtualNode führt zum Abschneiden von NodeText

  Alt 1. Jun 2014, 14:02
Ein Beispielprojekt ist schwierig.
Ohne weiß ich leider nicht wie ich den Fehler bekomme.

Ich habe einmal als Beispiel angehängt wie ich es lösen würde. Statt der generischen Ableitung als Container wären natürlich auch abgeleitete Klassen möglich, aber so hat das den Vorteil, dass man beliebige Daten in den Knoten packen kann...
Angehängte Dateien
Dateityp: 7z VSTDescendant.7z (55,9 KB, 14x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Aviator

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

AW: VirtualTreeView - Bearbeitung von TVirtualNode führt zum Abschneiden von NodeText

  Alt 1. Jun 2014, 14:14
Hi Sebastian. Danke für das Beispiel. Habe es mal kurz überflogen und schon einige Dinge gesehen, mit denen ich mich nicht so direkt (gar nicht?) auskenne. Bin eben nur ein Hobbyprogrammierer bzw. jemand, der es sich über einige Jahre selbst beigebracht hat.

Wenn ich das richtig sehe, dann hast du in dem Beispiel mit generischen Typen gearbeitet, oder? Kenne ich jetzt nur aus dem vor kurzem von "Der schöne Günther" geöffneten Thread. Damit muss ich mich mal beschäftigen. Die Philosophie ist mir zwar (so würde ich vermuten) bekannt, aber selber schreiben könnte ich so etwas wohl nicht.

Tut mir leid, dass ich kein Beispielprojekt zustande gebracht habe, bei dem dieser Fehler auftritt. Bei meinem aktuellen größeren Projekt tritt der Fehler immer auf und auch ohne, dass das Programm mit einer AV abstürzt. Bei dem Testprojekt war das direkt der Fall und ich weiß nicht wieso.

Trotzdem danke für das Beispiel und auch für deine Zeit. Ich versuche mal, mich damit auseinanderzusetzen bzw. gebe mich vielleicht auch mit einer meiner zwei Änderungen zufrieden, in der ich zumindest pro Column entscheiden kann, wo das Bild gemalt werden soll.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:44 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