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

ildvild

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

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные ildvild

  1. До этого Вы писали что у Вас Delphi зависает. Я выше привел код для конструктора и деструктора.

    После этого зависание осталось? Проверьте при выбранных платформах Windows и Android.

     

    p.s.

    Переделал ваш код, но под платформой андроид не смотрел, т.к. она отсутствует, но запуститься по идее должно

    unit BATTERY;
    
    interface
    
    uses
    {$IFDEF ANDROID}
      AndroidAPI.Helpers,
      AndroidAPI.JNI.GraphicsContentViewText,
    {$ENDIF}
      System.SysUtils, System.Classes;
    
    type
      TBattery = class(TComponent)
      private
      public
        { Public declarations }
        Constructor Create(AOwner: TComponent); override;
        Destructor Destroy; override;
        function GetBatteryPercent: string;
        procedure SetBatteryPercent(Value: string);
    {$IFDEF ANDROID}
        function BatteryPercent(const aContext: JContext): integer;
    {$ENDIF}
      published
        { Published declarations }
        property Battery: string read GetBatteryPercent write SetBatteryPercent;
    
      end;
    
    procedure Register;
    
    implementation
    
    procedure Register;
    begin
      RegisterComponents('ARION', [TBattery]);
    end;
    
    { TBattery }
    
    {$IFDEF ANDROID}
    function TBattery.BatteryPercent(const aContext: JContext): integer;
    var
      filter: JIntentFilter;
      Battery: JIntent;
    begin
      filter := TJIntentFilter.Create;
      filter.addAction(TJIntent.JavaClass.ACTION_BATTERY_CHANGED);
      Battery := aContext.registerReceiver(NIL, filter);
      result := Battery.getIntExtra(StringToJString('level'), -1);
    end;
    {$ENDIF}
    
    constructor TBattery.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
    end;
    
    destructor TBattery.Destroy;
    begin
    
      inherited Destroy;
    end;
    
    function TBattery.GetBatteryPercent: string;
    {$IFDEF ANDROID}
    var
      myContext: JContext;
    {$ENDIF}
    begin
      result := 'N/A';
    
    {$IFDEF ANDROID}
      if not(csDesigning in ComponentState) then
      begin
        myContext := SharedActivityContext;
        result := (BatteryPercent(myContext).ToString);
      end;
    {$ENDIF}
    end;
    
    procedure TBattery.SetBatteryPercent(Value: string);
    begin
    {$IFDEF ANDROID}
    {$ENDIF}
    end;
    
    end.
    
  2. Да, удалять элементы можно только в режиме Master.

    Далее, не обязательно добавлять другие экраны, всю работу можно делать только в режиме мастера. Экраны тут добавлены только для удобства работы, т.к. визуально все видно.

     

    Например, вам нужно в случае, если устройство планшет, отображать панельку. Вы можете сделать это в Мастере прописав код. А можете добавить экран планшета и уже в дезайн тайме отобразить панель.

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