05.08.2008, 16:44 | #1 |
Участник
|
Диалог выбора каталога
Добрый вечер, коллеги.
Есть в аксапте замечательный EDT FilePath с lookup-формой SysPathName. Так вот выяснился пренеприятнейший факт, связанный с этими объектами Они не умеют "запоминать" путь для точного позиционирования на нужное место... Как это например с легкостью делает диалог открытия/сохранения файлов... Дело в том, что грустно каждый раз проходить длинный путь, начиная от Рабочего стола, до нужной папки, а стандартного решения не нашлось Кто-нибудь пытался решить эту задачу? Или может есть другие возможности в Аксапте, решающие данную проблему? |
|
05.08.2008, 17:15 | #2 |
Участник
|
Модифицировать форму FilePathLookup_RU - сохранять последний выбранный путь в xSysLastValue, при выборе передавать ее в метод browseForFolder этой формы третьим параметром.
|
|
06.08.2008, 10:54 | #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 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|