|
![]() |
#1 |
Участник
|
диалоговые окна WinAPI
Подскажите при использовании диалогового окна WinAPI
X++: path = WinAPI::getOpenFileName("Please select your file"); Подскажите как правильно вызвать. И еще, как отследить что нажал пользователь. OK или Cancel ? Последний раз редактировалось oleggy; 28.02.2020 в 14:06. |
|
![]() |
#2 |
Участник
|
Где вы хотите применить данный финт?
Случайно не в классе-наследнике RunBase?
__________________
// no comments |
|
![]() |
#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. |
|
![]() |
#4 |
Участник
|
Я все же верю, что это нужно в RunBase-классе.
Для этого просто пропишите в методе dialog(): X++: dialogFilename = dialog.addFieldValue(typeid(FilenameOpen), filename); X++: DialogField dialogFilename; Filename filename;
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#5 |
Участник
|
не для RunBase класса...
А диалоговое окно сохранения файла? |
|
![]() |
#6 |
Участник
|
Как знать как знать...
Смотря откуда и для чего идет сохранение. По хорошему бы на RunBase передалать ![]() |
|
![]() |
#7 |
Участник
|
обычное сохранение файла.
Разве не существует на основе WinAPI ? |
|
![]() |
#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 |
|