Помогите все ж таки
Когда-то уже писал, запускаю снова:
При запуске отчета выводится диалоговое окно с выбором периода выполнения отчета и складов, по которым отчет будет выполняться. Юзер может выбрать список складов, по которым будет строится отчет, а может запустить по всей фирме. Случай, когда склады не перечислены, хотелось бы обработать примерно так:
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". При существующей у меня тенденции усложнять диалоговые окна отчетов это становится очень неприятно. Фактически ничего страшного, но выглядит неприглядно.
При запуске отчета выводится диалоговое окно с выбором периода выполнения отчета и складов, по которым отчет будет выполняться. Юзер может выбрать список складов, по которым будет строится отчет, а может запустить по всей фирме. Случай, когда склады не перечислены, хотелось бы обработать примерно так:
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". При существующей у меня тенденции усложнять диалоговые окна отчетов это становится очень неприятно. Фактически ничего страшного, но выглядит неприглядно.
Комментарии
У кнопки есть такая штука "MODALRESULT" - если ты у неё выставил ВСЕГДА mrOK, то логично что ты получаешь то что получаешь )
Кароче - выставляй у кнопки (в инспекторе) ModalResult = mrNone
Затем на OnClick (у кнопки ессно) пишешь свой обработчик и если пользователь ВВЁЛ ПАРАМЕТРЫ ПРАВИЛЬНО, то пишешь так:
begin
...
if ВСЕ_ПАРАМЕТРЫ_ВВЕДЕНЫ_ПРАВИЛЬНО then
MODALRESULT:=1;
end
За одно читаешь хелп что такое MODALRESULT и для чего он вообще нужен ...
Натупил, признаюсь...
Однако гнусные намеки на ламмерство прошу оставить при себе.