AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualTreeView von DelphiGems: C0000005 Exception
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeView von DelphiGems: C0000005 Exception

Ein Thema von Gremlin · begonnen am 7. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#1

VirtualTreeView von DelphiGems: C0000005 Exception

  Alt 7. Aug 2008, 22:18
Guten Abend,

ich wollte schon immer mal einen editierbaren Tree basteln und habe mir deshalb das Advanced-Demo von VirtualTreeView
angeschaut. Nach dem Compilieren mit D7 und Auswahl der 3. Seite (PropertiesDemo) wird immer eine C0000005-Exception
ausgelöst, wenn die <Enter>- bzw. <Return>-Taste zur Bestätigung der Eingabe eines TEdits verwendet wird.

Könnte das bitte jemand nachvollziehen, ob das bei ihm auch so ist, damit ich den Fehler einkreisen kann
oder vielleicht hat jemand schon eine Lösung für dieses Problem gefunden?


Danke schon mal

Gruss
Gremlin
Gruss Gremlin
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: VirtualTreeView von DelphiGems: C0000005 Exception

  Alt 8. Aug 2008, 20:34
Hallo,


ich habe die Lösung im Supportforum von Softgems gefunden

Das Problem mit der Exception ist, das zuviel zu früh freigegeben wird. Die Lösung ist im Keydown des TEdits eine Nachricht an das Hauptformular des Trees zu schicken und dort die Methode EndEditNode des Trees aufgerufen wird...

Teilcode aus dem Forum (für den Editor):

Delphi-Quellcode:
procedure TPropertyEditLink.EditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  CanAdvance: Boolean;
  RootForm : TWinControl; //new
begin
...
    VK_RETURN:
      if CanAdvance then
      begin
        // new - begin
        RootForm := FTree;
        if Assigned(RootForm) then
        begin
          while (RootForm.Parent <> nil) do
            RootForm := RootForm.Parent;
          PostMessage(RootForm.Handle, WM_ENDEDITING, 0, 0);
        end;
        // new - end
        Key := 0;
      end;
...
end;

... und der Code für die Form mit dem Tree:

Delphi-Quellcode:
procedure TMyForm.WMEndEditing(var Message: TMessage);
var
  tree: TVirtualStringTree;
begin
  tree := GetCurrentTree; //needed by me, 'cause there are two VTVs on the form
  if Assigned(tree) then
    tree.EndEditNode;
end;

Gruss
Gremlin
Gruss Gremlin
  Mit Zitat antworten Zitat
generic

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

Re: VirtualTreeView von DelphiGems: C0000005 Exception

  Alt 8. Aug 2008, 23:28
Warum übergibst du den Tree nicht in der Message?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: VirtualTreeView von DelphiGems: C0000005 Exception

  Alt 10. Aug 2008, 22:13
Kann man natürlich machen, jedoch war ich erst mal froh, überhaupt eine Lösung für das Problem gehabt zu haben und da die Zeit momentan sehr knapp bemessen ist, habe ich den Zeitpunkt der Optimierung ein Stück nach hinten verschoben Danke für den Hinweis.
Gruss Gremlin
  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 23:24 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