I solved the problem with invisible form. It seems when you assign mp Application.ActiveMap to mpMap it doesn't keep Application's Visible property's value. I replaced the code in the article
Code:
mpApplication.Visible := TRUE;
mpMap:= mpApplication.ActiveMap;
mpMap.GoToLatLong(43, -3, 100);
into
Code:
mpMap:= mpApplication.ActiveMap;
mpMap.Application.Visible := TRUE;
mpMap.GoToLatLong(43, -3, 100);
and now MapPoint is visible whenever I run the application.