Freezer_86
-
Постов
8 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Freezer_86
-
-
Это не очень относиться к теме но оставлю это здесь, вдруг кому пригодиться. В моей задаче нужно было еще отслеживать на какой странице находиться пользователь, а как оказалось свойство URL тоже работает некорректно. Пришлось "накостылять" следующее:
В WebBrowser.Android.pas добавляем:
function TAndroidWebBrowserService.originalUrl: string; begin if FJWebBrowser = nil then Result := FURL else Result := JStringToString(FJWebBrowser.getOriginalUrl); end;
В WebBrowser.Win.pas добавляем:
function TWindowsWebBrowserService.LocationUrl: string; begin Result := FUrl; if FInstance <> nil then Result := FInstance.LocationURL; end;
В WebBrowser.pas изменим:
function TKCustomWebBrowser.GetURL: string; begin if (csDesigning in ComponentState) or (FWeb = nil) then Result := FURL else {$IFDEF MSWINDOWS} Result := (FWeb as TWinWBMediator).WB.LocationUrl; {$ELSE} Result := (FWeb as TAndroidWebBrowserService).originalUrl {$ENDIF} end;
Как результат - корректная работа панели навигации.
-
Натыкался на такую проблему, смог обойти написанием своей копией TWebBrowser. Основное изменение для обхода именно ошибки с CoboBox'ом это в начале процедуры TCustomWebBrowser.FormHandleCreated вставкой кода:
{$IFDEF MSWINDOWS} exit; {$ENDIF}
После этого никаких проблем с пересозданием. Правда у меня все браузера создаются в Runtime. Не знаю или это подойдет для нормальной работы с загрузкой из DFM.
-
Как оказалось - проблемы были в самой Delphi. После обновления на 10.2.1 - тот же код работает без каких либо проблем.
-
Как я вижу есть несколько возможных причин: неверный формат данных, неверная реализация TGrid под Android, неподдерживаемая комбинация компонентов, ошибки в моем коде реализации (что маловероятно поскольку кода почти нет, Live Binding).
Неужели никто не сталкивался с подобными проблемами?
-
не пробовал, но если на Windows все ок, значит TBitmap коректный. Или не всегда?
Подготовил тестовый проект который иллюстрирует проблему: GridBlobTest.rar
-
1 минуту назад, RoschinSpb сказал:
Какая версия Delphi?
Delphi 10.2 Tokyo
Android 6.0
-
Пишу кроссплатформенное приложение. Результат поиска отображается в TGrid. Стал вопрос отображения картинки в одной из колонок.
На Windows все ок, но на планшете происходят просто чудеса: при первом отображение все корректно, но если простоколить вверх-вниз как картинки одни перетираются другими, часть вообще отображается вверх ногами.
Код для сохранение картинки(jpg) в базу:
if Assigned(sm) then begin sm.Position := 0; //TBlobField(dmData.cdsPlayerData.FieldByName('Photo')).LoadFromStream(sm); vImage := TImage.Create(nil); try sm.Position := 0; vImage.Bitmap.LoadFromStream(sm); vKoef := vImage.Bitmap.Height / 64; vImage.Bitmap.Resize(Trunc(vImage.Bitmap.Width / vKoef), Trunc(vImage.Bitmap.Height / vKoef)); sm.Free; sm := TMemoryStream.Create(); try vImage.Bitmap.SaveToStream(sm); TBlobField(dmData.cdsPlayerData.FieldByName('SmallPhoto')).LoadFromStream(sm); finally sm.Free; end; finally vImage.Free; end; end{if};
До скрола:
После скрола:
Пробовал и LiveBinding, и ручную прорисовку - результат один и тот же. Есть идеи что не так?
P.S. Знаю что нужно делать через TListView, но заказчик хочет «сеточку как в старой программе», так как на android будет работать только на планшетах – я согласился.
TakePhotoFromCameraAction
в Android
Опубликовано · Изменено пользователем Freezer_86
Доброго времени суток. Столкнулся с такой же проблемой в 10.4.2. В стандартном примере все работает, а в мигрированном приложении из 10.3.3 - приложение всегда ловит отмену запроса на фото. Я так понимаю где-то не хватает прав для временного файла.
Путем долгих и мучительных экспериментов и курением доки организовал эту всю штуку через нативные интенты.
Код вырезан из рабочего проекта, по этому извините если что-то не так. Но смысл должен быть понятен.
Здесь кроме самого фото еще реализовано автоматическое поворачивание картинки по Exif-даным, относительно того в каком положении был телефон.
Так же очень важно не забыть выставить права в опциях приложение и подключить Secure File Sharing в Entitlement List. С Uses секцией надеюсь разберетесь, не уверен что нужно для Вашей задачи все из того что я кинул.
P.S. возможно нужно будет вставить в манифест:
android:requestLegacyExternalStorage="true"