We have further investigated this here and it seems that in some cases, the event is not triggered. We are currently trying to find out exactly under which circumstances.
We also found various articles that the event is not triggered properly. The key cause could be the page redirect. when there is no redirect happening, the page is not loaded. If a user clicks a link, or navigates to another page, then the event should be triggered. For example, this code works:
procedure TForm1.Button1Click(Sender: TObject);
begin
TMSFNCWebBrowser1.LoadHTML('<a href="https://www.vanias.gr/mele.asp">link</a>');
end;
procedure TForm1.TMSFNCWebBrowser1BeforeNavigate(Sender: TObject;
var Params: TTMSFNCCustomWebBrowserBeforeNavigateParams);
begin
Params.Cancel := Params.URL.Contains('mele.asp');
end;
Click on the link inside the page, will trigger the OnBeforeNavigate.