Перейти к содержанию
Fire Monkey от А до Я
  1. Общие вопросы

    1. 557
      постов
    2. 1,5т
      постов
    3. 949
      постов
    4. Базы данных и REST

      Работа с базами данных и с REST из FireMonkey

      1,7т
      постов
    5. 10,5т
      пост
    6. Положение, размеры, выравнивание

      Положение контролов, размеры, способы выравнивания, абсолютные, локальные и экранные координаты

      476
      постов
    7. Работа с текстом

      Текстовые настройки, шрифты, отображение

      436
      постов
    8. Приложение и формы

      Настройки приложения и работа с формами

      1,4т
      постов
    9. Отладка

      Вопросы отладки и логирования delphi приложений. Поиск ошибок.

      579
      постов
    10. Развертывание приложений

      Deployment Manager, копирование своих файлов на устройство при установке приложения, подготовка к публикации, распространение.

      688
      постов
    11. 1,1т
      постов
    12. Общая информация о TControl

      Общая информация о TControl, на основе которого строятся все остальные визуальные компоненты FireMonkey

      77
      постов
    13. 319
      постов
    14. Прочие вопросы

      Если нет соответствующего раздела форума, то сюда публикуем свой вопрос, затем тема перейдет в нужный раздел форума.

      3,3т
      постов
  2. Вопросы по платформам

    1. 7,2т
      постов
    2. 1,8т
      постов
    3. OSX

      200
      постов
    4. 721
      пост
    5. 6
      постов
    6. 106
      постов
  3. Вопросы по использованию RAD Studio

    1. Лицензирование

      Вопросы связанные с редакциями RAD Studio и лицензированием

      157
      постов
    2. 135
      постов
    3. 44
      поста
    4. 27
      постов
    5. 330
      постов
  4. Обучение

    1. 39
      постов
    2. 155
      постов
      • Сообщений пока нет
  5. Поиск специалистов по FireMonkey

    1. Консультации

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

      618
      постов
    2. Ищу подрядчика

      В этом разделе заказчики ищут подрядчиков для разовых/проектных работ на FireMonkey

      180
      постов
  6. Дополнительные ресурсы по FireMonkey

    1. Сторонние компоненты

      Раздел для публикации существующих компонентов для FireMonkey

      892
      поста
    2. Приложения, написанные с использованием FireMonkey

      Подборка ссылок на приложения, написанные с использование FireMonkey и RAD Studio

      343
      поста
    3. Примеры

      Подборка ссылок на официальные примеры

      9
      постов
    4. Руководства

      Книги, брошюры по FireMonkey

      69
      постов
    5. Шаблоны

      Шаблонные проекты

      166
      постов
    6. Статьи и заметки

      Публикация ссылок на интересные стать о Delphi и FireMonkey. Каждый пользователь может поделиться здесь своими ссылками.

      408
      постов
    7. Информация о версиях RAD Studio

      Информация о новых возможностях, появившихся в каждый версиях RAD Studio. А так же исправлениях и улучшениях

      812
      поста
    8. 567
      постов
  7. Организация работы данного форума

    1. 1
      пост
    2. Нарушения правил форума

      Сюда попадают темы, не отвечающие правилам форума

      23
      поста
    3. 147
      постов
    4. 103
      поста
    5. Функции форума

      Инструкции по использованию функций форума и оповещение о новых функциях

      19
      постов
  • Статистика пользователей

    5 794
    Пользователей
    1 611
    Максимум онлайн
    integracia
    Новый пользователь
    integracia
    Регистрация
  • Кто в онлайне   1 пользователь, 0 анонимных, 19 гостей (Посмотреть всех)

  • Последние сообщения

    • В FDQuery выполняется запрос SELECT ROWID, preport_svodod_kv.get_schiv_name(REESTR_CODE) SCHIV_NAME, preport_svodod_kv.get_reestr_name(REESTR_CODE) REESTR_NAME, preport_svodod_kv.get_razrez_name(RAZREZ_CODE) RAZREZ_NAME, preport_svodod_kv.get_user_name(USER_ID_OR) USER_NAME_OR, k.* from MBANK.KVIT_SVOD_OD2 k where WORK_DATE = to_date('02.09.2024', 'dd.mm.yyyy')    and LENTA_ID = '401268*БЕЗРАЗ*2005327356'    and (1 = 0 or (1 = 1 and FOND > 0) or (1 = 2 and FOND = 0))    and ('00' = '00' or '00' = preport_svodod_kv.get_schiv_code(REESTR_CODE)) order by REESTR_NAME, REESTR_CODE В результатирующем наборе поля SCHIV_NAME, REESTR_NAME, RAZREZ_NAME, USER_NAME_OR вычисляемые, но FireDac их видит как основные. Почему такое происходит и как это исправить? Проблема в том что потом делается FDQuery1.Edit FDQuery1.Post И нужно чтобы эти поля в update не попадали
    • Еще, может имеет значение - прога развивалась из примера ForegroundLocationDemo. Ну и с манифестом что-то делал помню, а что - не помню))) Манифест в итоге: <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.Cont"     android:versionCode="1"     android:versionName="2.4.8"     android:installLocation="auto">     <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="32" />     <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />     <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />     <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />     <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />     <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />     <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />     <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />     <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />     <uses-permission android:name="android.permission.CALL_PHONE" />     <uses-permission android:name="android.permission.CAMERA" />     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />     <uses-permission android:name="android.permission.READ_PHONE_STATE" />     <uses-permission android:name="android.permission.RECORD_AUDIO" />     <uses-permission android:name="android.permission.VIBRATE" />     <uses-permission android:name="android.permission.WAKE_LOCK" />     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />          <uses-permission android:name="android.permission.READ_SETTINGS" />     <uses-permission android:name="android.permission.WRITE_SETTINGS" />     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />              <uses-feature android:glEsVersion="0x00020000" android:required="true"/>     <queries>     </queries>     <application         android:persistent="False"         android:restoreAnyVersion="False"         android:label="Cont"         android:debuggable="true"         android:largeHeap="False"         android:icon="@drawable/ic_launcher"         android:theme="@style/AppTheme"         android:hardwareAccelerated="true"         android:resizeableActivity="true"         android:requestLegacyExternalStorage="true"         android:forceDarkAllowed="true">         <provider             android:name="androidx.core.content.FileProvider"             android:authorities="com.Cont.fileprovider"             android:exported="false"             android:grantUriPermissions="true">             <meta-data                 android:name="android.support.FILE_PROVIDER_PATHS"                 android:resource="@xml/provider_paths" />         </provider> <service android:name="com.embarcadero.services.ContService" android:exported="false" />         <!-- Our activity is a subclass of the built-in NativeActivity framework class.              This will take care of integrating with our NDK code. -->         <activity             android:name="com.embarcadero.firemonkey.FMXNativeActivity"             android:exported="true"             android:label="Cont"             android:configChanges="orientation|keyboard|keyboardHidden|screenSize"             android:resizeableActivity="false"             android:launchMode="singleTask">             <!-- Tell NativeActivity the name of our .so -->             <meta-data android:name="android.app.lib_name" android:value="Cont" />                         <meta-data android:name="android.max_aspect" android:value="2.4" />                         <intent-filter>                 <action android:name="android.intent.action.MAIN" />                                 <category android:name="android.intent.category.LAUNCHER" />                 <category android:name="android.intent.category.HOME" />                 <category android:name="android.intent.category.DEFAULT" />                             </intent-filter>         </activity>                               <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />     </application> </manifest> <!-- END_INCLUDE(manifest) -->   Манифест в проекте: <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="%package%"     android:versionCode="%versionCode%"     android:versionName="%versionName%"     android:installLocation="%installLocation%">     <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%>     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />          <uses-permission android:name="android.permission.READ_SETTINGS" />     <uses-permission android:name="android.permission.WRITE_SETTINGS" />     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />              <uses-feature android:glEsVersion="0x00020000" android:required="true"/>     <queries> <%queries-child-elements%>     </queries>     <application         android:persistent="%persistent%"         android:restoreAnyVersion="%restoreAnyVersion%"         android:label="%label%"         android:debuggable="%debuggable%"         android:largeHeap="%largeHeap%"         android:icon="%icon%"         android:theme="%theme%"         android:hardwareAccelerated="%hardwareAccelerated%"         android:resizeableActivity="true"         android:requestLegacyExternalStorage="true"         android:forceDarkAllowed="true"> <%provider%> <%application-meta-data%> <%uses-libraries%> <%services%>         <!-- Our activity is a subclass of the built-in NativeActivity framework class.              This will take care of integrating with our NDK code. -->         <activity             android:name="com.embarcadero.firemonkey.FMXNativeActivity"             android:exported="true"             android:label="%activityLabel%"             android:configChanges="orientation|keyboard|keyboardHidden|screenSize"             android:resizeableActivity="false"             android:launchMode="singleTask">             <!-- Tell NativeActivity the name of our .so -->             <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" />                         <meta-data android:name="android.max_aspect" android:value="2.4" />                         <intent-filter>                 <action android:name="android.intent.action.MAIN" />                                 <category android:name="android.intent.category.LAUNCHER" />                 <category android:name="android.intent.category.HOME" />                 <category android:name="android.intent.category.DEFAULT" />                             </intent-filter>         </activity>                       <%activity%> <%receivers%>     </application> </manifest> <!-- END_INCLUDE(manifest) -->  
    • Причем по логу (на всю ночь оставил) все нормально всю ночь работало в фоне и вылет только когда заново разблокируется устройство.
    • Да CallInUIThread это уже не надо FLAG_TURN_SCREEN_ON это используется FLAG_SHOW_WHEN_LOCKED это устарело, но попробую Activity.setShowWhenLocked(boolean)  
    • Доброго ...! В своей программе, на сколько помню, с подобным боролся когда-то... Не знаю, от этого зависит или нет, но вот код у меня такой: В MainForm.Create код:   var ApplicationEventService: IFMXApplicationEventService;   if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, ApplicationEventService) then     ApplicationEventService.SetApplicationEventHandler(HandleApplicationEvent);   vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or             TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or             TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or             TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;   aEnable := true;   if aEnable then   begin     CallInUIThread(       procedure       begin         TAndroidHelper.Activity.getWindow.setFlags(vFlags, vFlags);       end);   end   else     CallInUIThread(       procedure       begin         TAndroidHelper.Activity.getWindow.clearFlags(vFlags);       end);   Функция HandleApplicationEvent: function TMainForm.HandleApplicationEvent(ApplicationEvent: TApplicationEvent; Context: TObject): Boolean; begin   case ApplicationEvent of     TApplicationEvent.WillBecomeInactive:     begin       TAndroidHelper.Activity.getWindow().addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD                                                 or TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED                                                 or TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN                                                 or TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_IN_SCREEN                                                 );     end;   else     Result := False;   end end; Флаги может не все нужны, а может и код вообще не о том - давно было)...
    • Здравствуйте, форумчане. Есть большая проблема. У меня лаунчер для андроид магнитол, написанный на delphi 11. Все отлично работает, до ухода магнитолы в сон, логирование настроено, все уже в try except (log)end, плюс onExeption (log), но ошибок ни каких в логе нет просто при выходе из сна оно начинает грузится заново. Сделал wakeLock, проблема не ушла. Оптимизация батареи через powermanager также отключена. Куда копать?
    • Первое: да здравствуют некропостеры ))) Второе: погугли приложение для Android Winlator, удивишься)))
    • Парень, просто интересно - получилось с делфи на андрюше?))))) В 2024-м это выглядит как стартап))))
    • СпасиБО. Это работает на Win 10. Пожалуйста напишите то же для Win 7. С Уважением.
    • Через реестр ищите мониторы по пути Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY Далее ищите в мониторе EDID Далее парсите EDID structure, version 1.4 https://en.wikipedia.org/wiki/Extended_Display_Identification_Data unit Unit3; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, FMX.ListBox, FMX.Controls.Presentation, FMX.StdCtrls, Winapi.Windows, Registry; type TForm3 = class(TForm) lst1: TListBox; btn1: TButton; function GetAllMonitorName : TStringList; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.fmx} procedure TForm3.btn1Click(Sender: TObject); var monitors: TStringList; I: Integer; begin monitors := GetAllMonitorName; lst1.BeginUpdate; for I := 0 to monitors.Count - 1 do begin lst1.Items.Add(monitors.Strings[i]); end; lst1.EndUpdate; end; function TForm3.GetAllMonitorName: TStringList; const Key = '\SYSTEM\CurrentControlSet\Enum\DISPLAY\'; type IBMString = type Ansistring(1253); var Registry: TRegistry; H, i, j, k : Integer; MonitorName : IBMString; EDID : array [0 .. 127] of Byte; subKeysNames, subKeys : TStringList; begin Result := TStringList.Create; subKeys := TStringList.Create; subKeysNames := TStringList.Create; Registry := TRegistry.Create(KEY_READ); Registry.RootKey := HKEY_LOCAL_MACHINE; try try Registry.OpenKeyReadOnly(Key); Registry.GetKeyNames(subKeysNames); finally Registry.CloseKey; end; for h := 0 to subKeysNames.Count - 1 do begin try Registry.OpenKeyReadOnly(Key + subKeysNames[h]); Registry.GetKeyNames(subKeys); finally Registry.CloseKey; end; for i := 0 to subKeys.Count - 1 do begin try if registry.OpenKeyReadOnly(Key + subKeysNames[h] + '\' + subKeys[i]) then begin if registry.OpenKeyReadOnly(Key + subKeysNames[h] + '\' + subKeys[i] + '\' + 'Device Parameters') then begin Registry.ReadBinaryData('EDID', EDID, 128); Registry.CloseKey; end; MonitorName := ''; for j := 0 to 3 do begin if (EDID[54 + 18 * j] = 0) and (EDID[55 + 18 * j] = 0) and (EDID[56 + 18 * j] = 0) and (EDID[57 + 18 * j] = $FC) and (EDID[58 + 18 * j] = 0) then begin k := 0; while (EDID[59 + 18 * j + k] <> $A) and (k < 13) do Inc(k); SetString(MonitorName, PAnsiChar(@EDID[59 + 18 * j]), k); Break; end; end; Result.Add(MonitorName); end; finally Registry.CloseKey; end; end; end; finally subKeys.Free; Registry.Free; subKeysNames.Free; end; end; end.  
  • Последние темы

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