I had same problem, so i went and checked if alt key gave any special messages, and came up with this solution in message loop:

Code:
    // wm_syskey messages are filtered to prevent app freeze and
    // confuse player when he presses the ALT key. this also redirects
    // system key codes into our key array and enables us to actually
    // even capture these keypresses ( FYI alt key is vk_menu. )


    WM_SYSKEYDOWN:
    begin
      ProcessKeyDown(wparam, lparam);
      Result := 0;
    end;
    WM_SYSKEYUP:
    begin
      ProcessKeyUp(wparam, lparam);
      Result := 0;
    end;