Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [VST] AV bei Doppelklick auf Header (https://www.delphipraxis.net/153220-%5Bvst%5D-av-bei-doppelklick-auf-header.html)

Mikescher 25. Jul 2010 16:56

[VST] AV bei Doppelklick auf Header
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

ich wollte mich mit dem VirtualStringTree auseinandersetzen, indem ich dieses Tutorial hier durchmache.

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:
  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;
Zum besseren Verständnis habe ich ein kleines Beispiel-projekt erstellt in dem man dieses Verhalten beobachten kann (siehe Anhang).

Vielen Dank im Vorraus an alle.
Mike

toms 25. Jul 2010 17:35

AW: [VST] AV bei Doppelklick auf Header
 
Hallo

Verwendest du die neuste Version von VST? Bei mir tritt der Fehler nämlich nicht auf.

Uwe Raabe 25. Jul 2010 17:47

AW: [VST] AV bei Doppelklick auf Header
 
Zitat:

Zitat von toms (Beitrag 1037450)
Hallo

Verwendest du die neuste Version von VST? Bei mir tritt der Fehler nämlich nicht auf.

Ich kann das Projekt nicht mal kompilieren, da die Event-Deklarationen nicht passen (VST 4.8.5)

toms 25. Jul 2010 17:57

AW: [VST] AV bei Doppelklick auf Header
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1037452)
Zitat:

Zitat von toms (Beitrag 1037450)
Hallo

Verwendest du die neuste Version von VST? Bei mir tritt der Fehler nämlich nicht auf.

Ich kann das Projekt nicht mal kompilieren, da die Event-Deklarationen nicht passen (VST 4.8.5)

Konnte ich auch nicht, musste 2 Deklarationen anpassen.

Mikescher 25. Jul 2010 17:59

AW: [VST] AV bei Doppelklick auf Header
 
Zitat:

Zitat von toms (Beitrag 1037450)
Hallo

Verwendest du die neuste Version von VST? Bei mir tritt der Fehler nämlich nicht auf.

Also wenn ich in die VirtualTrees.pas gehe steht (als Kommentar) oben:
Delphi-Quellcode:
// Version 4.8.6
MfG Mike

Edit: Ist auch scheinbar die neueste: http://www.soft-gems.net/index.php?o...d=12&Itemid=33

toms 25. Jul 2010 19:12

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.

Mikescher 25. Jul 2010 19:18

AW: [VST] AV bei Doppelklick auf Header
 
Zitat:

Zitat von toms (Beitrag 1037481)
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.

Also ist das sinnvollste jetzt sich 4.8.5 zu laden und das zu verwenden, oder ?

Ok,das hab ich jetzt gemacht und es scheint auch funktionieren.
Danke @all die mir hier geholfen haben :cheers:

MfG Mike

toms 26. Jul 2010 19:01

AW: [VST] AV bei Doppelklick auf Header
 
Zitat:

Zitat von Mikescher (Beitrag 1037484)
Also ist das sinnvollste jetzt sich 4.8.5 zu laden und das zu verwenden, oder ?

Entweder 4.8.5 verwenden oder hoffen, dass jemand den Fehler noch behebt.
Melde doch den Fehler nach Möglichkeit noch auf code.google.com

generic 27. Jul 2010 00:23

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]);

toms 27. Jul 2010 07:12

AW: [VST] AV bei Doppelklick auf Header
 
@generic: selbst wenn der Code funktionieren würde gäbe es immer noch eine AV.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 1 von 2  1 2      

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