Einzelnen Beitrag anzeigen

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