-
Постов
23 -
Зарегистрирован
-
Победитель дней
3
Активность репутации
-
Andrew получил реакцию от A_l_ex в И снова про ориентацию экрана. Запрет поворота экрана.
var ScreenService: IFMXScreenService; begin ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end; -
Andrew получил реакцию от hippocamus в Расчет высоты объекта на основе высоты TLabel
При работе с Listbox мне приходится использовать RecalcSize. Вообще, для лучшего понимания проблемы вы лучше нарисуйте что хотели бы видеть и что реально получаете.
-
Andrew получил реакцию от Alex7wrt в Выбор представления (View)
Для Android вычисляйте диагональ сами:
===================================
Diagonal_in_Inch:= Sqrt(Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Width) + Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Height)) / DeviceMetricsService.GetDisplayMetrics.PixelsPerInch;
-
Andrew отреагировална Brovin Yaroslav в Как вычислить размер текста?
Нужно использовать TTextLayout для этого. Это будет быстрее, чем создавать TText, TLabel, которые по сути в конечном итоге используют тот же TTextLayout.
В приведенном ниже коде, нужно правильно задать требуемые настройки текста: шрифт, переносы, выравнивание и тд.
uses FMX.TextLayout; {$R *.fmx} procedure TForm3.Button1Click(Sender: TObject); var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(Width, 1000); TextLayout.WordWrap := WordWrap; TextLayout.Font := Font; TextLayout.HorizontalAlign := TextAlign; TextLayout.VerticalAlign := VertTextAlign; finally TextLayout.EndUpdate; end; // TextLayout.TextRect; <- Здесь будет размер текста finally TextLayout.Free; end; end; Когда получите размер текста в TEdit, не забудьте, что нужно учесть размер рамки эдита и возможное наличие кнопок, что корректно задать ширину.
Обновлять ширину надо в события OnChange и OnChangeTrtacking, в зависимости от требуемой вам ситуации.
-
Andrew отреагировална asviridenkov в Внутренние гиперссылки
THtPanel/THtLabel
http://delphihtmlcomponents.com/
-
Andrew получил реакцию от zairkz в Пролистывание пальцем TabControl
Пока в Delphi нет такой нужной компоненты как ViewPager: http://developer.android.com/training/animation/screen-slide.html
-
Andrew получил реакцию от Pax Beach в Сглаживание у TImage
У TImage есть свойство DisableInterpolation
=====================================
Image1.DisableInterpolation:= False;
-
Andrew отреагировална Brovin Yaroslav в Описание TfgToast - Быстрые уведомления
Описание:
Назначение: Быстрые уведомления, появляющиеся в нижней части экрана, предназначенные для отображения короткой текстовой информации и опционно изображения Поддерживаемые платформы: Android, iOS Демо проект: Samples\ToastsDemo\ToastsDemo.dproj Доступен с версии: RX (R100) Возможности:
Несколько быстрых способов отображения уведомления: TfgToast.Show(Message) - только текст TfgToast.Show(Message, Icon) - текст и картинка TfgToast.Show(Message, Duration) текст + настройка длительности отображения TfgToast.Show(Message, Duration, Icon) - текст + картинка + длительность отображения Доступно редактирование цвета заднего фона (TfgToast.BackgroundColor) Доступно редактирование цвета сообщения (TfgToast.MessageColor). Возможность добавить к сообщению иконку (TfgToast.Icon) Доступно редактирование длительности отображения уведомления (TfgToast.Duration) Возможность менять глобальные параметры отображения всех тостов в рамках приложения (TfgToast.DefaultBackgroundColor, TfgToast.DefaultMessageColor и TfgToast.DefaultPadding) Примеры вызова:
// Быстрое отображение, только текст TfgToast.Show('Message'); // Быстрое отображение, текст + картинка TfgToast.Show('Message', Bitmap); // Настраиваемое отображение var Toast: TfgToast; begin Toast := TfgToast.Create(EditToastMessage.Text, TfgToastDuration(ComboBoxDurationType.ItemIndex)); try if SwitchShowIcon.IsChecked then Toast.Icon.Assign(Image1.Bitmap); Toast.MessageColor := ColorComboBoxMessage.Color; Toast.BackgroundColor := ColorComboBoxBackground.Color; Toast.Show; finally Toast.Free; end; end; Скриншоты:
-
Andrew отреагировална Brovin Yaroslav в Шрифт с обводкой
Есть в стилевых объектах специальный объект с тенью. Он называется: TStyleTextObject. Он не использует эффект тени, а делает это при помощи двойной отрисовки текста. По умолчанию он не доступен на панели инструментов, но его можно добавить установив библиотеку FGX.
-
Andrew получил реакцию от Равиль Зарипов (ZuBy) в И снова про ориентацию экрана. Запрет поворота экрана.
var ScreenService: IFMXScreenService; begin ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end; -
Andrew получил реакцию от Rusland в Смещается заголовок формы на Android Intel
Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах.
При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно:
Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки:
===============
APP_CMD_CONFIG_CHANGED:
begin
FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!!
FOrientationMightHaveChanged := True;
Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged);
end;
===============
и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4;
После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung.
Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
-
Andrew получил реакцию от Brovin Yaroslav в И снова про ориентацию экрана. Запрет поворота экрана.
var ScreenService: IFMXScreenService; begin ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end; -
Andrew получил реакцию от Rusland в И снова про ориентацию экрана. Запрет поворота экрана.
var ScreenService: IFMXScreenService; begin ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end; -
Andrew отреагировална Равиль Зарипов (ZuBy) в Координаты текущего местоположения на MapView
ага, действительно. в коде указано что берется позиции камеры
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.GetCameraPosition; end); а нужно указать
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.getMyLocation; end); хорошо было бы добавить это как еще одно свойство, но пока нет времени этим заниматься
-
Andrew получил реакцию от zairkz в Смещается заголовок формы на Android Intel
Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах.
При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно:
Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки:
===============
APP_CMD_CONFIG_CHANGED:
begin
FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!!
FOrientationMightHaveChanged := True;
Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged);
end;
===============
и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4;
После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung.
Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
-
Andrew получил реакцию от krapotkin в Смещается заголовок формы на Android Intel
Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах.
При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно:
Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки:
===============
APP_CMD_CONFIG_CHANGED:
begin
FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!!
FOrientationMightHaveChanged := True;
Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged);
end;
===============
и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4;
После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung.
Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
-
Andrew получил реакцию от Вячеслав в Смещается заголовок формы на Android Intel
Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах.
При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно:
Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки:
===============
APP_CMD_CONFIG_CHANGED:
begin
FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!!
FOrientationMightHaveChanged := True;
Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged);
end;
===============
и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4;
После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung.
Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
-
Andrew получил реакцию от Равиль Зарипов (ZuBy) в Смещается заголовок формы на Android Intel
Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах.
При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно:
Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки:
===============
APP_CMD_CONFIG_CHANGED:
begin
FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!!
FOrientationMightHaveChanged := True;
Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged);
end;
===============
и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4;
После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung.
Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
-
Andrew отреагировална Brovin Yaroslav в [Android] Как отключить программную кнопку Меню?
Чтобы при повороте приложение не вылетало на версиях среды до XE8 включительно дополнительно нужно добавить значение screenSize для атрибута android:configChanges в манифест. Так как 14 версия требует обязательного наличия этого значения.
Начиная с XE10 правок вносить не надо.
Было:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden" android:launchMode="singleTask"> Стало:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> -
Andrew отреагировална Brovin Yaroslav в Доступ из FMX к веб-камерам
По умолчанию такого кода нету в FireMonkey. Но вы можете самостоятельно реализовать TVideoCaptureDevice, который будет получать TBitmap с любого интересующего вас источника видеосигнала.
-
Andrew получил реакцию от xenon54 в Как узнать сколько пикселей в 1 см?
Для iOS плотность так просто не получите. В файле FMX.Platform.iOS.pas зачем-то тупо умножается ScreenScale на базовую плотность 163 PPI и в итоге получите полную чепуху. См. там функцию function TPlatformCocoaTouch.GetDisplayMetrics: TDeviceDisplayMetrics.
Поэтому выходом может служить получение кода модели устройства с помощью SysCtlByName. Например, для iPhone 6+ получите код "iPhone7,2", а для iPad Air2 - "iPad5,3". Затем составьте список PPI для каждого устройства с помощью таблицы https://en.wikipedia.org/wiki/List_of_iOS_devices. См. там данные в строках "Hardware strings" и "Display". Конечно, придется следить за появлением новых устройств.
-
Andrew получил реакцию от Brovin Yaroslav в Как узнать сколько пикселей в 1 см?
Для iOS плотность так просто не получите. В файле FMX.Platform.iOS.pas зачем-то тупо умножается ScreenScale на базовую плотность 163 PPI и в итоге получите полную чепуху. См. там функцию function TPlatformCocoaTouch.GetDisplayMetrics: TDeviceDisplayMetrics.
Поэтому выходом может служить получение кода модели устройства с помощью SysCtlByName. Например, для iPhone 6+ получите код "iPhone7,2", а для iPad Air2 - "iPad5,3". Затем составьте список PPI для каждого устройства с помощью таблицы https://en.wikipedia.org/wiki/List_of_iOS_devices. См. там данные в строках "Hardware strings" и "Display". Конечно, придется следить за появлением новых устройств.
-
Andrew отреагировална Brovin Yaroslav в Как определить, какая канва сейчас используется в FireMonkey?
После запуска приложения. В любом месте на форме запрашиваем класс канвы:
Canvas.ClassName Далее по классу определяем канву:
TCanvasD2D - Direct 2D (Win) TCanvasGdiPlus - GDI + (Win) TCanvasGpu - GPU (Все платормы) TCanvasQuartz - Quartz (iOS, OSX) -
Andrew отреагировална Brovin Yaroslav в [TWebBrowser] [iOS] Открытие прикрепленной html страницы в TWebBrowser
Добрый день,
Прикрепляю проект, где все загружается корректно (iOS Simulator). WebBrowserLoadLocalFile.zip
Внимательно проверьте место назначения развертывания файла и факт того, что он задеплоился:
Обязательно слэш в конце: "Startup\Documents\" Строка с файлом в Deployment Manager не должна быть серой!
Загрузка идет таким способом:
uses System.IOUtils; procedure TForm15.FormCreate(Sender: TObject); begin WebBrowser1.URL := 'file:/' + TPath.Combine(TPath.GetDocumentsPath, 'DemoPage.html'); end; P.S. Сделано все по руководству Включение своих файлов в приложение
-
Andrew получил реакцию от Martifan в Обновление Update1 Delphi XE8
Поговорив с сотрудником Embarcadero, приобрел Update Subscription. Теперь все в порядке. Просто им нужно научиться доносить информацию до своих клиентов и поставлять Allsoft.ru полный прайс-лист.