|
|
#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 | |||
|