Disable Close button on form caption

this example. For enabling button use MF_ENABLED instead of MF_GRAYED.

procedure TForm1.Button1Click(Sender: TObject);
var
  Flag: UINT;
  AppSysMenu: THandle;
begin
  AppSysMenu:=GetSystemMenu(Handle,False);
  Flag:=MF_GRAYED;
  EnableMenuItem(AppSysMenu,SC_CLOSE,MF_BYCOMMAND or Flag);
end;