Hola Rofocale.
En forma muy simplificada traté de reproducir la situación que creo haber entendido.
En la prueba no me provoca ciclo infinito, te pongo el código por si te da alguna idea o para que me aclares si te interpreté mal.
Código Delphi
[-]
...
procedure TForm1.BuscarArticulo;
begin
Panel1.Caption:= 'Buscar articulo';
btn_Agrega.SetFocus; end;
procedure TForm1.AgregarArticulo;
begin
Panel1.Caption:= 'Agregar articulo';
end;
procedure TForm1.btn_AgregaClick(Sender: TObject);
begin
AgregarArticulo;
txtcodigo.SetFocus; end;
procedure TForm1.txtcodigoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN) then
BuscarArticulo;
end;
Saludos.