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