![]() |
[VST] AV bei Doppelklick auf Header
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich wollte mich mit dem VirtualStringTree auseinandersetzen, indem ich ![]() Ich habe jetzt also ein VST mit sichtbarem Header und 5 Columns. Bei dem Klick auf den Header werden die Einträge sortiert (wie beim Explorer). Das Problem was ich jetzt jedoch habe ist das wenn mann doppelt auf den Header klickt eine AV produziert wird. Und zwar an dieser Stelle:
Delphi-Quellcode:
Zum besseren Verständnis habe ich ein kleines Beispiel-projekt erstellt in dem man dieses Verhalten beobachten kann (siehe Anhang).
PTreeData = ^TTreeData;
TTreeData = record Column :array[0..4] of String; end; {...} procedure TForm1.VSTCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); var Data1: PTreeData; Data2: PTreeData; begin Data1:=vst.GetNodeData(Node1); Data2:=vst.GetNodeData(Node2); if (not Assigned(Data1)) or (not Assigned(Data2)) then Result:=0 else Result:=CompareText(Data1.Column[Column], Data2.Column[Column]); // < GENAU DA // end; Vielen Dank im Vorraus an alle. Mike |
AW: [VST] AV bei Doppelklick auf Header
Hallo
Verwendest du die neuste Version von VST? Bei mir tritt der Fehler nämlich nicht auf. |
AW: [VST] AV bei Doppelklick auf Header
Zitat:
|
AW: [VST] AV bei Doppelklick auf Header
Zitat:
|
AW: [VST] AV bei Doppelklick auf Header
Zitat:
Delphi-Quellcode:
MfG Mike
// Version 4.8.6
Edit: Ist auch scheinbar die neueste: ![]() |
AW: [VST] AV bei Doppelklick auf Header
Bei VST 4.8.5 tritt der Fehler nicht auf. Der Fehler tritt auch in der neusten Version 5.0.0 (SVN) auf. Das Problem scheint das Ereingis OnHeaderClick zu verursachen, welches bei einem Klick zwei Mal auftritt anstatt einmal.
|
AW: [VST] AV bei Doppelklick auf Header
Zitat:
Ok,das hab ich jetzt gemacht und es scheint auch funktionieren. Danke @all die mir hier geholfen haben :cheers: MfG Mike |
AW: [VST] AV bei Doppelklick auf Header
Zitat:
Melde doch den Fehler nach Möglichkeit noch auf ![]() |
AW: [VST] AV bei Doppelklick auf Header
Ich denke da fehlt das ^ Zeichen.
Data1: PTreeData; Also hält data1 nur einen Zeiger. Wenn du dann im Compare Data1.Column[Column] nutzt, greifst du eigentlich auf den Zeiger zu und nicht auf die Datenstruktur, welchen die Column enthält. Es muss so heißen:
Delphi-Quellcode:
if (not Assigned(Data1^)) or (not Assigned(Data2^)) then
Result:=0 else Result:=CompareText(Data1^.Column[Column], Data2^.Column[Column]); |
AW: [VST] AV bei Doppelklick auf Header
@generic: selbst wenn der Code funktionieren würde gäbe es immer noch eine AV.
|
AW: [VST] AV bei Doppelklick auf Header
Was passiert an der von dir markierten Stelle wohl, wenn Column -1 ist?
@generic: Bei Delphi musst du nicht extra dereferenzieren, das erkennt der Compiler |
AW: [VST] AV bei Doppelklick auf Header
Der Fehler wird dadurch verursacht, dass das OnClick
Ereignis zwei Mal hintereinander ausgeführt wird bei einem Doppelklick auf den Header. In der Version 4.8.5 löste ein Doppelklick auf den Header wirklich nur das DblClick Ereignis aus und nicht zwei Mal das OnClick Ereignis. Das beschriebene Verhalten löst den Fehler aus, der "Bug" liegt irgendwo im VST Code. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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