Перейти к содержанию
Fire Monkey от А до Я

Лидеры

  1. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      10

    • Постов

      2 517


  2. krapotkin

    krapotkin

    Пользователи


    • Баллы

      5

    • Постов

      2 185


  3. ENERGY

    ENERGY

    Пользователи


    • Баллы

      4

    • Постов

      568


  4. Дмитрий Ш.

    Дмитрий Ш.

    Пользователи


    • Баллы

      3

    • Постов

      31


Популярный контент

Показан контент с высокой репутацией 09.03.2017 во всех областях

  1. по пушам на MIUI лучше почитать на 4pda.ru/ все описано и с картинками )
    3 балла
  2. Kitty,а вы попробуйте переустановить свое приложение.Удалить и заново поставить.Получите +1 к пушам. Было 3,станет 4.Больше переустановок,больше пушей. Когда работал с Kinvey была такая же история.В блогах на Embarcadero обсуждали даже.Если в кратце и по памяти,то при переустановке приложения,в Kinvey дублируется запись устройства на которое отправляется push.Что бы избежать этого,надо делать доп проверку на уже существующий токен для данного устройства.Повторюсь что это по памяти,но суть понятна.Можете поискать в блогах Sarina Dupont на Embarcadero. Собственно после этого я и перешел на нативные пуши. Потому как написал многоуважаемый ZuBy: Вот,нашел: https://community.embarcadero.com/blogs/entry/remote-push-notifications-on-android-with-rad-studio-xe6-795 Второй коммент. 15 раз установил,15 пушей.
    3 балла
  3. дополню нужно в OnKeyUp главной формы (не первой) обработать vkHardwareBack и сделать Application.Terminate; чтобы при кнопке Назад, не вернуться на форму загрузки (первую форму)
    3 балла
  4. krapotkin

    Форма загрузки

    первая форма - это главная форма приложения только по архитектуре, а совсем не по смыслу поэтому смело делайте первую форму проще некуда и как только загрузится, сразу можно идти с нее на логин, на основную форму, на регистрацию, рекламу показать, куда угодно....
    3 балла
  5. krapotkin

    Recevive push notifications

    конечно, в момент старта приложения происходит подписка на получение пушей. но думаю не 4-5 секунд
    2 балла
  6. Если приложение выгружено, то пуши в шторку доставляет гуглосервис.
    2 балла
  7. Rusland

    Создать БД с помощью SQLite

    Для работы с Sqlite можете использовать компоненты FireDAC http://docwiki.embarcadero.com/CodeExamples/Berlin/en/FireDAC.SQLite_Sample
    2 балла
  8. Вот так напрямую в память: function ShellExecuteMy(CommandLine: string; AWorkDir: string = 'C:\') : String; var SA: TSecurityAttributes; SI: TStartupInfo; PI: TProcessInformation; StdOutPipeRead, StdOutPipeWrite: THandle; WasOK: Boolean; Buffer: array[0..255] of AnsiChar; BytesRead: Cardinal; WorkDir: string; Handle: Boolean; AOutputLine : String; begin with SA do begin nLength := SizeOf(SA); bInheritHandle := True; lpSecurityDescriptor := nil; end; CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0); try with SI do begin FillChar(SI, SizeOf(SI), 0); cb := SizeOf(SI); dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; wShowWindow := SW_HIDE; // wShowWindow := SW_MINIMIZE; // wShowWindow := SW_NORMAL; hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin hStdOutput := StdOutPipeWrite; hStdError := StdOutPipeWrite; end; WorkDir := AWorkDir; // Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine), Handle := CreateProcess(nil, PChar(CommandLine), nil, nil, True, 0, nil, PChar(WorkDir), SI, PI); // Result:=PI; CloseHandle(StdOutPipeWrite); finally CloseHandle(StdOutPipeRead); end; if Handle then try repeat // WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil); WasOK := ReadFile(StdOutPipeRead, Buffer, 50, BytesRead, nil); if BytesRead > 0 then begin Buffer[BytesRead] := #0; AOutputLine:=StrOemToAnsi(Buffer); Result :=Result + AOutputLine; end; until not WasOK or (BytesRead = 0); WaitForSingleObject(PI.hProcess, INFINITE); finally CloseHandle(PI.hThread); CloseHandle(PI.hProcess); end; finally CloseHandle(StdOutPipeRead); end; end; Функция читает пайп вывода и помещает в строку. P.S. uses Winapi.Windows;
    2 балла
  9. Раньше точно можно было, если указаны отличия в названии приложений и владельцем приложений является один аккаунт, которым в свою очередь управляет представитель компании (в данном случае медицинского центра) или уполномоченный компанией человек. Тут больше вопрос в авторском праве, если приложение не ваше, а вы скопировали чужой логотип и т.п. то можно нарваться на блокировку за нарушение авторских прав.
    1 балл
  10. Поменяйте цвет этих иконок. В любой редакторе можно сдвинуть HUE (я обычно использую Axialis Icon Workshop и Photoimpact) - смещение цветов. И вам будет удобно, и не должны отказать. Можно также поискать Online Image\photo editor - но они как правило очень бедные по функционалу, и там может не быть изменения HUE.
    1 балл
  11. Embarcadero Weekly Round-up 8 Products | Free Tools | Events WEEKLY ROUND-UP FOR DEVELOPERS We continue to improve RAD Studio, Delphi, and C++Builder with one central goal in mind: helping you build cross-platform Native Apps faster than ever before and delivering them to the largest audience possible with ease. InterBase 2017 – Now Available InterBase 2017 delivers the fastest version of InterBase yet with new language features, server wide performance monitoring and enhanced transaction handling. Read More! Download InterBase 2017 Now The trial and developer editions of InterBase 2017 are available for free Download the Trial Version Download Free Developer Edition Build IoT enabled apps with RAD Studio ThingConnect IoT device components range from healthcare devices such as heartrate montiors, blood pressure monitors and scales to home automation gadgets like BLE light bulbs, Z-Wave enabled door locks, smart switches, smoke detectors and more. Read More! Webinar: External BeaconFence Mapping Editor Embarcadero’s BeaconFence technology utilizes its Beacon Fencing Map Editor from the RAD Studio IDE, but is not able to run outside of it. Woll2Woll has created an external mapping editor to create XML mapping files Written 100% with the FireMonkey library - Runs on Windows, iOS, Android, and OSX. Register Now! 16 March 2017 Delphi for Linux Boot Camp Replay Just in case you missed the fantastic Delphi for Linux Boot Camp by Craig Chapman last week, or you want to watch it again, here is the replay that includes Marco Cantu's Q&A at the end. Read More! Delphi for Linux RTL units This blog post from Marco Cantu focuses solely on the RTL units that are going to be available in Delphi for the Linux platform. Read More! Key Traits of the Coming Delphi For Linux Compiler In case you missed it: Here are some of the key technical elements of Embarcadero’s new Delphi compiler for the Linux platform. Read More! How to make a RESTful WebBroker app in C++Builder WebBroker (included in Professional edition and up) makes it easy to build a RESTful server. This article shows you how to server data from a database via a REST API with WebBroker and C++Builder. Register Now Просмотр полной статьи
    1 балл
  12. Обратите внимание на мой Broadсast Receiver, как мне кажется более удачный, адаптированный под Delphi XE 10+
    1 балл
  13. Мой вариант Broadcast Receiver, на мой взгляд наиболее оптимизирован и удачен. По сравнению с известным кодом от barisatalay . Отличия - исправлена утечка, чуть быстрее работает, за счет того что создается один фильтр в него добавляется несколько Actions и одна регистрация на него, нет лишних конвертирований с Jstring to string и обратно, адаптирован под Delphi 10 (JFMXBroadcastReceiver) , упрощена работа с классом (не нужно помнить о регистрации и вызывать ее заранее) , и самое главное - может получать getResultCode текущего ресивера (к примеру он нужен при получении статуса смс сообщения и в других случаях.). unit BroadcastReceiver; interface {$IFDEF ANDROID} uses Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText, Androidapi.helpers, Androidapi.JNIBridge, FMX.Helpers.Android, Androidapi.JNI.JavaTypes, System.Classes, System.SysUtils; type TBroadcastReceiver = class; TListener = class(TJavaLocal, JFMXBroadcastReceiverListener) private fOwner: TBroadcastReceiver; fReceiver: JFMXBroadcastReceiver; public constructor Create(aOwner: TBroadcastReceiver); destructor Destroy; override; procedure onReceive(context: JContext; intent: JIntent); cdecl; end; TOnReceive = procedure (aContext: JContext; aIntent: JIntent; aResultCode: integer) of object; TBroadcastReceiver = class private fListener : TListener; fRegistered: boolean; fOnReceive: TOnReceive; public constructor Create(aOnReceiveProc: TOnReceive); destructor Destroy; override; procedure AddActions(const Args: array of JString); procedure SendBroadcast(const aValue: string); end; {$ENDIF} implementation {$IFDEF ANDROID} { TBroadcastReceiver } constructor TBroadcastReceiver.Create(aOnReceiveProc: TOnReceive); begin inherited Create; fListener := TListener.Create(Self); fOnReceive := aOnReceiveProc; end; destructor TBroadcastReceiver.Destroy; begin fListener.Free; inherited; end; procedure TBroadcastReceiver.AddActions(const Args: array of JString); var vFilter: JIntentFilter; i: Integer; begin if fRegistered then TAndroidHelper.context.getApplicationContext.UnregisterReceiver(fListener.fReceiver); vFilter := TJIntentFilter.JavaClass.init; for i := 0 to High(Args) do vFilter.addAction(Args[i]); TAndroidHelper.context.getApplicationContext.registerReceiver(fListener.fReceiver, vFilter); fRegistered := true; end; procedure TBroadcastReceiver.SendBroadcast(const aValue: string); var Inx: JIntent; begin Inx := TJIntent.Create; Inx.setAction(StringToJString(aValue)); TAndroidHelper.Context.sendBroadcast(Inx); end; constructor TListener.Create(aOwner: TBroadcastReceiver); begin inherited Create; fOwner := aOwner; fReceiver := TJFMXBroadcastReceiver.JavaClass.init(Self); end; destructor TListener.Destroy; begin TAndroidHelper.context.getApplicationContext.unregisterReceiver(fReceiver); inherited; end; // usually android call it from "UI thread" - it's not main Delphi thread procedure TListener.onReceive(context: JContext; intent: JIntent); begin if Assigned(fOwner.fOnReceive) then fOwner.fOnReceive(Context, Intent, fReceiver.getResultCode); end; {$ENDIF} end. Как использовать // указывать нужно сразу все нужные вам Actions в Add через запятую, не по одной. fBroadcast := TBroadcastReceiver.Create(OnReceiveBroadcast); fBroadcast.AddActions([StringToJString(SENT_ACTION)]); << Custom action ------------- // или например сразу несколько Actions fBroadcast.AddActions([TJIntent.JavaClass.ACTION_SCREEN_OFF, TJIntent.JavaClass.ACTION_SCREEN_ON]);
    1 балл
  14. Равиль Зарипов (ZuBy)

    Пуш и андроид 6

    У меня андроид 6, опять же проблем нету. манифест правильно настроен?
    1 балл
  15. сколько пришло пушей от сервера столько и публикуется в шторку, отсебятину он не добавляет
    1 балл
  16. bigjorj

    Создать БД с помощью SQLite

    Например так: procedure CreateArhivTables(CreateDatabaseName: string); var TableToCreate: TFDQuery; begin TableToCreate := TFDQuery.Create(nil); TableToCreate.ConnectionName := CreateDatabaseName; try TableToCreate.SQL.Clear; TableToCreate.SQL.Add('create table if not exists Marks(' +' Mark text primary key, ' +' CheckData text);'); TableToCreate.ExecSQL; end;
    1 балл
  17. ENERGY

    Форма загрузки

    Project > View Source - и там можете менять очередность запуска форм, или вообще создать одну, а затем подгружать нужные, если их много. Так даже экономней. Установите форме Visible false. А затем когда нужно меняйте на true из формы загрузки.
    1 балл
  18. а в чем проблема если поставить её первой формой? Как вариант еще использовать фрейм где будет эта самая загрузка
    1 балл
  19. Remote Path неправильно заполнен, должно быть assets\internal
    1 балл
  20. эта старая версия, вот здесь сделал по другому
    1 балл
  21. Pax Beach

    Ошибка при сборке iOS

    Положу здесь видео, как сертификаты устанавливать
    1 балл
  22. Brovin Yaroslav

    Описание TfgRadioGroup

    Описание Назначение: Компонент предназначен для отображения группы TRadioButton и осуществления выбор. Поддерживает стилизацию. Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\RadioGroupDemo\RadioGroupDemo.dproj Возможности Стилизация через указание двух картинок отображающих голос и пустой голос Настройки отображения заголовка группы TfgRadiouGroup.TextOptions.TitleTextSettings Возможность выбрать настройки отображения заголовка группы из стиля TfgRadioGroup.TextOptions.StyledTitleTextSettings Настройки отображения текста TRadioGroup TfgRadiouGroup.TextOptions.ButtonTextSettings Возможность выбрать настройки отображения текста TRadioGroup из стиля TfgRadioGroup.TextOptions.StyledButtonTextSettings Текущий выбранный вариант TfgRadioGroup.ItemIndex Возможность разбить варианты на колонки TfgRadioGroup.AlignOptions.Columns Возможность указать отступы для вариантов по вертикале и горизонател TfgRadioGroup.AlignOptions.HorzSpace, TfgRadioGroup.AlignOptions.VertSpace Возможность узнать, когда пользователь делает выбор TfgRadioGroup.OnChanged
    1 балл
  23. AngryOwl

    Конфликт Hint и BorderStyle

    Ну вот! Я же говорил как-то - жаль нельзя поставить "Мне нравится" несколько раз! Кто-то тут плачется все время, "вдруг Delphi умрет" ... "Delphi уже мертв" ... "FMX не сегодня завтра умрет" ... Я программирую на Pascal с 91го года. Начинал c Turbo Pascal 5.0. И с тех пор мне пытаются втереть "погромизды" - что Pascal/Delphi давно умер ... Тоже самое касается среды RAD Studio. Так вот благодаря таким людям как Ярослав, Андрей, Равиль и многим многим другим, он не только не умер. Он еще и, в большинстве случаев!, даст форы многим другим языкам и IDE. Так-что еще раз спасибо за решение проблемы! (скажите мне - в каких средах или языках их (проблем) нет! ))))
    1 балл
  24. Вот нашел код для записи видео (проверил - работает): unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, Androidapi.JNI.GraphicsContentViewText, System.Messaging, // TMessageManager FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation; type TForm1 = class(TForm) BtnRecord: TButton; Label1: TLabel; procedure BtnRecordClick(Sender: TObject); private { Private declarations } procedure HandleActivityMessage(const Sender: TObject; const M: TMessage); function OnActivityResult(RequestCode, ResultCode: Integer; Data: JIntent): Boolean; public { Public declarations } FMessageSubscriptionID:integer; end; var Form1: TForm1; const RECORD_VIDEO = 9; implementation {$R *.fmx} uses System.IOUtils, Androidapi.JNI.Provider, Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNIBridge, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os; procedure TForm1.BtnRecordClick(Sender: TObject); var VideoIntent: JIntent; videoUri: Jnet_Uri; AFile: JFile; FileName: TFileName; begin FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage( TMessageResultNotification, HandleActivityMessage); VideoIntent := TJIntent.JavaClass.init( TJMediaStore.JavaClass.ACTION_VIDEO_CAPTURE ); if ( VideoIntent.resolveActivity( SharedActivityContext.getPackageManager() ) <> nil) then begin FileName := TPath.Combine( TPath.GetSharedDocumentsPath, 'recording.mp4'); // см. /storage/sdcard0/Documents AFile:=TJFile.JavaClass.init( StringToJString(FileName)); videoUri:=TJnet_Uri.JavaClass.fromFile(AFile); VideoIntent.putExtra( TJMediaStore.JavaClass.EXTRA_OUTPUT, TJParcelable.Wrap((videoUri as ILocalObject).GetObjectID)); SharedActivity.startActivityForResult(VideoIntent, RECORD_VIDEO); end; end; procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); begin if M is TMessageResultNotification then OnActivityResult( TMessageResultNotification(M).RequestCode, TMessageResultNotification(M).ResultCode, TMessageResultNotification(M).Value); end; function TForm1.OnActivityResult(RequestCode, ResultCode: Integer; Data: JIntent): Boolean; begin Result := False; TMessageManager.DefaultManager.Unsubscribe( TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; if RequestCode = RECORD_VIDEO then begin if ResultCode = TJActivity.JavaClass.RESULT_OK then begin TThread.Queue(nil, procedure begin Label1.Text:='recording completed'; Invalidate; end); end; end; end; end. Пишет стандартной программой и сохраняет под названием recording.mp4 Если нужно просто писать видео, то подойдет.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...