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

tFeniks

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

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

  • Посещение

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

  1. Не знаю в какой раздел это лучше отнести, поэтому написал сюда. Ситуация такая. Пишу программу, которая будет при наличии интернета обновлять свою информация с сайта http://yazikovo.cerkov.ru/  Если интернета нет, то будет показывать в оффлайн режиме то, что есть уже в базе программы. Когда интернет появляется, то программа должна анализировать то, что появилось нового на сайте и добавлять в базу. Просвятите какую базу лучше использовать и если есть возможность то помогите с кодом.

  2.  

     

    В RAD Studio такой возможности нет. Пишите на Jave.

    Тогда посоветуйте тупенькому, что изучить, чтобы начать писать на этом шайтанском языке.

    Виджет какой хотите сделать?

    Просто это капелька в море в разработке!

     

    Пока мне принципиально вообще разобраться с виджетами. Да вообще много разных вопросов возникают. Например Сейчас делаю 3D модель батарейки и планирую сделать компонент, который бы визуально отображал уровень заряда. Что-то типа прогрессбара

  3. Если кому будет интересно, нашел в исходниках AlphaScins как вставить информацию о компоненте в стартовое окно Delphi

    procedure RegisterWithSplashScreen;
    var
      Bmp : TBitmap;
    begin
      Bmp := TBitmap.Create;
      Bmp.LoadFromResourceName(hInstance, 'ACLOGO');
      try
        SplashScreenServices.AddPluginBitmap('AlphaControls 2013', Bmp.Handle, False,
    {$IFNDEF ALITE}
          {$IFDEF RUNIDEONLY}'Trial edition'{$ELSE}'Registered'{$ENDIF},
    {$ELSE}
          'Lite Edition',
    {$ENDIF}
          '(version ' + sSkinManager.CurrentVersion + ')');
      except on E : Exception do
      end;
      Bmp.Free;
    end;
    {$ENDIF}
  4. Наконец-то все заработало как нужно. Если у кого есть еще информация по следующим сопутствующим вопросам, то поделитесь.

    1. Как добавить информацию о компоненте в SplaschScreen Delphi

    2. Как добавить окно About в компонент

  5.  

     

    До этого Вы писали что у Вас 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.
    

    сегодня проверю и отпишусь. Думаю будет работать. 

     

    И еще в догонку, чтобы уж во всем разобраться раз и до конца. Как мне прикрутить окно О программе, чтобы в проперти Был пункт About, по клику на который вызывалось это окно. 

  6.  

    До этого Вы писали что у Вас 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.
    

    сегодня проверю и отпишусь. Думаю будет работать. 

  7. Создал такой компонент

     

    unit BATERRY;
     
    interface
     
    uses
      System.SysUtils, System.Classes, AndroidAPI.Helpers,
      AndroidAPI.JNI.GraphicsContentViewText;
     
    type
      TBattery = class(TComponent)
      private
        { Private declarations }
        FBattery: string; // уровень заряда батареи
      protected
        { Protected declarations }
      public
        { Public declarations }
        Constructor Create(AOwner: TComponent); override;
        Destructor Destroy; override;
        function GetBatteryPercent: string;
        procedure SetBatteryPercent(Value: string);
        function BatteryPercent(const aContext: JContext): integer;
      published
        { Published declarations }
        property Battery: string read GetBatteryPercent write SetBatteryPercent;
     
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('ARION', [TBattery]);
    end;
     
    { TBattery }
     
    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;
     
    constructor TBattery.Create(AOwner: TComponent);
    begin
      inherited;
      Create(AOwner);
    end;
     
    destructor TBattery.Destroy;
    begin
      Destroy;
      inherited;
    end;
     
    function TBattery.GetBatteryPercent: string;
    begin
      result := FBattery;
    end;
     
    procedure TBattery.SetBatteryPercent;
    var
      myContext: JContext;
    begin
      myContext := SharedActivityContext;
      // Showmessage(BatteryPercent(myContext).ToString);
      FBattery := (BatteryPercent(myContext).ToString);
    end;
     
    end.
     
    Что я делаю не так? Компонент не компилируется. Я хочу, чтобы он появился на палитре. Он должен работать в среде Android. Умом понимаю, что используется AndroidApi, которого в виндовсе нет, но как обойти эту проблему?
×
×
  • Создать...