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

Лидеры

  1. r@di0

    r@di0

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


    • Баллы

      3

    • Постов

      12


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      1

    • Постов

      2 124


  3. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      1

    • Постов

      842


  4. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      1

    • Постов

      2 517


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

Показан контент с высокой репутацией 10.05.2018 во всех областях

  1. Сам не пробовал еще, но тебе предложу. Может есть целевое решение, но мне видится такое Проверь отпишись пжл. значится в CreateFrom суем FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never; Это дело лишит нас открытия клавиатуры при Click на Edit а в событии onTap у Edit прописать процедуру открытия клавы showKeyboard(Sender); procedure Tmainf.showKeyboard(Sender: TObject); var FService: IFMXVirtualKeyboardService; begin {$IFDEF MSWINDOWS} exit; {$ENDIF} TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService)); if (FService <> nil) then begin if not (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then FService.ShowVirtualKeyboard(TFmxObject(Sender)); end; if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, IInterface(FKService)) then begin FKService.SetHideKeyboardButtonVisibility(False); FKService.SetToolbarEnabled(False); end; end;
    1 балл
  2. r@di0

    Убрать поле при сериализации

    TFoo = class(TObject) private [JSONMarshalled(False)] FAge: Byte; public FName : string; FSurname : string; end;
    1 балл
  3. #WAMACO

    Убрать поле при сериализации

    TBar = class private FValue1: Integer; // FFoo: TFoo; public Value2: Integer; property Value3: Integer read FValue1 write FValue1; // property Foo: TFoo read FFoo write FFoo; end; Попробуй так...
    1 балл
  4. Дополнение: иногда нужно, чтобы уведомления не накапливались, а отображалось только последнее. Поправил класс NotificationPublisher (см. аттач), чтобы при наличии в данных параметра "unique": false обновлялось последнее сообщение, а не добавлялись новые. NotificationPublisher.zip
    1 балл
  5. В версии Берлин есть свои особенности. 1. Берём берлиновские java-исходники: C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl\androiddex\java\fmx\src\ Далее в файле NotificationPublisher.java в buildNotification правим код, чтобы использовался переданный параметр Sound (если передан): if (msgSound == "") { //если не передан, используем стандартный звук уведомлений mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); } else { mBuilder.setSound(Uri.parse("android.resource://" + this.mContext.getPackageName() + "/raw/" + msgSound)); } Подключаете класс import android.net.Uri; Прокидываете параметр String msgSound выше до publishGCM, а в publishGCM нужно получить из бандла параметр Sound по аналогии с другими параметрами (см. приложенный файл NotificationPublisher.java). Можете так же прописать mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(msgText)); для MultiLine сообщений и сразу сделать обработку параметра icon для использования в пушах иконок отличных от иконки приложения. 2. После того как Вы воссоздали структуру нужного пакета (в java иерархия классов определяется вложенностью папок) в нужном каталоге и внесли необходимые изменения в исходники, необходимо откомпилировать измененные классы, добавить их в исходный пакет (fmx.jar) и сформировать файл classes.dex (cм. приложенный файл install.bat): @echo off setlocal if x%ANDROID_SDK% == x set ANDROID_SDK="C:\Users\Public\Documents\Embarcadero\Studio\18.0\PlatformSDKs\android-sdk-windows" if x%JAVA% == x set JAVA="C:\Program Files\Java\jdk1.8.0_60\bin" set ANDROID_PLATFORM=%ANDROID_SDK%\platforms\android-22 set DX_LIB=%ANDROID_SDK%\build-tools\27.0.3\lib set EMBO_DEX="C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\release\classes.dex" set FMX_JAR="C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\release\fmx.jar" set PROJ_DIR="C:\fmx" echo COMPILLING NotificationPublisher.java %JAVA%\javac -d "%PROJ_DIR%" "%PROJ_DIR%\com\embarcadero\rtl\notifications\NotificationPublisher.java" -cp "%ANDROID_PLATFORM%\android.jar";"C:\Program Files (x86)\Embarcadero\Studio\18.0\lib\android\debug\android-support-v4.jar" pause echo COPY ORIGINAL fmx.jar copy %FMX_JAR% %PROJ_DIR%\fmx.jar" echo UPDATE FILE NotificationPublisher.class %JAVA%\jar uf "fmx.jar" com\embarcadero\rtl\notifications\NotificationPublisher.class echo CONVERTING FROM jar TO dex call %DX_LIB%\dx.jar --dex --verbose --output=%PROJ_DIR%\output\dex\test_classes.dex --positions=lines %PROJ_DIR%\fmx.jar echo MERGING dex FILES mkdir output\dex 2> nul java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% del output\dex\test_classes.dex echo Now we have the end result, which is output\dex\classes.dex pause :Exit endlocal Поправьте PROJ_DIR на свой каталог, в котором всё лежит (у меня в C:\fmx), а так же проверьте правильность остальных путей. 3. После того как Вы получили новый пакет fmx.jar, а так же файл classes.dex, оба файла необходимо скопировать в каталог со своим Delphi-проектом. 4. Добавьте новый файл classes.dex в Deployment и отключите старый файл classes.dex; 5. У нового файла classes.dex пропишите Remote Path как у старого файла (classes\); 6. Добавьте звуковой(ые) файл(ы) для уведомлений в Deployment и пропишите Remote Path: res\raw\ На этом подготовка IDE завершена. Что-либо отключать в IDE в разделе Libraries (напр. fmx.dex.jar) не требуется. Добавлять так же ничего не требуется. Если Вы ранее подключали свой fmx.dex.jar, то удалите его и включите стандартный. 7. При отправке Push с сервера параметр Sound передавать не в Notification!, а в Data: $fields['data'] = array('body' => $text, 'title' => $title, 'sound' => 'neworder'); Имя звукового файла указывается без расширения. fmx.zip
    1 балл
  6. Здравствуйте. Это баг, я сообщил о нём ещё в мае (RSP-14928 и RSP-14929), в тех. поддержке предложили временное решение (ответ ниже). (Тема В TEdit стирается предыдущий текст аналогичная). find FMX.Platform.Android.pas find procedure TTextServiceAndroid.SetCaretPosition(const Value: TPoint); change code to: procedure TTextServiceAndroid.SetCaretPosition(const Value: TPoint); var SelStart, SelEnd: Integer; begin if FCaretPosition <> Value then begin FCaretPosition := Value; CalculateSelectionBounds(SelStart, SelEnd); if (FTextView <> nil) and not FInternalUpdate then PlatformAndroid.SynchronizeOnUIThread( procedure begin //Fix By [龟山]Aone(1467948783) //https://quality.embarcadero.com/browse/RSP-14928 // if (SelEnd - SelStart) > 0 then // FTextView.setSelection(SelStart, SelEnd) // else FTextView.setCursorPosition(CaretPosition.X); end); end; end;
    1 балл
  7. uses maskUtils Edit1.Text := MaskDoFormatText('000.000.000.000;#0',Edit1.Text, #0);
    1 балл
  8. Русский За управление виртуальной клавиатурой в FireMonkey отвечает сервис IFMXVirtualKeyboardService (Embarcadero Doc Wiki). Который позволяет отображать и скрывать клавиатуру. Для скрытия клавиатуры достаточно выполнить следующий код: uses FMX.Platform, FMX.VirtualKeyboard; procedure TForm5.ButtonHideKeybordClick(Sender: TObject); var KeyboardService: IFMXVirtualKeyboardService; begin // Запрашиваем сервис виртуальной клавиатуры if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then KeyboardService.HideVirtualKeyboard; end; Чтобы показать клавиатуру для контрола: procedure TForm5.ButtonShowKeyboardClick(Sender: TObject); var KeyboardService: IFMXVirtualKeyboardService; begin // Запрашиваем сервис виртуальной клавиатуры if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then KeyboardService.ShowVirtualKeyboard(Edit1); end; English FireMonkey has special service for managing Virtual Keyboard. It is IFMXVirtualKeyboardService (Embarcadero Doc Wiki). It allows show and hide keyboard. For showing virtual keyboard use next code: uses FMX.Platform, FMX.VirtualKeyboard; procedure TForm5.ButtonHideKeybordClick(Sender: TObject); var KeyboardService: IFMXVirtualKeyboardService; begin // Request service of visrtual keyboard if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then KeyboardService.HideVirtualKeyboard; end; For showing virtual keyboard for control: procedure TForm5.ButtonShowKeyboardClick(Sender: TObject); var KeyboardService: IFMXVirtualKeyboardService; begin // Request service of visrtual keyboard if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then KeyboardService.ShowVirtualKeyboard(Edit1); end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...