1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Toolbar подмена картинки

Сценарии / Модули API

Модератор: специалисты Eplan

Ответить

Автор темы
wapdimon72ru
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 11 апр 2019, 06:55
Имя: Марат
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Toolbar подмена картинки

Сообщение wapdimon72ru »

Можно ли подменить картинку у кнопки в процессе работы?

Код: Выделить всё

bool fff-флаг, нажата ли была кнопка, чтоб подменить картинку, если первая картинка - подставить вторую, если вторая - первую
1 вариант. Если удалять всю панель, и заново рисовать новую

Например:

Код: Выделить всё

 if (fff)
            {
                toolbar.CreateCustomToolbar(toolbarName, Eplan.EplApi.Gui.Toolbar.ToolBarDockPos.eToolbarTop, 1, 0, false);
                toolbar.AddButton(toolbarName, 0, "Action", @"Путь\16.jpg", "Текст");
                fff = false;
            }
            else
            {
                toolbar.CreateCustomToolbar(toolbarName, Eplan.EplApi.Gui.Toolbar.ToolBarDockPos.eToolbarTop, 1, 0, false);
                toolbar.AddButton(toolbarName, 0, "Action", @"Путь\16_orange.jpg", "Текст");
                fff = true;
            }
Слишком медленно происходит, видно перерисовку, и действие по нажатию на кнопку происходит с заметной задержкой

2 вариант. Удалить только кнопку на панели(не саму панель) и заново отрисовать новую кнопку

Код: Выделить всё

                if (fff)
                {
                    toolbar.AddButton(toolbarName, 0, "Action", @"Путь\16.jpg", "Текст");
                    toolbar.RemoveButton(toolbarName, 1);
                    fff = false;
                }
                else
                {
                    toolbar.AddButton(toolbarName, 0, "Action", @"Путь\16_orange.jpg", "Текст");
                    toolbar.RemoveButton(toolbarName, 1);
                    fff = true ;
                }
Результат еще хуже, мало того что визуально видно как вставляется новая кнопка и старая удаляется, дак работает еще медленно и сдвигает все другие панели не возвращая их назад, тоже вариант так себе.


Дак вот главный вопрос: Как подменить картинку в реальном времени? чтобы работало это быстро, без сдвигов других панелей, быстрой отрисовкой без задержек
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2318
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1644 раза
Поблагодарили: 160 раз

Toolbar подмена картинки

Сообщение keysansa »

Не специалист в Epan API, но по скрипту могу сказать, что создание/удаление элементов - это всегда долго, и заметно для глаза.
Для того, что бы было быстро - меняйте свойство кнопки, а не тулбара.

ЗЫ. Полистал справку API Toolbar - похоже нет возможности управлять кнопкой после ее создания. Метод создания кнопки не возвращает ни индекс, ни указатель.
Сам класс Toolbar не имеет методов получения указателя на кнопку по ее индексу.
Класс кнопки не описан в API.

Попробуйте в intellisense посмотреть, может данные методы и классы есть, просто в документацию не выведены.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «Eplan API»