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

sn_nn

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

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

  • Посещение

  • Победитель дней

    1

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

  1. у меня подобный код не прокатил. объясню почему. у меня не одна была форма и формы грузились долго не из за кода в OnCreate а из за большого количества контролов на формах. все мои 5 форм грузились около 7 секунд. а основная форма которая шла первой и на которой должна была быть картинка не прорисовывалась пока все формы не загрузятся. то есть был белый экран без прорисованных компонентов. потом белый экран убирался и появлялась моя основная форма. смысла в таком сплеше я не увидел. 

    Если основная форма загружает большую базу данных, содержит кучу контролов и грузится 30 сек. и более - то только так. в NavitelNavigator, например, размер карт большой и там, примерно, то же самое.

  2. Можно конечно, делал, правда в XE8. Объясню на примере своего приложения:

    В проекте 2 формы: frmSplash и frmMain. frmSplash в свойствах проекта ставим как Main form. Там же, обоим формам устанавливаем Avto create.

    frmSplash содержит картинку и прогресс бар, отображающий ход загрузки frmMain.

    В самой frmSplash никакого особого кода не пишем.

    Для frmMain ставим свойство Visible в False в  ObjectInspector.

    В frmMain в процедуре FormCreate пишем:

     

     код....

      frmSplash.pbLoad.Value:=15;Application.ProcessMessages; //Меняем значение индикатора в форме заставки

     код...

      frmSplash.pbLoad.Value:=20; Application.ProcessMessages; //Меняем значение индикатора в форме заставки

     код...

      frmSplash.pbLoad.Value:=100;Application.ProcessMessages; //Загрузка закончилась
      frmMain.Visible:=True;
    Самое главное, чтоб frmSplash не была перегружена контролами и появилась практически сразу, после исчезновения стандартной загрузочной картинки.
     

    Если же, ваша главная форма грузится ну очень долго и экран блокируется (гаснет) раньше, чем исчезнет заставка - то нужно отключить блокировку экрана в файле проекта, например: 

    program VisAcu;
    uses
      System.StartUpCopy,
      FMX.Forms,
      {$IF DEFINED(ANDROID)}
      Androidapi.Helpers,
      FMX.MobilePreview,
      Androidapi.JNI.GraphicsContentViewText,
      {$ENDIF }
      untAstro in 'untAstro.pas',
      untSplash in 'untSplash.pas', {frmSplash}
      untMain in 'untMain.pas'; {frmMain}
    
    
    {$R *.res}
    
    
    begin
      Application.Initialize;
      //Управление подсветкой
      {$IF DEFINED(ANDROID)}
      SharedActivity.getWindow.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON);
      {$ENDIF}
      Application.CreateForm(TfrmSplash, frmSplash);
      Application.CreateForm(TfrmMain, frmMain);
      Application.Run;
    end.

    В итоге: появляется картинка стандартной заставки, потом Ваш сплэш-скрин, в котором неторопливо ползет прогресс бар загрузки основной формы...

  3. В Remote path Указал «.\assets\internal\».

     

    В коде (Delphi XE6) сделал так:

    var 
       DBPath: string;
    begin
    
    {$IF DEFINED(iOS) or DEFINED(ANDROID)}
      DBPath := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'Location.s3db');
    {$ENDIF}
    fdCon.ConnectionString:= 'DriverID=SQLite;Database='+DBPath+';StringFormat=Unicode;LockingMode=Normal';
    fdCon.Connected:=True;
    fdCon.GetTableNames('' , '', '', ListBox1.Items, [osMy, osOther], [tkTable, tkView]);
    
    
    

    Все получилось, спасибо!  :)

  4. Есть заготовка проекта под Андроид, которая должна открывать базу данных SQLite. Планируется разместить базу данных в той же папке, где и сама программа. Подскажите, пожалуйста, как правильно указать путь к базе данных ? Какие еще варианты размещения базы данных предпочтительны, и, как задать при этом путь в Deployment менеджере?

    P.S.: использовал такую строку подключения:  

    fdCon.ConnectionString := 'DriverID=SQLite;Database=$(Run)\Location.s3db;StringFormat=Unicode;LockingMode=Normal';
    

    в Виндовс все работает, а в Андроид ошибка! (Remote path  в Андроид ставил ".\")

  5. Всем спасибо, решил проблему следующим способом:

     

    button1.Text:= VarToStr(TTimeZone.Local.UtcOffset);

     

    Причем, учитывается и сдвиг локального времени при переходе к летнему\зимнему времени!

  6. Спасибо, попробовал следующее:

    Добавил в uses: System.DateUtils;

    далее, при нажатии на кнопку обрабатывается следующий код:

    button1.Text:= VarToStr(TTimeZone.Local.GetUtcOffset(StrToTime('17:53')));

    Далее выставлял в настройках системы часовой пояс:

     Кабул - UTC+4:30, выдает 04:30:00 

     Ташкент - UTC+5:00 выдает 05:00:00 

     А если выставить пояс Москвы - UTC+4, то выдает: 03:00:00

     

    (Операционная система Windows7x64, компилировал под Win32, XE6)

    В чем причина - не пойму, подскажите кто знает....

  7. Как в Delphi получить значение установленного часового пояса из-под FireMonkey, причем желательно не только для Андроид?

    Есть ли какие-то универсальные функции для этого?

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