Помогите все ж таки

отредактировано 01:22 Раздел: FastReport 2.xx VCL
Когда-то уже писал, запускаю снова:
При запуске отчета выводится диалоговое окно с выбором периода выполнения отчета и складов, по которым отчет будет выполняться. Юзер может выбрать список складов, по которым будет строится отчет, а может запустить по всей фирме. Случай, когда склады не перечислены, хотелось бы обработать примерно так:

If ctl_StockEdit.Text='' Then
If [MessageBox('Отчет будет выполняться по всем складам, это может занять много времени. Продолжить?','Подтверждение',mb_IconQuestion Or mb_OkCancel)]=mrCancel Then StopReport

На практике при такой схеме обрабатывается код, стоящий после StopReport.
В моем случае для Query назначается и выполняется SQL. Так что процедура отмены выполнения отчета растягивается минут на 20.

Конечно, этоу неприятность можна обойти:

If ctl_StockEdit.Text='' Then sw:= [MessageBox('Отчет будет выполняться по всем секциям, это может занять много времени. Продолжить?','Подтверждение',mb_IconQuestion Or mb_OkCancel)]=mrOk;
If sw Then
Begin
//Выполнение запроса и обработка переменных
End
Else
STOPREPORT;

Но после нажатия "Отмена" получаем сообщение: "No SQL Statement available",
"Invalid Creating cursor handle". При существующей у меня тенденции усложнять диалоговые окна отчетов это становится очень неприятно. Фактически ничего страшного, но выглядит неприглядно.

Комментарии

  • отредактировано 01:22
    2 Alexander:

    У кнопки есть такая штука "MODALRESULT" - если ты у неё выставил ВСЕГДА mrOK, то логично что ты получаешь то что получаешь ;) )
    Кароче - выставляй у кнопки (в инспекторе) ModalResult = mrNone
    Затем на OnClick (у кнопки ессно) пишешь свой обработчик и если пользователь ВВЁЛ ПАРАМЕТРЫ ПРАВИЛЬНО, то пишешь так:

    begin
    ...
    if ВСЕ_ПАРАМЕТРЫ_ВВЕДЕНЫ_ПРАВИЛЬНО then
    MODALRESULT:=1;
    end

    За одно читаешь хелп что такое MODALRESULT и для чего он вообще нужен ...
  • отредактировано 01:22
    Спасибо огромное!
    Натупил, признаюсь...
    Однако гнусные намеки на ламмерство прошу оставить при себе.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.