|
|
#1 |
|
Участник
|
Диалог выбора каталога
Добрый вечер, коллеги.
Есть в аксапте замечательный EDT FilePath с lookup-формой SysPathName. Так вот выяснился пренеприятнейший факт, связанный с этими объектами Они не умеют "запоминать" путь для точного позиционирования на нужное место... Как это например с легкостью делает диалог открытия/сохранения файлов...Дело в том, что грустно каждый раз проходить длинный путь, начиная от Рабочего стола, до нужной папки, а стандартного решения не нашлось ![]() Кто-нибудь пытался решить эту задачу? Или может есть другие возможности в Аксапте, решающие данную проблему? |
|
|
|
|
#2 |
|
Участник
|
Модифицировать форму FilePathLookup_RU - сохранять последний выбранный путь в xSysLastValue, при выборе передавать ее в метод browseForFolder этой формы третьим параметром.
|
|
|
|
|
#3 |
|
Участник
|
в четверке эту форму прибили похоже, глянул в 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; }
|
|
|
| Теги |
| ax3.0 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Элемент диалога, для выбора из списка | 11 | |||
| Диалог выбора файла | 7 | |||
| финансовые аналитики в диалог | 6 | |||
| Диалог на отчете, то работает, то нет | 6 | |||
| Диалог открытия файлов | 1 | |||
|