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

Лидеры

  1. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      4

    • Постов

      738


  2. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 213


  3. Олег Киреев

    Олег Киреев

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


    • Баллы

      1

    • Постов

      147


  4. ENERGY

    ENERGY

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


    • Баллы

      1

    • Постов

      568


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

Показан контент с высокой репутацией 05.01.2018 в Сообщения

  1. реально, столкнувшись с проблемами, я перешел к использованию собственных окон. просто пустая форма, в которой ректангл и все остальное. тогда не надо ждать когда пофиксят (никогда)
    2 балла
  2. Здравсвуйте Уважаемый Gasche. Так и задумано для того чтобы помещалась вся информация после того как выполнены необходимые предварительные действия и перед тем как сохранить всё в картинку. Вот посмотрите в приложении как это выглядит. С Уважением. Олег.
    1 балл
  3. Евгений Корепов

    fgActivityDialog

    Подумал и сделал более изящно - изменил метод Show. procedure TForm1.Button1Click(Sender: TObject); begin fgActivityDialog.Message := 'Teste'; fgActivityDialog.Show(3000); end; procedure TForm1.Button1Click(Sender: TObject); begin fgActivityDialog.Message := 'Teste'; fgActivityDialog.Cancellable:=True; fgActivityDialog.Show; end; Вот код :
    1 балл
  4. Евгений Корепов

    fgActivityDialog

    В Токио изменена логика работы приложения на Андроид - пользовательский интерфейс выполняется в основном потоке приложения, возможно проблема из за этого. Вот похожая тема
    1 балл
  5. Вот моя процедура переключения, все легко и просто: procedure TFormMain.SetActiveTab(ATabControl : TTabControl; ATabItem : TTabItem; ATransition : Boolean); Var ATabTransitionDirection : TTabTransitionDirection; ATabTransition : TTabTransition; begin if ATabControl.TabIndex = ATabItem.Index Then Exit; if ATransition then ATabTransition:=TTabTransition.Slide Else ATabTransition:=TTabTransition.None; if ATabControl.TabIndex < ATabItem.Index Then ATabTransitionDirection:=TTabTransitionDirection.Normal Else ATabTransitionDirection:=TTabTransitionDirection.Reversed; ATabControl.SetActiveTabWithTransition(ATabItem,ATabTransition,ATabTransitionDirection); end;
    1 балл
  6. Евгений Корепов

    fgActivityDialog

    В своем коде вы останавливаете работу приложения, не давая отрисовать Диалог. Попробуйте вот так: procedure TForm1.Button1Click(Sender: TObject); begin fgActivityDialog1.Message := 'Teste'; fgActivityDialog1.Show; Timer.Interval:=3000; Timer.Enabled:=True; end; procedure TForm1.TimerTimer(Sender: TObject); begin Timer.Enabled:=False; fgActivityDialog1.Hide; end;
    1 балл
  7. Мой вариант 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 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...