• Регистрация
alextip
alextip +46.13
н/д

Разница между private property и public property в appdesigner

25.05.2020

Здравствуйте. В главном окне многооконного приложения я прописал публичное свойство.

Например:

properties (Access = public)
x1="текст"; % Description
end

Мне нужно получить доступ к этой переменной в окне диалога. Но в диалоговом окне синтаксис app.x1 и просто x1 не работает и сообщает о несуществующей переменой. Я честно говоря, думал, что по аналогии с публичной функцией смогу это сделать.

Проблему удалось решить только путем передачи нужной переменной во входные параметры дилогового окна (App Input Arguments). Возникает вопрос. Чем тогда публичная переменная отличается от частной, для чего она нужна? Или я где-то ошибся?

Теги

    25.05.2020

    Ответы

    • Максим Сидоров
      Максим Сидоров +239.28
      26.05.2020 12:13

      Здравствуйте. Чтобы обратиться к публичному свойству, надо сначала создать объект приложения, а потом обращаться к его свойствам.

      Пример:

      В приложении AppWithPubProp есть публичное свойство PubProp1. Вот код, чтобы к нему обратиться:

      app = AppWithPubProp % создаем объект приложения, при этом оно открывается
      p = app.PubProp1 % считываем значение свойства
      app.PubProp1 = 2 % обновляем значение
      • alextip
        alextip+46.13
        26.05.2020 12:27

        Спасибо.

        Надо будет попробовать, а то в справке ничего толкового найти не удалось

        • aBoomest
          aBoomest+942.89
          26.05.2020 19:05

          а то в справке ничего толкового найти не удалось

          как так? Информационная поддержка matlab одна из самых обширных. (По-рекламски прозвучало. Пофиг, раз правда, не буду корректировать.)

          • alextip
            alextip+46.13
            27.05.2020 18:27

            как так? Информационная поддержка matlab одна из самых обширных. (По-рекламски прозвучало. Пофиг, раз правда, не буду корректировать.)

            Может я невнимательный человек, но по интересующему меня вопросу на приведенной Вами странице ничего не нашел.

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

            Получается примерно так

            app.CallingApp.PublicProp

            • aBoomest
              aBoomest+942.89
              29.05.2020 04:38

              По ссылке:

              Абзац "Использование класса".
              Строчка два: "Создайте объект класса."

              Об этом говорил коллега.

              PS: Начал писать ответ, когда ответа еще не было. Так-то по идее и смысла небыло в моем посте)))

              • alextip
                alextip+46.13
                31.05.2020 09:43

                Спасибо, проблема то решена в принципе, но пока я не слишком силен в программировании чтоб сразу перейти от общих построений классов и т.д. к практике. Поэтому Ваш пост не сильно помог.

                • aBoomest
                  aBoomest+942.89
                  31.05.2020 17:54

                  Ок. Это главное.