AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) VirtualStringTree stellt DefaultText (Node) nicht dar

VirtualStringTree stellt DefaultText (Node) nicht dar

Ein Thema von norwegen60 · begonnen am 21. Jun 2016 · letzter Beitrag vom 5. Jul 2016
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
437 Beiträge
 
Delphi 10.3 Rio
 
#1

VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 21. Jun 2016, 14:49
Hallo zusammen,

eigentlich sollte VirtualStringtree bei einem einfachen
Delphi-Quellcode:
  Node:=VST.AddChild(nil);
  VST.AddChild(Node);
zwei Knoten anlegen die mit dem DefaulText "Node" beschriftet sind.
Nach der Umstellung auf Delphi 10 und Update von VirtualStringtree auf 6.3 geht das nicht mehr. Weiß jemand warum nicht?

Grüße
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 21. Jun 2016, 15:03
Neues Projekt und nichts geändert in den VST Properties?

Edit: Grade auf 6.3 geupdated und kann das Problem bestätigen. Die Nodes werden zwar angelegt, aber der Text bleibt leer.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (21. Jun 2016 um 15:09 Uhr)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
437 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 2. Jul 2016, 19:16
Hat jemand eine Idee woran das liegt? Bin mal mit dem Debugger durch und meine, dass die Variablekorrekt initialisiert wird.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 4. Jul 2016, 19:06
Hat jemand eine Idee woran das liegt? Bin mal mit dem Debugger durch und meine, dass die Variablekorrekt initialisiert wird.
Bist du auf dieses alte Standardverhalten denn wirklich angewiesen? OnGetText() mit CellText := 'Node' zu implementieren, würde dies als Workaround (zumindest für die Runtime) wiederherstellen.

Habe kurz mal überflogen und die internen Variablen sind zu Begin tatsächlich auch korrekt mit DefaultText initialisiert, aber werden dann irgendwo später wieder resetted. Wo genau und warum, habe ich grade aber noch nicht sehen können.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
437 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 5. Jul 2016, 10:51
Nein angewiesen bin ich nicht. Setze den Text eben in OnGetText wenn ich nur schnelle was testen will.
Es hätte mich eher interessiert, wo die Info verloren geht.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 5. Jul 2016, 15:20
Habe die Stelle gefunden, allerdings kann ich zu der Logik dahinter nichts sagen.

Zeile 33794:
Delphi-Quellcode:
lEventArgs := TVSTGetCellTextEventArgs.Create(PaintInfo.Node, PaintInfo.Column);
DoGetText(lEventArgs);
Hierbei wird der CellText nicht initialisiert:
Delphi-Quellcode:
constructor TVSTGetCellTextEventArgs.Create(pNode: PVirtualNode; pColumn: TColumnIndex; pExportType: TVTExportType);
begin
  Self.Node := pNode;
  Self.Column := pColumn;
  Self.ExportType := pExportType;
end;
Die GetText() Methode enthält allerdings noch die Initialisierung mit dem DefaultText:
Delphi-Quellcode:
function TCustomVirtualStringTree.GetText(Node: PVirtualNode; Column: TColumnIndex): string;

var
  lEventArgs: TVSTGetCellTextEventArgs;

begin
  Assert(Assigned(Node), 'Node must not be nil.');
  lEventArgs := TVSTGetCellTextEventArgs.Create(Node, Column);
  lEventArgs.CellText := FDefaultText;
  DoGetText(lEventArgs);
  Exit(lEventArgs.CellText)
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Aviator

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

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 5. Jul 2016, 16:17
Habe die Stelle gefunden, allerdings kann ich zu der Logik dahinter nichts sagen.
Genau so ging es mir auch. Mich hatte das Problem auch interessiert, wobei ich nie auf diesen Standardtext Wert gelegt hatte. Habe diese Stelle auch schon direkt am gleichen Tag entdeckt, an dem dieser Post eröffnet wurde. Über den StackTrace kam man dort sehr gut hin. Nur wusste ich nichts damit anzufangen und habe dann auch hier nichts dazu geschrieben.

Habe nämlich die Stelle nicht gefunden, an der lEventArgs plötzlich den NodeText nicht mehr beinhaltet. Der wird einfach nach dem Aufruf von DoGetText plötzlich leer wenn ich mich richtig erinnere.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: VirtualStringTree stellt DefaultText (Node) nicht dar

  Alt 5. Jul 2016, 19:08
Habe nämlich die Stelle nicht gefunden, an der lEventArgs plötzlich den NodeText nicht mehr beinhaltet. Der wird einfach nach dem Aufruf von DoGetText plötzlich leer wenn ich mich richtig erinnere.
Ja, bzw. ist bereits leer, wenn er an DoGetText übergeben wird. Zumindest bei dem Call, der aus der DoPaintNode Methode in Zeile 33795 kommt. Da wurde nach dem Erzeugen der EventArgs wohl einfach die Zuweisung des Standardtextes vergessen. Bei allen anderen Pfade zur DoGetText Methode enthält der CellText korrekterweise den DefaultText.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf