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

Вадим Шавров

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

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

  • Посещение

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

    1

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

  1. Thanks
    Вадим Шавров получил реакцию от Hevard в Как вернуть скролл в начало? TVertScrollBox   
    Не помогло.
    Решил поискать ответ по командам, которые вы написали. Нашел такое решение:
    VertScrollBox1.ViewportPosition:=TPointF.Create(0,0); Все работает. Спасибо!
  2. Like
    Вадим Шавров отреагировална Andrey Efimov в TEdit не понятное удаление последнего символа   
    Здравствуйте.
    Это баг, я сообщил о нём ещё в мае (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;  
     
  3. Like
    Вадим Шавров отреагировална FREEFAR в Блокировка компонентов при скроллинге   
    Костыль года ))
    Tdatetime.hittest = False;
    на него кидаем TLAyout
    Layout.align := talignlayout.contents;
    Layout.hittest = True;
    в onTap у Layout пишем
    datetimepicker.OpenPicker;;
     
  4. Like
    Вадим Шавров отреагировална FREEFAR в Блокировка компонентов при скроллинге   
    Сам не пробовал еще, но тебе предложу.
    Может есть целевое решение, но мне видится такое
    Проверь отпишись пжл.
    значится в 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;
     
  5. Like
    Вадим Шавров отреагировална Brovin Yaroslav в Где взять стандартный стиль в FireMonkey для iOS и Android, используемый по умолчанию?   
    Хороший вопрос.
     
    Не все знают, что в RAD Studio XE5 входит дизайнер растровых стилей для VCL (BitmapStyleDesigner), который также позволяет автоматически создавать стили для FireMonkey. Этот дизайнер находится в папке Bin/bitmapStyleDesigner.exe и содержит внутри себя автоматическую конвертацию любого VCL стиля в FireMonkey. 

    Этот дизайнер также предназначен для внесения правок в стандартные системные стили андроида и йос.
     
    Чтобы получить системный стиль Android Dark, Android Light, iOS, iOS 7 нужно:
     
    1. Выбрать дефолтный требуемый стиль: 

    2. Сохранить стиль как стиль FireMonkey:

     
    А дальше использовать файл стиля в своих приложениях.
  6. Like
    Вадим Шавров отреагировална Евгений Корепов в Импорт/экспорт БД   
    Конечно полный путь, откуда иначе функция узнает какой файл отправлять?
    AComment - комментарий, типа "Это файл №199 из такого то приложения, служит для того то". Но никто не заставляет вас его писать.
    Перед тем как пробовать запускать, прочтите предупреждения компилятора, некоторые функции устарели или изменилось их местоположение. Исправьте код. После этого вызывайте как указали, но вместо знаков вопроса укажите пустую строку к примеру.
    И убедитесь в существовании файла перед его отправкой.
  7. Like
    Вадим Шавров отреагировална Евгений Корепов в Импорт/экспорт БД   
    Да, конечно. Что то из этих, лишнее уберите:
      Androidapi.JNI.Webkit,
      FMX.Platform.Android,
      Androidapi.Helpers,
      Androidapi.JNI.GraphicsContentViewText,
      Androidapi.JNIBridge,
      Androidapi.JNI.JavaTypes,
      Androidapi.JNI.Net,
      Androidapi.JNI.Os,
     
  8. Like
    Вадим Шавров отреагировална Евгений Корепов в Импорт/экспорт БД   
    Вот так:
    procedure ShareFile(aFileName, aComment : String); {$IFDEF ANDROID} var Intent : JIntent; uri : Jnet_Uri; AttachmentFile: JFile; S : String; {$ENDIF ANDROID} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); S:=TPath.GetFileName(aFileName); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment)); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment)); AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName)); Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile); Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID)); Intent.setType(StringToJString('text/plain')); // Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png')); SharedActivity.startActivity(Intent); {$ENDIF ANDROID} end; Из давнего проекта, возможно нужно будет подправить согласно сообщениям компилятора.
    P.S. И файл должен находится в общедоступной папке (к примеру TPath.GetSharedDocumentsPath)
  9. Like
    Вадим Шавров отреагировална masmat в Обновление файла БД без перезапуска приложения   
    Под Android я делаю так. Вставляю изначально файл БД в Deploy.
    Потом вызываю при необходимости процедуру
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } var   PackageName: JString;   zip: TZipFile; begin      // Отключаемся от базы       FDConnection1.Connected := False;       // Получаем имя apk файла       PackageName := SharedActivityContext.getPackageResourcePath;       if TFile.Exists(JStringToString(PackageName)) then       begin         // Удаляем старый файл базы         TFile.Delete(TPath.GetHomePath + PathDelim + 'DBGK.db');         // Извлекаем новый файл базы         zip := TZipFile.Create;         zip.Open(JStringToString(PackageName), TZipMode.zmRead);         zip.Extract('assets/internal/DBGK.db', TPath.GetDocumentsPath, False);         zip.Close;         zip.free; end;   // Подключаемся к базе   FDConnection1.Connected := True; end;  
    Под iOS вставляю в ресурсы, потом вот так
     
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } begin      // Отключаемся от базы       FDConnection1.Connected := False;   if FindResource(0, 'res_bd', PChar(RT_RCDATA)) <> 0 then     rs_bd := TResourceStream.Create(0,'res_bd',PChar(RT_RCDATA));   if TFile.Exists(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db') then     begin       TFile.Delete(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end   else     begin       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end;   FDConnection1.Connected := True; end;
  10. Like
    Вадим Шавров отреагировална ophion в Диалоговое окно MessageBox на Android   
    Используйте MessageDlg.
    На андроиде немного инная реализация, требующая добавления асинхронной процедуры обрабоки результатов, полученных от MessageDlg.
     
    Будет что-то вроде:
    MessageDlg('Удалить выбранный файл?', TMsgDlgType.mtConfirmation, mbYesNo, 0, procedure (const AResult: TModalResult) begin if (AResult=mrYes) then begin {тут обрабатываете результат нажатия кнопки "Yes"} end; end);
  11. Like
    Вадим Шавров отреагировална Равиль Зарипов (ZuBy) в Диалоговое окно MessageBox на Android   
    поправить cамому в файлике FMX.Consts.pas и положить рядом с проектом
  12. Thanks
    Вадим Шавров отреагировална FREEFAR в Как вернуть скролл в начало? TVertScrollBox   
    еще так можно))
    VertScrollBox1.ViewportPosition.Y := 0;
  13. Like
    Вадим Шавров получил реакцию от FREEFAR в Как вернуть скролл в начало? TVertScrollBox   
    Не помогло.
    Решил поискать ответ по командам, которые вы написали. Нашел такое решение:
    VertScrollBox1.ViewportPosition:=TPointF.Create(0,0); Все работает. Спасибо!
  14. Thanks
    Вадим Шавров отреагировална FREEFAR в Как вернуть скролл в начало? TVertScrollBox   
    Попробуй так
    v: TVertScrollBox
    v.ScrollTo(0,0,False);
    v.ScrollBy
×
×
  • Создать...