What is that code doing? Near as I can make out, when the user hits return in a DBMemo, that code cancels the Return key and sets focus to the next control (actually, if it's doing what I *think* it's doing it sets focus to the next control, and then sets focus to the control after that). Is this what you mean by "does not work"?
Forget all that focus the next control stuff...
Try something like...
if key = # 13 then
begin
TDBMemo(Sender).Lines.Add('');
key := #0;
end;