AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Virtual Treeview, rootnodecount setzen in Designtime
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual Treeview, rootnodecount setzen in Designtime

Ein Thema von hermannhass · begonnen am 17. Mär 2008 · letzter Beitrag vom 19. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
hermannhass

Registriert seit: 23. Dez 2006
Ort: Nähe Las Palmas
69 Beiträge
 
#1

Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 03:27
Hallo
Ich benutze den Virtual Treeview(TVirtualStringTree) und habe folgendes Problem
Ich habe eine Ableitung des TVirtualStringTree mit onInit und onfree routine.
Wenn ich Rootnodecount in Designtimer mit dem Objectinspectore verändere,
bekomme ich eine Exception.
"Zugriffverletzung ... in Modul rtl100.bpl"
Das tritt nur auf, wenn ich ich doinitnode benutze und auf den User-Speicher zugreife.
Läuft das Speichermanagement nicht zur Designtime?
Vielen Dank für eine Antwort
Hermann

Delphi-Quellcode:
uses
 Classes,VirtualTrees,sysutils;
type
 Pmydata = ^tmydata;
 tmydata = record
  caption : string;
 end;
 tmytree = class(TVirtualStringTree)
  private
    { Private-Deklarationen }
 protected
    { Protected-Deklarationen }
   procedure DoGetText(Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var Text: WideString); override;
   procedure DoFreeNode(Node: PVirtualNode); override;
   procedure DoInitNode(Parent, Node: PVirtualNode; var InitStates: TVirtualNodeInitStates); override;
  public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
    { Public-Deklarationen }
  published
   { Published-Deklarationen }
 end;

procedure Register;
implementation

procedure Register;
begin
  RegisterComponents('Neu', [tmytree]);
end;
constructor tmytree.create(aowner:tcomponent);
begin
 inherited create(aowner);
 NodeDataSize :=sizeof(tmydata);
end;
destructor tmytree.destroy;
begin
 inherited destroy;
end;

procedure tmytree.DoGetText(Node:PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var Text: WideString);
var
 ptd : Pmydata;
begin
 ptd:=getNodeData(Node);
 Text:=ptd.caption;
end;

procedure tmytree.doFreenode(Node: PVirtualNode);
var
 ptd : Pmydata;
begin
 ptd:=GetNodeData(Node);
 Finalize(ptd^);
end;

procedure tmytree.DoInitNode(Parent, Node: PVirtualNode; var InitStates: TVirtualNodeInitStates);
var
 ptd : Pmydata;
begin
 ptd:=GetNodeData(Node);
 ptd.caption:='No:'+inttostr(node.Index); /// Hier knallt es !!!!!!!!!!
end;
Entwickle SW mit Delphi 2006 und sql.
Lebe auf Gran Canaria.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 19:41
Zitat von hermannhass:
Delphi-Quellcode:
procedure tmytree.DoInitNode(Parent, Node: PVirtualNode; var InitStates: TVirtualNodeInitStates);
var
 ptd : Pmydata;
begin
 inherited; // <------------------------ sollte helfen, bitte auch bei der anderen überschriebenen funktion nicht vergessen
 ptd:=GetNodeData(Node);
 ptd.caption:='No:'+inttostr(node.Index); /// Hier knallt es !!!!!!!!!!
end;
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
hermannhass

Registriert seit: 23. Dez 2006
Ort: Nähe Las Palmas
69 Beiträge
 
#3

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 19:53
Danke, aber hilft nicht.
im inherited werden ja sowieso nur die oninit/onfree ereignisse aufgerufen, die nil sind.
es knallt weiterhin reprodizerbar.
Entwickle SW mit Delphi 2006 und sql.
Lebe auf Gran Canaria.
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 20:05
Zitat von hermannhass:
es knallt weiterhin reprodizerbar.
Also reproduzierbare Fehler sind mir eigentlich die liebsten. Mittels Debugging sind die schon so gut wie tot, wenn sie mir begegnen
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 20:29
Wieso musst du denn unbedingt eine ableitung vom VirtualStringTree erstellen?

Den Code, den du im DoInit deiner Ableitung aufrufst kannst du doch im OnInit eines Standard VirtualStringTrees packen?!
  Mit Zitat antworten Zitat
hermannhass

Registriert seit: 23. Dez 2006
Ort: Nähe Las Palmas
69 Beiträge
 
#6

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 20:39
Der Fehler tritt auch mit oninit auf, wenn dieser in der Komponente selber ausgewertert wird.
Ich leite mir eine Art "Virtual StringGrid" ab.
Meine Doinit oder auch oninit muss in der abgeleiteten Komponente sein und nicht in einer Form.
scheinbar geht die Speicherverwaltung mit GetNodeData nicht im Designmodus.
in der Runtime läuft es einwandfrei.
Entwickle SW mit Delphi 2006 und sql.
Lebe auf Gran Canaria.
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 20:52
Deinstalliere das als Komponente, und erzeuge die Komponente zu Laufzeit in einem Testprojekt. Da kannste besser debuggen.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
hermannhass

Registriert seit: 23. Dez 2006
Ort: Nähe Las Palmas
69 Beiträge
 
#8

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 22:44
Zur Laufzeit gibt es keine Fehler! Definitiv nicht!
Entwickle SW mit Delphi 2006 und sql.
Lebe auf Gran Canaria.
  Mit Zitat antworten Zitat
PeterPain

Registriert seit: 17. Mär 2008
7 Beiträge
 
#9

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 17. Mär 2008, 23:37
Tritt der fehler nicht mehr auf, wenn du den Delphi-internen Speichermananger nutzt? (kannst du per Compiler-direktive umschalten)

gruss
  Mit Zitat antworten Zitat
hermannhass

Registriert seit: 23. Dez 2006
Ort: Nähe Las Palmas
69 Beiträge
 
#10

Re: Virtual Treeview, rootnodecount setzen in Designtime

  Alt 18. Mär 2008, 00:40
Jetzt steh ich auf dem Schlauf...
Wo kann ich den ein/ausschalten. Habe Delphi 2007.
Gruß von den Kanaren
Hermann
Entwickle SW mit Delphi 2006 und sql.
Lebe auf Gran Canaria.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:32 Uhr.
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