Как получить имя кнопки при ее нажатии ?

Автор Тема: Как получить имя кнопки при ее нажатии ?  (Прочитано 16734 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
печально..
Да нет, ничего печального не вижу. Имя кнопки - костыльный вариант в любом случае, хоть и рабочий.

Вот я накидал пример, как это можно сделать нормально, с объектно-ориентированными подходом. Даже с минимальными знаниями C#.
Код - C# [Выбрать]
  1.     [Transaction(TransactionMode.Manual)]
  2.     public abstract class BaseExecutePythonCommand : IExternalCommand
  3.     {
  4.         public Result Execute(
  5.           ExternalCommandData commandData,
  6.           ref string message,
  7.           ElementSet elements)
  8.         {
  9.            
  10.             // запускаеne скрипт
  11.             // criptEngine engine = Python.CreateEngine();
  12.             // ScriptScope scope = engine.CreateScope();
  13.  
  14.             // Брем имя скрипта
  15.             // engine.CreateScriptSourceFromFile(ScriptName).Execute(scope);
  16.  
  17.             return Result.Succeeded;
  18.         }
  19.  
  20.         public abstract string ScriptName { get; }
  21.     }
  22.  
  23.     public class Script1Command : BaseExecutePythonCommand
  24.     {
  25.         public override string ScriptName
  26.         {
  27.             get { return "script1.py"; }
  28.         }
  29.     }
  30.  
  31.     public class Script2Command : BaseExecutePythonCommand
  32.     {
  33.         public override string ScriptName
  34.         {
  35.             get { return "script2.py"; }
  36.         }
  37.     }

Так как все команды делают одно и то же - выносим функциональность в базовый абстрактный класс. Прописываем свойство - имя скрипта. Создаем столько классов-команд, сколько  кнопок. В каждом задаем имя скрипта, который нужно будет выполнить. Не забываем класс унаследовать от базового. Кнопки привязываем к наследуемым классам.

Оффлайн LegantmarАвтор темы

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1
Виктор, спасибо за "костыль" )), но это все не то...
нет прямой связи со свойством кнопки, а это трагедия..

// Прописываем свойство - имя скрипта. Создаем столько классов-команд, сколько  кнопок. Кнопки привязываем к наследуемым классам.
ну вот не знаю я ни имена скриптов, ни количества кнопок, хочу чтоб вот прям максимально было универсально и под каждого... и без сборки dll  (хоть одной dll с несколькими предопределенными командами, функциями, хоть нескольких dll под каждую
новую кнопку)
за 2 секунды до "выхода в эфир" я узнаю только имя кнопки (оно же имя скрипта py) и все.. вписываю одну строчку во внешний txt файлик и все должно "сверкать и крутиться"... это я образно выразился, надеюсь оценил юмор ))  (никаких dll даже упоминаться не должно)))

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Legantmar,
Есть у меня идейки как можно получить имя кнопки. Не официальным правда способом. Посмотрю, правда завтра уже.

Оффлайн LegantmarАвтор темы

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1
Виктор, спасибо за твое внимание и помощь.
не расстроюсь, если ничего не получится...
но буду сильно рад, если удастся "обмануть ревит"

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Legantmar,
ну вроде получилось. Пока видео, как подготовлю ответ, сообщу.

На все кнопки повешана одна команда.

Оффлайн LegantmarАвтор темы

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1
у меня тоже получилось
(помог человек из BIM Академии, просил его не называть)
p.s. решение не нужно выкладывать, сохраним тайну  ;)
https://yadi.sk/i/9R70cGub3E9p2N

p.s. спасибо тебе Виктор!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
p.s. решение не нужно выкладывать, сохраним тайну  ;)
На нашем форуме так делать не принято. Если вопрос был задан публично, то и решение должно быть публичным.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Legantmar,
Вот мое решение.
Интересно посмотреть и ваше, если оно другое.