28.02.2020, 14:03 | #1 |
Участник
|
диалоговые окна WinAPI
Подскажите при использовании диалогового окна WinAPI
X++: path = WinAPI::getOpenFileName("Please select your file"); Подскажите как правильно вызвать. И еще, как отследить что нажал пользователь. OK или Cancel ? Последний раз редактировалось oleggy; 28.02.2020 в 14:06. |
|
28.02.2020, 14:13 | #2 |
Участник
|
Где вы хотите применить данный финт?
Случайно не в классе-наследнике RunBase?
__________________
// no comments |
|
28.02.2020, 14:45 | #3 |
Участник
|
первый параметр этой функции должен быть int (_hwnd), а у Вас : "Please select your file"
X++: client static str #fileNamelength getOpenFileName(int _hwnd, FilenameFilter _conFilter, str _strInitialPath, str _dialogTitle, str _strDefaultExtension='', str _strDefaultFileName='', int _flags = #OFN_FILEMUSTEXIST) X++: static void JobOpenFileName(Args _args) { FileNameFilter filter = ['Все файлы','*.*']; str filename; ; filename = Winapi::getOpenFileName(0,filter,'', 'Выберите файл', '*.*',''); if (filename) { info('ok'); info(filename); } else { info('отмена'); } } X++: static void JobOpenFileName_NET(Args _args) { System.Windows.Forms.OpenFileDialog _Dialog; System.Windows.Forms.DialogResult _DialogResult; System.Windows.Forms.DialogResult okResult; str selectedPath; int resultValue; int okValue; ; _Dialog = new System.Windows.Forms.OpenFileDialog(); _DialogResult = _Dialog.ShowDialog(); // Get the value from the dialog resultValue = CLRInterop::getAnyTypeForObject(_DialogResult); // Parse the OK enumeration of the enum DialogResult okResult = CLRInterop::parseClrEnum('System.Windows.Forms.DialogResult', 'OK'); // Get the int value of the OK enumeration okValue = CLRInterop::getAnyTypeForObject(okResult); // If the dialog is ended with OK, get the value or set it to blank selectedPath = okValue & resultValue ? _Dialog.get_FileName() : ''; if (selectedPath) { info('ok'); info(selectedPath); } else { info('отмена'); } }
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 28.02.2020 в 15:24. |
|
28.02.2020, 15:57 | #4 |
Участник
|
Я все же верю, что это нужно в RunBase-классе.
Для этого просто пропишите в методе dialog(): X++: dialogFilename = dialog.addFieldValue(typeid(FilenameOpen), filename); X++: DialogField dialogFilename; Filename filename;
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
29.02.2020, 07:38 | #5 |
Участник
|
не для RunBase класса...
А диалоговое окно сохранения файла? |
|
29.02.2020, 11:43 | #6 |
Участник
|
Как знать как знать...
Смотря откуда и для чего идет сохранение. По хорошему бы на RunBase передалать |
|
01.03.2020, 16:32 | #7 |
Участник
|
обычное сохранение файла.
Разве не существует на основе WinAPI ? |
|
01.03.2020, 22:09 | #8 |
Administrator
|
В системе - нет. Есть стандартный тип данных FilenameSave (если нужно указать файл на форме, на которой еще миллион полей) и наследник RunBase, если нужно вывести диалог с кнопками ОК, Отмена.
__________________
Возможно сделать все. Вопрос времени |
|
|
Похожие темы | ||||
Тема | Ответов | |||
axaptapedia: WinAPI | 0 | |||
Модальные диалоговые окна | 7 | |||
Dynamics AX Geek: Finding files with WinAPI | 1 | |||
Dynamics AX Geek: Finding files with WinAPI | 0 | |||
WinApi. Удаление файлов глючит. | 10 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|