Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
SerhioUser

В TImage3D Map/Unmap под OSX в XE8 не работает

Вопрос

Здравствуйте всем!

 

Проверял на OS X - Mountain Lion 10.8.3

 

После Map/Unmap-обновления картинки, изображение на 3D-форме с TImage3D не обновляется.

 

Вот простой пример - TestMap.zip - по таймеру заносит шум в TImage3D.Bitmap.

В XE7 работает и под Win32 и под OSX.

В XE8 под win32 работает, а под OSX отображает белый фон. Если над формой провести каким-то другим окном, то в этом месте картинка, т.е. ее часть (в нашем случае шум), отрисовывается. Тоже самое если нашу форму вывести за экран и потянуть обратно - в местах появления формы отображается часть нашей картинки (шума).

 

BeginUpdate/EndUpdate и Repaint результата не дали.

 

XE8 Update1 - тоже самое.

 

Как сие побороть?

 

(Обычный TImage отрабатывает нормально).

Изменено пользователем SerhioUser

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


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

Рекомендуемые сообщения

  • 0

И тишина...

 

Огромная просьба - если кто-то может делать баг-репорты в Embarcadero, запостите, пожалуйста вышеописанную проблему!!!

К сожалению с триалом на баг-репорт меня не пускают.

 

И если у кого есть другая версия OSX - можете подтвердить (или опровергнуть) этот баг?

 

Всем спасибо!

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


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

В свое время сталкивался с проблемой отрисовки некоторых контролов в ФМ, симптомы были примерно те же. Помогло "дрыгание" контролов путем смещения позиции на 1рх влево и потом вправо. После этого костыля все отображалось нормально.

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


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

Спасибо за ответ!

Попробовал "дрыгание". К сожалению костыль не помог.

Даже выяснилась бОльшая проблема:

Похоже сама TForm3D не рефрешит то, что на ней.

Стандартный пример "AnimationDemo3D" из папки "Samples\CPP\FireMonkey Desktop" под OSX не отрисовывает анимацию. Только если подвигать всю форму туда-сюда за пределы экрана, появляются фрагменты кадров анимации.

PaintRects и Invalidate не помогло.

 

Похоже вырисовывается серьёзный косяк в XE8.

