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;