• 0
Николай Ряполов

Почему у меня не работают триггеры, если я использую эффекты?

Вопрос

Доброго дня.

Решил попробовать начать работу с фреймами, но столкнулся со следующей ситуацией.

При отображении фрейма на главной форме своевременно не отрисовываются события и перемещения курсора по компонентам фрейма.

Фрейм добавляю с палитры компонентов.

Плолучается примерно следующий вид:

   post-898-0-83056600-1425678384.png

Как избавиться от этого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 ответов на этот вопрос

  • 0

Добрый день,

 

Было бы не плохо увидеть пример проекта, на котором это воспроизводится. Дополнительно укажите, какой стиль используется.

 

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Прикладываю Демо проект (пустая форма с фреймом) и файл фрейма.

 

Стиль - пустой проект - Multi-Device Application

Стили фрейма - все стандартные, ничего не трогал.

Добавляю фрейм на форму Tool-Palette-Standart-Frames выбираю свой фрейм.

Все в режиме Дизайна.

Баг воспроизвелся отдельно от основного проекта.

Среда XE7 Update1

Win 8.1

post-898-0-60913300-1425926820.png

 

Архив с исходниками demo.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Спасибо, ошибку воспроизвел.

Заведу ее во внутренний треккер. Завтра еще проверю в XE8.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

На сколько я вижу, проблема не во TFrame, а в используемом эффекте TNormalBlendEffect. Если его отключить, описанной вами проблемы не наблюдается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Решение следующее. Все эффекты по умолчанию кэшируются. Так как они дорогостоящие. Поэтому в вашем случае не происходит обновления эффекта. 

Решение простое, нужно выполнить ручное обновление эффекта в те моменты времени, когда вам это нужно. В вашем случае я сделал это на OnPaint у вашего фрейма:

procedure TfremAdres.FramePaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
  NormalBlendEffect1.UpdateParentEffects; // Это в случае обновления конкретного эффекта
//  IEffectContainer(vrtScrolBox).NeedUpdateEffects; // Этот код в случае обновлении всех эффектов у родительского контрола
end; 

Но имейте в виду, что эффекты тяжеловесны и могут давать низкую скорость работы на мобильных платформах.

xenon54 и Andrey Efimov понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Похожие публикации

    • Автор: FREEFAR
      Друзья, помогите-таки расставить точки над "И".
      Как же все таки правильно уничтожать динамически создаваемые компоненты TFrame
      Сейчас делаю так:
                        mapFrame.DisposeOf;
                        mapFrame.Parent := nil;
                        mapFrame := nil;
      Вроде удаляется и новый создается.
      Но вот беда.
      Если я создам функцию типа FreeFrame(Frame: TFrame);
      то как бы я ее не вызывал с входным параметром "mapFrame"
      фрейм все равно живет...
      Что не так? Куда копать?
    • Автор: david_yusupov
      Cтолкнулся с не большой проблемой. Разрабатываю фрейм, использованием событие OnResize. Суть проблемы создаем динамически очень много объектов, и в зависимости от размера фрейма, обсчитываем положение и обновление размеры обетов.
      Приводит к зависанию всего приложения.
    • Автор: TrueCrypt
      Ахой, столкнулся с очередной проблемой Firemonkey, есть Frame, в нем ActionList, на Action есть Shortcut, но почему-то он никак не хочет отрабатывать. В ActionList главной формы Shortcut работают, а на фреймах — ни в какую.
      Кто сталкивался, как можно решить проблему?
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу