set the ContentDisposition header. As in;
p_web.HeaderDetails.ContentDisposition = 'attachment; filename="whatever'''
I don't know the exact architecture of your setup, but I'm guessing the easiest way is to add a parameter to the button URL and then in WebHandler, in _SendFile, set the header if that parameter exists. If your button does something other than a URL then let me know what.
cheers
Bruce