Кто-то может запустить-проверить это демо у себя на маке или хакинтоше?

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

  • Похожий контент

    • От Денис Демин
      Здравствуйте, есть такая задача:
      1) Необходимо вставить карту от Яндекса на форму.
      2) Необходимо вставить информацию текстовую (информация о доставке или оплате), это можно также вставить HTML кодом, а лучше просто отформатированным содержанием. 
      Заранее спасибо всем за ответы.
    • От notricky
      На Android код, который работает исправно на Win  вызывает ошибку "CalledFromWrongThreadException: Only the original thread that created a view hierarcy can touch its views" 
      Смысл таков, что я пытаюсь показать форму из треда, у которой BorderStyle=none (роли это не играет).
      Решение в Андроиде заключается в том, чтобы пускать через  runOnUiThread  (то есть выполнять интерфейсные штуки в главном потоке). Как я понимаю, в firemonkey эту фичу должен выполнять Synchronize().
      Тем не менее, ошибка возникает.
      А при запуске в режиме дебага на андроид девайсе событие кнопки вообще не срабатывает иногда. А если срабатывает, то возникает описанное выше исключение.
      Я собрал тестовый пример и в нем не сразу видна ошибка, тогда как получил я ее на рабочем проекте.
      Цель: показать бизибокс на время бекграундных действий. Этот бизибокс у меня сначала был просто на каждой форме и я интерфейсно его вызывал, но теперь решил сделать отедльной формой (как и тоаст), но почему так происходит я не понял. Вы что скажете?
       
      unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TWorkThread = class(TThread) public procedure Execute; override; end; var Form1: TForm1; implementation {$R *.fmx} uses unit2; procedure TForm1.Button1Click(Sender: TObject); var t: TWorkThread; begin t := TWorkThread.Create(True); t.FreeOnTerminate := true; t.Start; end; { TWorkThread } procedure TWorkThread.Execute; begin inherited; Self.Synchronize(procedure begin Form2.Show; Form2.Top := Form1.Top; Form2.Left := Form1.Left; Form2.BringToFront; end); Terminate; end; end.  
    • От rakhmet
      Для FMX-приложения понадобилось разместить кнопки с битмапами в заголовке OSX-окна:

      Здесь был, это читал, но подходящего Delphi-решения найти не смог. Есть какие-нибудь идеи?
    • От notricky
      Почему-то не возможно использовать константы цветов, заданные в TAlphaColorRec, TColorRec.
      Они есть, но при присвоении, например, TextSettings.Font.Color = TColorRec.cRed или TAlphaColorRec.Red ничего не происходит. Нужно явно задавать $FFFF0000.
      Если так у кого-то ещё, напишите.
      А если что-то можно с этим сделать - тоже
    • От notricky
      Почему-то код, исправно работающий для WIN, не работает на ANDROID.
      procedure AssignEventToComponent(C: TComponent; MethodName: String; const Evt: TNotifyEvent; OnlyIfNil: boolean = true); var M: TMethod; begin M := GetMethodProp(C,MethodName); if not OnlyIfNil or (M.Code = nil) then begin TNotifyEvent(M) := Evt; SetMethodProp(C,MethodName,M); end; end; Есть какие-то особенности работы TMethod для ANDROID?
    • От Рагим
      Доброго времени суток. Имеется старый проект написанный на VCL. Хочу его перевести на FMX и столкнулся с тем, что не могу воспроизвести SWF. Компоненты Flash установлены и видны под VCL, а под FMX нет.
    • От Евгений Корепов
      Возникла задача поиска (фильтрации) в ListView по нескольким критериям. К примеру нужно искать по Item.Text, Item.Detail и Item.Date['Category']. Пошел путем, ранее подсказанным на этом форуме - правкой "function TListViewItems.ApplyFilter: Boolean" в FMX.ListView.pas. Передавать строку поиска хотел в строке типа "Text=Пеньки&Detail=по три рубля&Category=Осиновые", но быстро понял что код превращается в одноразовую кашу, а хотелось сделать красиво и на будущее.
      Сделал так - добавил еще один тип "TFilterPredicateEx = TPredicate<TListViewItem>;", к существующему "TFilterPredicate = TPredicate<string>;" в TListViewItems. Ну и далее по списку добавил аналоги к переменным, функциям и property.
      Смысл в том чтобы вместо обычного бутылочного горлышка в фильтации:
      ListView.Items.Filter:= function(X: string): Boolean begin Result := AFilterText.IsEmpty or X.ToLower.Contains(AFilterText.ToLower); end; иметь мощный инструмент с доступом ко всем плюшкам TListViewItem. Теперь это выглядит вот так:
      type TListViewFilterEx = record Category : String; Name : String; end; ... Var AFilter : TListViewFilterEx; // это для удобства хранения фильтров в одном месте ... AFilter.Category:='Береза'; AFilter.Name:='Пеньки'; AListView.Items.FilterEx:= function(X: TListViewItem): Boolean begin Result:= (AFilter.Category.IsEmpty or X.Data['Category'].AsString.ToLower.Contains(AFilter.Category.ToLower)) And ((AFilter.Name.IsEmpty or X.Text.ToLower.Contains(AFilter.Name.ToLower)) or (AFilter.Name.IsEmpty or X.Detail.ToLower.Contains(AFilter.Name.ToLower))); end; Подозреваю что все это можно было сделать с помощью хелперов, но до их освоения руки никак не дойдут. Если кто то сделает хелпер, дабы не править FMX.ListView.pas, буду очень благодарен.
      Внимание! FMX.ListView.pas от Delphi XE8, к другим версиям думаю не подойдет.
      Прилагаю дополненный FMX.ListView.pas к сообщению.
      FMX.ListViewWithFilterEx.zip
    • От Евгений Корепов
      При публикации нового приложения я обнаружил исчезновение Google Cloud Messaging из консоли разработчика, теперь вместо него Firebase Cloud Messaging. 
      Как я понимаю возможность push сообщений для Delphi закончилась? Или как то можно прикрутить FCM к проекту на Delphi?
    • От Ilya.Z
      Столкнулся с такой проблемой, (Delphi Seattle, OSX+ WIndows 10) делаю форму со своим заголовком, при установленных свойствах Transperency := True  или BorderStyle := None,
      переход в режим FullScreen не отрабатывается корректно (форма не изменяет размер на максимальный),  решил перед переходом в полноэкранный режим устанавливать   Transperency := False  и BorderStyle отличный от None, но программа вылетает, иногда сразу иногда на 2-3 раз смены параметров, причем независимо от того что меняю прозрачность или бордер.  если запускать через отладчик то вываливается на такое -
      в System.Internal.ExcUtils;
      {   RaiseSignalException is called from SignalConverter, once we've made things look   like there's a legitimate stack frame above us.  Now we will just create   an exception object, and raise it via a software raise. } procedure RaiseSignalException(ExceptionEIP: LongWord; FaultAddr: LongWord; ErrorCode: LongWord);
      begin  
        raise GetExceptionObject(ExceptionEIP, FaultAddr, ErrorCode);
      end;
      под Windows все работает нормально, без всяких выкрутасов
      для проверки можно сделать пустую форму, две кнопки , и скажем панель за которую перетаскивать форму
      и три обработчика-
      procedure TForm1.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton;   Shift: TShiftState; X, Y: Single);
      begin
       if (Button = TMouseButton.mbLeft) and (y < 25) then StartWindowDrag;
      end;
      procedure TForm1.sbExpandClick(Sender: TObject);
      begin
        i f BorderStyle = TFmxFormBorderStyle.None then  
                  BorderStyle := TFmxFormBorderStyle.Single  
         else  BorderStyle := TFmxFormBorderStyle.None;
      end;
      procedure TForm17.sbFullClick(Sender: TObject);
      begin  
        FullScreen := not FullScreen;
      end;
      Может кто то сталкивался, как под OSX в рантайме менять у формы прозрачность и бордер не вываливаясь в исключения, или нормально обрабатывать переход в полноэкранный режим у прозарчной (или без стандартного заголовка) формы
      Спасибо
    • От AndreyS
      Всем доброго дня!
      После обновления OSX до El Capitan появился один эффект, который сильно мешает. В моей программе я не использую FullScreen для форм. Дело в том, что при FullScreen на OSX при нескольких открытых окнах, особенно если некоторые из них модальные бывают глюки, когда немодальное окно вдруг становится поверх всех окон, но при этом неактивным, т. к. есть модальное окно, на котором сейчас фокус. Раньше я не парился по этому поводу, т. к. мое приложение просто разворачивалось так же, как в винде. Но после обновления на El Capitan в заголовке формы отображается кнопка перехода в в FullScreen в независимости от значений соответствующих флажков у TForm. Есть ли какой-нибудь способ запретить окну переходить в FullScreen?
      Заранее спасибо.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...