• Регистрация
foxic3532
foxic3532 0.00
н/д

инициализация_независимого_handles_в_гуи_и _передача_как_глобальной_переменной

08.08.2019

Добрый день , Форумчане.
Нужен совет , вот в каком вопросе .
описание общей ситуации :
я сделал гуи :

1) с несколькими радиобатонами (выбирая один - остальные неактивны ; выключая становится активными на выбор все остальные радиобатоны и такое поведение у каждого радиобатона ) ;
2) к каждому радиобатону подключен набор радиаботонов и эдит_текстбоксов ( в виде всплывающего списка );

3) есть отельная кнопка - обработчик ( запуск расчета , радиобатон) . эта кнопка становится видимой при выборе каждого из радиобатона из 1) и обладает реакцией ( вывод определенных сообщений ) на выбранные элементы и вводимую информацию из 2) .

мне бы хотелось узнать , как сделать handles_А [ (не привязанный к каждому радиобатону ) через команду guihandles ] , который будет принимать только числовое значение, меняться в 2) и передаваться в кнопку - обработчик (радиобатон) , другими словами handles_A принимает значения внутри гуи-обьекта , потом передается в следующий гуи-обьект (так несколько раз) , а потом уже передается на обработчик . Обработчик , в зависимости от значения handles_A , выдает определенные сообщения / либо отправляет данные из гуи в расчет (в общем, handles_A - аналог глобальной переменной)

Пример , как должен работать handles_A :
если выбираем 1-ый радиобатон , handles_А становится = 11 ( при выключении handles_А=10 ) , последовательно вводим информацию в список для 1-ого радиобатона , handles_А принимает значения : 5, 7, 9 ( любое из этих чисел должно передаваться в обработчик , если в обработчик передается 9 , то обработчик отправляет всю информацию из гуи в расчет ). если выбираем 2-ой радиобатон handles_А становится =21 ( при выключении handles_А=20 ) , последовательно вводим информацию в список для 2-ого радиобатона , handles_А принимает значения : 6, 8, 12 и так для каждого радиобатона .

Теги

      08.08.2019

      Лучший ответ

      • Павел Рословец +239.28
        12.08.2019 12:00

        Добрый день.

        Если вы сделали приложение в GUIDE или в App Designer, то ваше приложение является классом, поэтому правильно будет создать в нем свойство (property) с именем handles_А. Это свойство будет доступно во всех методах (функциях) вашего приложения.

        Если интерфейс вы рисуете из обычной MATLAB-функции без создания класса, то можете записывать значение handles_A в свойство UserData любого графического объекта (например, фигуры), а затем оттуда же его считывать.

        Ну и наконец можно создать глобальную (global) переменную, но так лучше не делать, это сделает ваш код трудно читаемым и усложнит отладку.

      Ответы

      • Павел Рословец
        Павел Рословец +239.28
        12.08.2019 09:09

        Добрый день.

        Если вы сделали приложение в GUIDE или в App Designer, то ваше приложение является классом, поэтому правильно будет создать в нем свойство (property) с именем handles_А. Это свойство будет доступно во всех методах (функциях) вашего приложения.

        Если интерфейс вы рисуете из обычной MATLAB-функции без создания класса, то можете записывать значение handles_A в свойство UserData любого графического объекта (например, фигуры), а затем оттуда же его считывать.

        Ну и наконец можно создать глобальную (global) переменную, но так лучше не делать, это сделает ваш код трудно читаемым и усложнит отладку.

        • foxic3532
          foxic35320.00
          20.01.2020 15:52

          Павел здравствуйте . вопрос этот решил - через структуру , которую потом обьявил глобальной .

            Но у меня появялась новая задачка ( написал сегодня на старый форум ) вот текст этой задачки - вопроса :

          Интересует последовательность действий по созданию кросс-платформенного приложения (именно приложения) на основании набора матлабовских функций .

          У меня следующее : два гуи-файла и набор файлов - функций , написанных в матлабе , без использования ячеек . установлен матлаб R2016b .
          1-ое гуи - выбор расчета и ввод необходимых данных для расчет (в том числе выбор файлов); 2-ое гуи - открывается по желанию пользователя для задания настроек по построению картинок и по их форматированию .
          Между гуи-файлами и файлами - функциями ( расчетные файлы-функции ) передается структура ( глобальная ) - в этой структуре по , умолчанию, строковые переменные ( разной длины ) , матрицы , векторы-строки и векторы-столбцы . В процессе расчета , в эту структуру записываются дополнительно матрицы , векторы-строки , векторы-столбцы . Помимо этого , существует файл с печатью данных в текстовый файл .

          вопросы:

          1) Насколько я понимаю для создания кросс-платформенного приложения необходимо перегнать матлабовский код в код с++ (а для этого нужен компилятор , какой ? и где его можно скачать ?)
          2) возможно ли в принципе создание приложения , чтобы оно работало и в windows , и в linux и в mac; или под каждую платформу надо будет создавать с нуля приложение ?
          3) какая должна быть последовательность действий по сборке приложения ? (здесь пожалуйста по-подробнее)
          4) есть и файл-функция по построению картинок - этот файл стоит писать матлабовским кодом или или все что касается plot написать на питоне ?
          5) и , на перспективу , возможно ли перегонка матлабовского кода (с использованием матлабовских ячеек) в код с++ ?

          Заранее спасибо , Артемий .