AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2005, 15:37   #1  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
К сожалению, с помощью стандартных объектов automation и OCX, получить хендл нельзя.

В качестве более изящного способа могу предложить реализовать BrowseForFolder через scripting (например на jscript), а вызов диалога выбора папки через Microsoft Script Control.

В общих чертах это будет выглядеть так:
<div class='CALtop'>C/AL</div><div class='CAL'>
CREATE(MsScriptControl);
Str := 'function browse()';
Str += '{';
Str += '  var WSHShellApp = WScript.CreateObject("Shell.Application");';
Str += '  var SelectedItem = WSHShellApp.BrowseForFolder(0, Prompt, BrowseInfo, StartFolder);';
MsScriptControl.AddCode(Str);
MESSAGE('Ваш путь: %1',FORMAT(MsScriptControl.Run('browse()',SafeArray)));
</div>
Старый 22.07.2005, 15:57   #2  
Dimsun is offline
Dimsun
Участник
 
4 / 10 (1) +
Регистрация: 22.07.2005
Цитата:
Сообщение от tyrex
К сожалению, с помощью стандартных объектов automation и OCX, получить хендл нельзя.

В общих чертах это будет выглядеть так:
<div class='CALtop'>C/AL</div><div class='CAL'>
CREATE(MsScriptControl);
Str := 'function browse()';
Str += '{';
Str += '  var WSHShellApp = WScript.CreateObject("Shell.Application");';
Str += '  var SelectedItem = WSHShellApp.BrowseForFolder(0, Prompt, BrowseInfo, StartFolder);';
MsScriptControl.AddCode(Str);
MESSAGE('Ваш путь: %1',FORMAT(MsScriptControl.Run('browse()',SafeArray)));
</div>
В таком случае, если я правильно понимаю, диалоговое окно откроется не в модальном режиме: при вызове BrowseForFolder, в качестве Handle передается 0, т.е. Desktop. А пользователь по прежнему сможет работать с Navision, забыв преспокойненько про открытое окно.
Открыть диологовое окно у меня проблем не вызывает, а вызывает сложность заставить это окно открытся в Runmodal режиме, использую только C-AL и стандартные dll.

Dll, которую я использую, была мною скачена с mibuso.com вместе с исходниками. Она используя user32.dll выдает handle активного окна, в моем случае Navision. От туда, кстати, я и взял идею открытия диалогового окна через Automation.

В общем всем Спасибо. Придеться ташить к клиенту эту dll и там на всех машинах, где она может использоваться, ее регистрить..
Старый 22.07.2005, 16:07   #3  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Все таки, могли бы использовать Microsoft Common Dialog Control.
В отчете надо было бы просто первым Item ом сделать таблицу File и добавить небольшой кусочек кода для обработки всех файлов из директории.
Ну, хозяин - барин.
__________________
MBS Certified Master in Navision Developer
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:22.