Einzelnen Beitrag anzeigen

Hyperspacer

Registriert seit: 23. Apr 2006
53 Beiträge
 
Delphi 7 Personal
 
#1

Zugriffsverletzung bei free?

  Alt 4. Mär 2007, 20:07
Ich beiß gleich in die tischkante..

Ich erstelle dynamisch ein Tedit, dem ich zwei ereignisproceduren zuweise:
Delphi-Quellcode:
with TEdit.Create(form1) do
  begin
    Parent := Form1;
    Top := 50;
    Left := 100;

    SetFocus;

    OnExit := ItemEditOnExit;
    OnKeyDown := ItemEditOnKeyDown;
  end;
So weit so gut. Hier nun die Proceduren:
Delphi-Quellcode:
procedure TForm1.ItemEditOnExit(Sender: TObject);
begin
  ListView1.ItemFocused.SubItems.Strings[0] := (Sender as TEdit).Text;
  Sender.Free;
end;

procedure Tform1.ItemEditOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  If Key = VK_Return then
    begin
      ListView1.ItemFocused.SubItems.Strings[0] := (Sender as TEdit).Text;
      Sender.Free;
    end;
end;
Wenn die OnExit Procedure ausgeführt wird, geht alles glatt. Aber wenn die OnKeyDown Procedure ausgeführt wird gibt es eine wunderschöne Zugriffsverletzung nachdem Free.
Ich habe schon versucht das Edit nicht in der OnKeyDown Procedure zu freen, sondern von dort die OnExit Procedure auszuführen, was allerdings zum selben Fehler führte.

Wer kann mir sagen wie ich diesen Fehler beheben oder umschippern kann?

mfg
Daniel
  Mit Zitat antworten Zitat