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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2008, 16:44   #1  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Диалог выбора каталога
Добрый вечер, коллеги.

Есть в аксапте замечательный EDT FilePath с lookup-формой SysPathName.

Так вот выяснился пренеприятнейший факт, связанный с этими объектами Они не умеют "запоминать" путь для точного позиционирования на нужное место... Как это например с легкостью делает диалог открытия/сохранения файлов...

Дело в том, что грустно каждый раз проходить длинный путь, начиная от Рабочего стола, до нужной папки, а стандартного решения не нашлось

Кто-нибудь пытался решить эту задачу? Или может есть другие возможности в Аксапте, решающие данную проблему?
Старый 05.08.2008, 17:15   #2  
NeveB is offline
NeveB
Участник
 
60 / 16 (1) ++
Регистрация: 14.11.2003
Адрес: Mosсow
Модифицировать форму FilePathLookup_RU - сохранять последний выбранный путь в xSysLastValue, при выборе передавать ее в метод browseForFolder этой формы третьим параметром.
Старый 06.08.2008, 10:54   #3  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от NeveB Посмотреть сообщение
Модифицировать форму FilePathLookup_RU
в четверке эту форму прибили похоже, глянул в 3ку, но все равно она поставленной задачи не решает диалог выбора каталога все равно открывается по default'у на рабочем столе, а 3ий параметр метода browseForFolder всего лишь берется в том, случае если мы ничего не выбрали в диалоге. Вот код того метода в 3.0:
X++:
str browseForFolder(int _hwnd, str _title, str _defaultFolder = "")
{
    str folder;
    int il;

    // Declare the DLL's we need to use
    DLL dll = new DLL(#dLL);
    DLLFunction shBrowseForFolder   = new DLLFunction(dll, #browseFolder);
    DLLFunction shGetPathFromIDList = new DLLFunction(dll, #browsePath);

    DLL dllOle = new DLL(#dLLOLE);
    DLLFunction coTaskMemFree = new DLLFunction(dllOle, #dLLFuncMemFree);

    Binary struct = new Binary(#structSize);
    Binary titleStruct = new Binary(strlen(_title) + 1);
    Binary folderStruct = new Binary(#fileNameLength);

    shBrowseForFolder.returns(ExtTypes::DWORD);
    shBrowseForFolder.arg(ExtTypes::POINTER);

    shGetPathFromIDList.returns(ExtTypes::DWORD);
    shGetPathFromIDList.arg(ExtTypes::DWORD, ExtTypes::POINTER);

    coTaskMemFree.arg(ExtTypes::DWORD);

    titleStruct.string(0, _title);

    struct.dWord(0, _hwnd);          // hwndOwner
    struct.dWord(4, 0);             // pidlRoot
    struct.dWord(8, 0);             // pszDisplayName
    struct.binary(12, titleStruct); // lpszTitle
    struct.dWord(16, 0);            // ulFlags
    struct.dWord(20, 0);            // lpfn
    struct.dWord(24, 0);            // lParam
    struct.dWord(28, 0);            // iImage

    // Put up the Select Folder dialogue
    il = shBrowseForFolder.call(struct);

    if (il)
    {
        // extract folder name
        if (shGetPathFromIDList.call(il, folderStruct))
        {
            folder = folderStruct.string(0);
        }

        // clean up
        coTaskMemFree.call(il);
    }
    else
    {
        folder = _defaultFolder;
    }
    return folder;
}
вот если бы параметр _defaultFolder как то передавался в метод DLL, тогда - да, но к сожалению в данном случае можно лишь рулить параметром pidlRoot - struct.dWord(4, 0); где 2ой параметр=0 как раз и говорит что открывать надо Рабочий стол. Но он насколько я понимаю может быть только предопределенным значением, типа: Рабочий стол, Мои документы и т.п.... А строку передать не удастся...
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Элемент диалога, для выбора из списка demon46 DAX: Программирование 11 14.12.2010 17:06
Диалог выбора файла PavelSR DAX: Программирование 7 11.09.2009 13:41
финансовые аналитики в диалог longson DAX: Программирование 6 02.07.2008 03:23
Диалог на отчете, то работает, то нет Himan DAX: Программирование 6 22.02.2007 11:04
Диалог открытия файлов NeveB DAX: Программирование 1 08.12.2003 11:48

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

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

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