Grund eben gefunden, Ursache aber noch nicht ganz klar:
Sobald TEdit als Parent nicht eine TForm (oder ein TPanel) sondern wie in meinem Fall ein TStringGrid hat, "versackt" das OnChange-Event.
Das ist vermutlich auch der Grund, warum der Formular-Designer verweigert, ein TEdit als "Kind" einem StringGrid zuzuweisen. Im Code ist es erlaubt, und prinzipiell funktioniert's ja auch.
Liegt also gar nicht an meiner Interceptor-Geschichte! Ohne passiert genau das selbe.
Delphi-Quellcode:
procedure TForm3.Edit1Change(Sender: TObject);
begin
MessageDlg(Edit1.Text, mtInformation, mbOKCancel, 0);
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
Edit1.Parent := self;
Edit1.Text := 'Mein Papa ist eine Form!' //Dialog erscheint
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Edit1.Parent := StringGrid1;
Edit1.Text := 'Mein Papa ist ein Grid!' //Dialog erscheint NICHT
end;