-
Постов
414 -
Зарегистрирован
-
Посещение
-
Победитель дней
36
Активность репутации
-
Barbanel отреагировална x11 в Библиотека Alcinoe для iOS/FMX
На просторах sql.ru нашёл ссылку на приложение kiskis на Delphi/FMX. Что-то типа мессенджер+инстаграм.
https://youtu.be/WEsEhGfrW-g
Alcinoe is a library visual and non-visual components for Delphi.
https://github.com/Zeus64/alcinoe
-
Barbanel отреагировална mazayhin в Перестало работать приложение. Splash screen и дальше падает.
Потому что API-Level 26 он будет стоять автоматически. Как впрочем и практически все остальные, запрошенные в манифесте. Так же, не плохо было бы добавить в манифест
<uses-feature android:name="android.hardware.camera" /> Начиная с 26 необходимо разрешения, помимо указания в манифесте, должны явно запрашиваться у пользователя.
Почитайте https://developer.android.com/guide/topics/permissions/overview
Ну а для Delphi подключайте KastiFree https://github.com/DelphiWorlds/KastriFree
Там есть пример использования https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidDangerousPermissions
и в добавок https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidAPI26 тут как раз работа с камерой
-
Barbanel отреагировална Вадим Смоленский в Windows.Services.Store namespace
В многомесячной борьбе с Microsoft Store за размещение у них своего Windows-приложения я продвинулся настолько, что вплотную подошел к организации взимания денег с покупателей посредством механизма add-ons (in-app purchases). Но здесь меня ждала очередная засада. Необходимые программные инструменты, главным из которых считается класс StoreContext, лежат в пространстве имен Windows.Services.Store; файлы с такими именами (windows.services.store.h и windows.services.store.idl) в Windows 10 действительно находятся; но в Delphi я не могу найти юнита с чем-то подобным. Хотя на одном форуме видел утверждение годичной давности, что в релизе 10.2 Tokyo это уже есть.
Не может ли кто-нибудь пролить свет? Не там ищу? Все-таки еще не добавили? Или, может, это появилось лишь в самой последней сборке 10.2.3? У меня стоит 10.2.2.
Обещание написать подробную статью по итогам моих мытарств остается в силе. На этом пути столько подводных камней и неочевидных ходов, что грех о них не поведать. Но сначала нужно дойти до победного конца.
-
Barbanel отреагировална dnekrasov в TAlphaTrackBar - Настройка цвета.
Примерно так:
var cl: TAlphaColor; begin cl := Rectangle1.Fill.Color; TAlphaColorRec(cl).A := Round(AlphaTrackBar1.Value * 255); Rectangle1.Fill.Color := cl; end;
-
Barbanel получил реакцию от Anatoliy в Поиск по базе через SearchBox
Есть мнение что Live Binding работает не всегда корректно. Выкиньте его к чертям и сделайте по людски.
select * from your_table where FAM like %Edit1.Text% -
Barbanel получил реакцию от Anatoliy в [IOS]TVertScrollBox прыгает вверх
Хм, такого быть не должно.
Можете кинуть нам тестовый пример с этой проблемой?
-
Barbanel получил реакцию от Anatoliy в Image в рамке TRectangle
У круга это 100% не работает, проверял. Отсекает только по прямоугольной форме.
Полагаю что у Rectangle тоже.
-
Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете
Да нет. Это вполне серьёзно. Это настройка и особенность винды и Delphi тут ни при чём. Так что для отладки используйте способ, описанный мною чуть выше. Без перелогина после изменения масштаба Вы ничего не увидите. Заранее сочувствую - я помню как сам намучался, когда отлаживал подобное.
-
Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете
Да. После изменения масштаба отображаться начинает вроде нормально, даже без перезагрузки приложения, а вот многие API-шные функции, относящиеся к работе с масштабом возвращают старые значения.
-
Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете
Это олдскул. Есть FMX.Platform.IFMXScreenService.GetScreenScale, FMX.Helpers.Win.GetDCScale и FMX.Helpers.Win.GetWndScale
-
Barbanel получил реакцию от Равиль Зарипов (ZuBy) в Telega π - Библиотека для работы с Telegram Bot API в Delphi
Потому что слово "Type" - зарезервированное слово для объявления типов.
-
Barbanel отреагировална Shippo в альтернатива диалогу
да, указание полного пути к функции помогло! Совсем другой вид у диалога. И остается в фокусе при переходе между приложениями.
Большое спасибо.
(в списке юнитов присутствовал и FMX.Dialogs и Vcl.Dialogs. видимо VCL перебивал FMX, я к сожалению этого не заметила)
-
Barbanel отреагировална krapotkin в альтернатива диалогу
ну наверное не стоит ожидать чтобы два разных фреймворка в одной программе хорошо сосуществовали
проверил. чудесно работает, нативно выглядит
FMX.Dialogs.SelectDirectory('Открыть папку','C:\',st); -
Barbanel отреагировална Alex7wrt в Исправление отображения Smart Banner, Android
Обнаружил, что на некоторых телефонах с вытянутым экраном не отображается Smart Banner (TBannerAD.Size = Auto). Оказалось, что причиной тому неверный расчет высоты баннера в исходниках FMX.Advertising.Android.
Может быть, эта информация кому-нибудь поможет
В документации Android высота баннера должна вычисляться так:
Тогда как в коде FMX.Advertising.Android она вычисляется в процедуре UpdateControlMetrics следующим образом:
const AdHeightPortrait = 90; AdHeightLandscape = 90; AdHeightPhonePortrait = 50; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then if Screen.Size.Width < AndroidSW600DP then FAdControl.Height := AdHeightPhonePortrait else FAdControl.Height := AdHeightPortrait else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; Также, учитывая, что на вытянутых экранах (по крайней мере на тех устройствах, на которых я тестил), Screen.Width и Screen.Height далеко не всегда дают верные значения, то более правильный код процедуры TAndroidBannerAd.UpdateControlMetrics будет таким:
procedure TAndroidBannerAd.UpdateControlMetrics; var Frame: TRectF; Form: TCommonCustomForm; Disp: JDisplayMetrics; Window: JWindow; h: integer; const AdHeightLandscape = 90; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin Disp := TJDisplayMetrics.Create; Window:=TJWindow.Wrap((MainActivity.getWindow as ILocalObject).GetObjectID); Window.getWindowManager.getDefaultDisplay.getRealMetrics(disp); h:=round(Disp.heightPixels/Disp.density); case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then begin if h <= 400 then FAdControl.Height := 32 else if (h>400) and (h<=720) then FAdControl.Height:=50 else FAdControl.Height := 90 end else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; TBannerAdSize.Small: FAdControl.Height := AdMobBannerHeight; TBannerAdSize.Medium: FAdControl.Height := AdMobFullBannerHeight; TBannerAdSize.Large: FAdControl.Height := AdMobLeaderboardHeight; end; if Screen.ActiveForm <> nil then Form := Screen.ActiveForm else if Application.MainForm <> nil then Form := Application.MainForm else Form := nil; if Form <> nil then begin Frame := WindowHandleToPlatform(Form.Handle).Bounds; FAdControl.Width := Round(Frame.Width); end; end; end;
-
Barbanel получил реакцию от x11 в Telega π - Библиотека для работы с Telegram Bot API в Delphi
Потому что слово "Type" - зарезервированное слово для объявления типов.
-
Barbanel отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi
https://www.native-english.ru/grammar/english-nouns-plural
https://core.telegram.org/bots/api#getting-updates
-
Barbanel отреагировална CyberStorm в Рабочее место для IOS разработки
Нашел в закромах материнку с сокетом 1155, и селероном 1610, откопал какойто-то системник и моник, и поставил туда хакинтош. Ставил две недели (с момента создания темы), разобрался наверное во всех особенностях и различных загрузчиках - типа хамелеона и кловера, подключение кекстов и прочей дребедени ?В итоге поставил Сиерру, установил Xcode - а он бац и говорит что нужна более новая версия MacOS ☹️
Еще неделю потратил на установку Mojave (хотел подружить винду и макОС на одном винте - но в итоге сдался), вроде все работает, настроил связь с дельфями по известным статьям с хабра, запускается симулятор - но к сожалению сразу приложение вылетает - пока не разобрался в чем дело. Так же Delphi видит подключенный телефон iPhone 5S, но в отличии от устройств андроид, на нем нельзя сразу запускать приложения (на хабре пишут что нужно сразу покупать сертификат разработчика, но вроде можно и без него).
В общем хакинтош - тоже выход. Оказывается хакинтошников много, и есть куча людей которые за пару сотен помогут вам установить мак на любое железо.
Так же оказывается что МакОС - это прям таки очень крутая и удобная система для повседневного пользования.
-
Barbanel отреагировална Евгений Корепов в Реализовать рейтинг
Вместо рисования звезды в TPath, проще использовать соотвествующий символ юникода.
Char($2606) // Не закрашенная звезда
Char($2605) // Закрашенная звезда
https://unicode-table.com/ru/sets/stars-symbols/
Можно даже для еврейский магазинов сделать рейтинг ?
-
Barbanel отреагировална kami в Telega π - Библиотека для работы с Telegram Bot API в Delphi
У меня большая просьба: вместо кучи маленьких сообщений, которые вы пишете буквально одно за другим, составьте одно, в которое напишите всё то, что хотели сказать.
Это не чат, где "кто в онлайне - прочитали, остальным пофиг". Это форум. И искать зерна истины в этой портянке из мимолетных мыслей как минимум неудобно.
-
Barbanel получил реакцию от Anatoliy в Размеры формы на разных устройствах
Этот код был на этом форуме. Смотрите переменную sScale
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;
Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
PS. не обращайте внимания на язык, так задумано)
приложение делается для школ Германии.
Screens.zip
-
Barbanel получил реакцию от #WAMACO в Размеры формы на разных устройствах
Этот код был на этом форуме. Смотрите переменную sScale
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;
Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
PS. не обращайте внимания на язык, так задумано)
приложение делается для школ Германии.
Screens.zip
-
Barbanel получил реакцию от Tumaso в Размеры формы на разных устройствах
Этот код был на этом форуме. Смотрите переменную sScale
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;
Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
PS. не обращайте внимания на язык, так задумано)
приложение делается для школ Германии.
Screens.zip
-
Barbanel отреагировална Alex7wrt в Размеры формы на разных устройствах
var ScreenService: IFMXScreenService; scale: single; begin if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then scale:=ScreenService.GetScreenScale; end;
Эту фишку придумали не разработчики FireMonkey. Коэффициент масштаба экрана используется и в iOS, и в Android. Введен он для более удобного перевода ПО под новые экраны.
Смысл в том, что оперируя тем же логическим размером экрана, ПО автоматически отрисовывает изображение на другом физическом разрешении.
-
Barbanel получил реакцию от Alex7wrt в Размеры формы на разных устройствах
Этот код был на этом форуме. Смотрите переменную sScale
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;
Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
PS. не обращайте внимания на язык, так задумано)
приложение делается для школ Германии.
Screens.zip
-
Barbanel получил реакцию от Alex7wrt в Размеры формы на разных устройствах
Это происходит из-за масштабирования.
В вашем случае, коэффициент масштабирования равен 1.5
По ширине если перемножить 320 на 1.5 как раз получится паспортные 480.
По высоте должно тоже получиться, но у вас скорее всего форма не на полный экран, поэтому сжирается честь места сверху для статусбара и снизу для кнопок назад, домой, и список приложений.
Мне доводилось работать с устройствами на которых были такие коэффициенты
1.5 - древнющий беспонтовый ACER, разрешение экрана не помню
2.0 - ветеран Nexus 4, разрешение 1280х720
3.0 - Huawei p8 lite 2007, разрешение 1920х1080
Со всеми этими устройствами дельфи работает без проблем, масштабирование не приносит сколь-нибудь значимых проблем.
Расскажите, с какой целью?