С моей точки зрения "правильно" - это понятие относительное для условий задачи. В одном случае важна скорость разработки, а пользователя можно обучить, в другом надо делать, чтобы быстро работало. В одном случае периодичность пакетного режима нужна - и тогда надо делать очередь доступную с сервера, в другом не нужно (и надо думать как запретить эту периодичность). В одном случае файлы большие, в другом - маленькие.
Что я видел:
1. Отдельный интерфейс для загрузки заданий на сервер, включая использование готовых хранилищ (сетевая папка, встроенный документооборот, ftp, sharepoint) - фактически мы разбиваем на два интерфейса, клиентский и периодическое задание. Это подходит к случаю, когда нам нужна именно периодичность.
2. Загрузка и обработка внутри диалога (например выводим поле в котором сообщение <файл не загружен> и dialog.addMenuItem, на форму/runbase наследника который загружает с прогрессом, возможностью отмены и прочим). Можно сделать отдельную форму подсунуть ее в диалог.
3. Теоретически можно сделать в getFromDialog и бороться с упомянутыми тобой недостатками - вызывать info.yield, WinApi::SetActiveWindow и так далее (я, правда, все это подзабыл)
|