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

umkes

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

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

  • Посещение

Активность репутации

  1. Like
    umkes получил реакцию от A_l_ex в И снова про ориентацию экрана. Запрет поворота экрана.   
    Project -> Options -> Application -> Orientation -> Enable custom orientation
  2. Like
    umkes получил реакцию от Mars M в XE8, не могу установить соединение с базой Sqlite на устройстве под Android   
    Я делал так,
    FDMainConnection.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'DB.s3db'); Создает в моих документах на винде, и где-то не знаю где на андроидах)
    Так же мб понадобится
    FDMainConnectionAfterConnect(Sender: TObject); begin FDMainConnection.ExecSQL('CREATE TABLE If Not Exists [TableName] (' + #13#10 + '[IdObject] INTEGER PRIMARY KEY NOT NULL,' + #13#10 + '[SomeField] INTEGER NULL' + #13#10 + ')'); end { FDMainConnectionAfterConnect }; и т.д.
  3. Like
    umkes получил реакцию от Pax Beach в мне нужно что бы мой сервис стартовал каждые 10 секунд.   
    package com.TestReceiver; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) if ( action.equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED) || action.equalsIgnoreCase("com.TestReceiver.BootCompletedCustomIntent") ) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.TestReceiver.BootCompletedReceiver"); TestLauncher.setAction("com.TestReceiver.StartServiceIntent"); PendingIntent pintent = PendingIntent.getBroadcast(context, 0, TestLauncher, 0); AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pintent); } else if (action.equalsIgnoreCase("com.TestReceiver.StartServiceIntent")) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.myService"); context.startService(TestLauncher); } } } Вот пример 1 из моих сервисов. Сначала стартует аларм менеджер, который сюда же шлет интенты на старт сервиса "myService".
    В манифесте в ресиверах прописаны эти интенты
    <receiver android:name="com.TestReceiver.BootCompletedReceiver" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="com.TestReceiver.BootCompletedReceiver" /> <action android:name="com.TestReceiver.BootCompletedCustomIntent" /> <action android:name="com.TestReceiver.StartServiceIntent" /> </intent-filter> </receiver>  
  4. Like
    umkes получил реакцию от Pax Beach в Android MySQL+UniDac+3G   
    Привет, а где находится БД, не в твоей сети случайно, а ты по локальному адресу пытаешься конектиться? =))
  5. Like
    umkes получил реакцию от Равиль Зарипов (ZuBy) в Android MySQL+UniDac+3G   
    Привет, а где находится БД, не в твоей сети случайно, а ты по локальному адресу пытаешься конектиться? =))
  6. Like
    umkes получил реакцию от Vitaldj в Android MySQL+UniDac+3G   
    Привет, а где находится БД, не в твоей сети случайно, а ты по локальному адресу пытаешься конектиться? =))
  7. Like
    umkes получил реакцию от Rusland в Как увеличивать ListBoxItem в зависимости от количества текста?   
    Я такое использую для вычисления высоты текста. Может пригодится)
    function CalculateTextHeight(aText: String; aWidth: Single; aMinHeight: Single; aMaxHeight: Integer; aFont: TFont) : Single; begin if not Assigned(FTextLayout) then FTextLayout := TTextLayoutManager.DefaultTextLayout.Create; FTextLayout.BeginUpdate; try FTextLayout.Text := aText; FTextLayout.MaxSize := TPointF.Create(aWidth, 1000); FTextLayout.WordWrap := True; FTextLayout.Font.Assign(aFont); FTextLayout.HorizontalAlign := FMX.Types.TTextAlign.Leading; FTextLayout.VerticalAlign := FMX.Types.TTextAlign.Leading; finally FTextLayout.EndUpdate; end; Result := FTextLayout.Height; if aMinHeight>0 then if Result < aMinHeight then Result := aMinHeight; if aMaxHeight>0 then if Result > aMaxHeight then Result := aMaxHeight; end{ function CalculateTextHeight }; FTextLayout : TTextLayout - глобальная приватная переменная.
  8. Like
    umkes отреагировална Andrey Efimov в Delphi не видит мой телефон   
    Вот этого вполне достаточно для работы. Если чего-то нет, то просто установите это через SDK Manager. Всё установится по нужным путям, потом просто в студии перепроверьте, если что, поменяйте на новые.

    p.s. Там же, можно всё снести.
  9. Like
    umkes получил реакцию от Rusland в мне нужно что бы мой сервис стартовал каждые 10 секунд.   
    package com.TestReceiver; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) if ( action.equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED) || action.equalsIgnoreCase("com.TestReceiver.BootCompletedCustomIntent") ) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.TestReceiver.BootCompletedReceiver"); TestLauncher.setAction("com.TestReceiver.StartServiceIntent"); PendingIntent pintent = PendingIntent.getBroadcast(context, 0, TestLauncher, 0); AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pintent); } else if (action.equalsIgnoreCase("com.TestReceiver.StartServiceIntent")) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.myService"); context.startService(TestLauncher); } } } Вот пример 1 из моих сервисов. Сначала стартует аларм менеджер, который сюда же шлет интенты на старт сервиса "myService".
    В манифесте в ресиверах прописаны эти интенты
    <receiver android:name="com.TestReceiver.BootCompletedReceiver" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="com.TestReceiver.BootCompletedReceiver" /> <action android:name="com.TestReceiver.BootCompletedCustomIntent" /> <action android:name="com.TestReceiver.StartServiceIntent" /> </intent-filter> </receiver>  
  10. Like
    umkes получил реакцию от Rusland в Zoom & Location   
    Есть ли возможность при использовании MapView и при наличии нескольких маркеров на нем, посчитать оптимальный Location и Zoom mapview'a? Чтобы поместилось как можно больше маркеров.
    Вроде как на javascript это делается с помощью такого кода:
    var latlngbounds = new google.maps.LatLngBounds(); for (var i = 0; i < markerslat.length; i++) { latlngbounds.extend(markerslat[i]); } map.fitBounds(latlngbounds); Использование WebBrouser не подходит.
    Может у кого-то есть что сказать по этому поводу?
  11. Like
    umkes получил реакцию от Rusland в AlarmManager   
    Да - да, это он. Там есть от силы 5 ссылок в интернете, на которых разсматриваются 2 примера с ХЕ5. 
    Я неделю колупал, не мог разобраться пока не поставил джаву и не написал свой сервис джавовский
    И сегодня наконец-то сделал, по полной аналогии, сервис в коротом пашет StartForeground) 
     
    Так что мой тебе совет. Попробуй написать на джаве, или хотяб примеры глянь. А потом через JNI все сделаешь на делфи.
  12. Like
    umkes получил реакцию от Brovin Yaroslav в Не сохраняются данные в ini, На Android.   
    //============================================================================== procedure TKTasksApi.SaveIntoIniFile; //------------------------------------------------------------------------------ var IniFile : TIniFile; begin {$IFDEF MSWINDOWS} IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini')); {$ENDIF} {$IFDEF ANDROID} IniFile:=TIniFile.Create(System.IOUtils.TPath.GetDocumentsPath+'/config.ini'); {$ENDIF} try IniFile.WriteString('Tasks','UserName', fmTasks.cbTabSettingsUser.Selected.Text); IniFile.WriteString('Tasks','Address', fmTasks.edtTabSettingsAddress.Text); finally IniFile.free; end{ try..finally }; end{ procedure TKTasksApi.SaveIntoIniFile }; Всегда работал такой код.
  13. Like
    umkes отреагировална rareMax в Добавьте кнопку "Вверх"   
    Просьба, добавьте кнопку "вверх", (пример - Хабр). Очень неудобно с середины или даже ниже в теме подниматься вверх
  14. Like
    umkes получил реакцию от Rusland в Закрытие приложение Андроидом   
    Есть ли способ защитить приложение от автозакрытия андроидом, если мало памяти на устройстве?
    Грубо говоря приложение - это просто таймер. Через некоторое время при выборе его(приложения) в трее, происходит начальный запуск. Данные таймера теряются и бида наступает
     
    Слышал что сервисы закрываются попозже (Так ли это?). А сервисы у которых есть интерфейс (например виджет от плеера) закрываться не будет. Но как такой создать на делфи я не понял....
     
    Хотелось бы услышать мнение наших форумчан, по поводу решения данной проблемы.
  15. Like
    umkes получил реакцию от Brovin Yaroslav в И снова про ориентацию экрана. Запрет поворота экрана.   
    Project -> Options -> Application -> Orientation -> Enable custom orientation
  16. Like
    umkes получил реакцию от Rusland в И снова про ориентацию экрана. Запрет поворота экрана.   
    Project -> Options -> Application -> Orientation -> Enable custom orientation
  17. Like
    umkes получил реакцию от zairkz в XE8, не могу установить соединение с базой Sqlite на устройстве под Android   
    Я делал так,
    FDMainConnection.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'DB.s3db'); Создает в моих документах на винде, и где-то не знаю где на андроидах)
    Так же мб понадобится
    FDMainConnectionAfterConnect(Sender: TObject); begin FDMainConnection.ExecSQL('CREATE TABLE If Not Exists [TableName] (' + #13#10 + '[IdObject] INTEGER PRIMARY KEY NOT NULL,' + #13#10 + '[SomeField] INTEGER NULL' + #13#10 + ')'); end { FDMainConnectionAfterConnect }; и т.д.
  18. Like
    umkes получил реакцию от Rusland в ListBox, Edit и клавиатура   
    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;   Shift: TShiftState); //----------------------------------------------------------------------------- var   Keyboard : IFMXVirtualKeyboardService; begin if Key = vkReturn then begin if TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface( Keyboard ) ) then         if TVirtualKeyboardState.Visible in Keyboard.GetVirtualKeyBoardState then begin           Keyboard.HideVirtualKeyboard;           Key := 0;           Exit;         end{if}; end{procedure TForm1.FormKeyUp};
  19. Like
    umkes получил реакцию от Vitaldj в ListBox, Edit и клавиатура   
    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;   Shift: TShiftState); //----------------------------------------------------------------------------- var   Keyboard : IFMXVirtualKeyboardService; begin if Key = vkReturn then begin if TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface( Keyboard ) ) then         if TVirtualKeyboardState.Visible in Keyboard.GetVirtualKeyBoardState then begin           Keyboard.HideVirtualKeyboard;           Key := 0;           Exit;         end{if}; end{procedure TForm1.FormKeyUp};
  20. Like
    umkes получил реакцию от Kitty в Запрет жеста   
    Решил при помощи координат.
    На OnMouseDown сохраняем координату Y. А в обработке igiLongTap проверку или теперешняя координата равна Y.
  21. Like
    umkes получил реакцию от Равиль Зарипов (ZuBy) в Запрет жеста   
    Решил при помощи координат.
    На OnMouseDown сохраняем координату Y. А в обработке igiLongTap проверку или теперешняя координата равна Y.
  22. Like
    umkes отреагировална Brovin Yaroslav в О видах координат в FireMonkey и конвертации между ними   
    Типы координат
    В FIreMonkey различают три вида координат:
    Локальные - это координаты в системе координат контрола.  Абсолютные - это координаты в системе координат клиентской части формы. Экранные - это координаты в системе координат экрана. Соответственно, если речь идет о форме, то позиция формы задается в экранных координатах.
    Если речь идет о контролах, то в локальных координатах своего родительского контрола.
     
    Конвертация
    Локальные -> Абсолютные
    TControl.LocalToAbsolute(TPointF): TPointF Абсолютные -> Локальные
    TControl.AbsoluteToLocal(TPointF): TPointF Абсолютные -> Экранные
    TControl.Scene.LocalToScreen(TPointF): TPointF; Экранные -> Локальные
    TControl.Scene.ScreenToLocal(TPointF): TPointF;
  23. Like
    umkes получил реакцию от Rusland в Долгое нажатие на элементе ListView   
    uses System.UITypes
     
    if (EventInfo.GestureID = igiLongTap) then begin
  24. Like
    umkes получил реакцию от Rusland в Долгое нажатие на элементе ListView   
    Или 
    ListView1.Selected.Text
  25. Like
    umkes отреагировална Brovin Yaroslav в Презентационные материалы с запуска RX Seattle   
    RAD Studio 10 Seatlle: обзор продукта
    Презентация: RAD Studio 10 Seatlle обзор продукта.pdf Разработка приложений для Windows 10 и новые возможности VCL
    Презентация: Разработка приложений для Windows 10 и новые возможности VCL.pdf Новые возможности мобильной разработки приложений
    Презентация: Новые возможности мобильной разработки приложений.pdf Пример сервиса: DownloadServiceDemo.zip Эффективное использование среды разработки и компилятора C++
    Презентация: Эффективное использование среды разработки и компилятора C++.pdf Взаимодействие приложений и IoT
    Презентация: Взаимодействие приложений и IoT.pdf Преодолевая границы: EMS и расширение FireDAC для работы с MongoDB и Средства разработки и управления для разработчиков БД
    Презентация: Преодолевая границы EMS и расширение FireDAC для работы с MongoDB.pdf
×
×
  • Создать...