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

OnePeople

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

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

  • Посещение

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

    58

Весь контент OnePeople

  1. Закройте проект. Попробуйте открыть файл *.fmx формы в проводнике, найти ваш MainMenu22 и удалить там строчку ShortCut. Затем откройте проект.
  2. Вы можете перемещаться по этим "квадратикам" клавишей Tab - соответственно вперед, удерживая Shift нажимая Tab - соответственно назад. Удобна например когда редактируемых переменных несколько например попробуйте для for также нажать пробел и по перемещаться!
  3. Ну так Application.ProcessMessages в Андроиде не работает так то
  4. Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё.
  5. Все верно, но есть ещё доступ к устройствам, блютуз, вай фай, доступ к уведомлениям и т.д., вот были бы методы управления не зависимые от платформы, а то на одной платформе нужно так с ними взаимодействовать, на другой по другому.( Имею ввиду почему это не обернуть, сделать например WifiUtils, BTUtils, NotificationUtils). Вы пишете один код, а в нутри в зависимости от платформы код меняется, хоть самому пиши)
  6. Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение!
  7. DialogService: IFMXDialogService; FMargin, FMinMargin: TRect; FPaperSize: TPointf; FUnits: TPageMeasureUnits; FOptions : TPageSetupDialogOptions; begin if TPlatformServices.Current.SupportsPlatformService(IFMXDialogService, DialogService) then DialogService.PageSetupGetDefaults(FMargin, FMinMargin, FPaperSize, FUnits, FOptions); Text8.Text := FMinMargin.Left.ToString + ' ' + FMinMargin.Top.ToString; А так сколько показывает?
  8. ну так у вас 10 раз inc(pc) for i := 0 to 9 do begin for j := 0 to 5000 do for k := 0 to 10000 do begin a:=a+k/1000+k/500; end; inc(pc);
  9. uses PrinterAPI; var FkPrinter: TMyPrinter; begin FkPrinter:=TMyPrinter.Create(Printer.Printers[cbPrinters.ItemIndex].Device,true); OffsetX := FkPrinter.GetOffsetX; OffsetY := FkPrinter.GetOffsetY; Printer.Canvas.Offset := TPoint.Create(OffsetX , OffsetY ); PrinterAPI.rar
  10. PHYSICALOFFSETX For printing devices: the distance from the left edge of the physical page to the left edge of the printable area, in device units. For example, a printer set to print at 600 dpi on 8.5-by-11-inch paper, that cannot print on the leftmost 0.25-inch of paper, has a horizontal physical offset of 150 device units. PHYSICALOFFSETY For printing devices: the distance from the top edge of the physical page to the top edge of the printable area, in device units. For example, a printer set to print at 600 dpi on 8.5-by-11-inch paper, that cannot print on the topmost 0.5-inch of paper, has a vertical physical offset of 300 device units.
  11. Вы печатаете с начала листа, но существуют так называемые "аппаратные поля" или "физические поля", в зависимости от возможностей принтера: это область, недоступная для печати, вокруг бумаги; то есть, если вы нарисуете что-то в этой области, оно не будет напечатано - эти поля зависят от принтера, и в некоторых случаях можно получить значения этих полей с помощью вызова LeftSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); TopSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
  12. Можно не писать в startupcopy.pas есть методы обновления ассетов. Самому лень писать)))) I feel that files that need to be deployed are files that should not and need not be changed by the application. They are resources like images. If an application changes a file, it does so with intent. The user via the developer wanted it that way. Changing it back through an update causes data loss. As a consequence all files that could be subject to change should not be deployed but generated when used.
  13. Библиотеки которые вы задеплоите можно использовать, а загруженные в процессе работы приложения нельзя!
  14. procedure TForm1.UpdateAsset(AssetName, FilePath: String); var inputStream: JInputStream; FileOutputStream: JFileOutputStream; WData: TJavaArray<Byte>; LData: Integer; begin try InputStream := TAndroidHelper.Context.getAssets.open(StringToJString(AssetName)); except exit; end; try FileOutputStream := TJFileOutputStream.JavaClass.init(StringToJString(FilePath)); except exit; end; WData := TJavaArray<Byte>.Create(4096); repeat try LData := InputStream.read(WData); except LData := -1; end; if LData <> -1 then begin FileOutputStream.write(WData, 0, LData); end; until (LData = -1) or (LData = 0); FileOutputStream.flush; FileOutputStream.close; inputStream.close; end; Обновление файла из assets в папку с программой Пользоваться так проверяете при Form.Create что версия новая и вызываете UpdateAsset('internal/base.db', ApplicationPath + 'base.db');
  15. Если будете загружать файл в deployment тогда ваша база будет здесь Для remote path: assets\internal TPath.Combine(TPath.GetDocumentsPath, 'filename') { Internal } Для remote path: assets TPath.Combine(TPath.GetPublicPath, 'filename') { External } Есть же в конце то концов https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_an_Android_App#Loading_and_Deploying_Files
  16. Ну согласно перевода вы не можете запускать исполняемые файлы из папки своего приложения, и вы не можете изменять код библиотек .so из своего приложения. Оно вам зачем?
  17. if TJBuild_VERSION.JavaClass.SDK_INT >= 26 then begin playbackAttributes := TJAudioAttributes_Builder.Create .setUsage(TJAudioAttributes.JavaClass.USAGE_MEDIA) .setContentType(TJAudioAttributes.JavaClass.CONTENT_TYPE_MUSIC) .build(); AudioFocusRequest:=TJAudioFocusRequest_Builder(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN).Create .setAudioAttributes(playbackAttributes) .setAcceptsDelayedFocusGain(true) .setOnAudioFocusChangeListener(afChangeListener, afHandler) .build(); res := FAudioManager.requestAudioFocus(AudioFocusRequest); end else begin res := FAudioManager.requestAudioFocus(afChangeListener, TJAudioManager.JavaClass.STREAM_MUSIC, TJAudioManager.JavaClass.AUDIOFOCUS_GAIN); end;
  18. Да зависит, вам скинуть код?
  19. Вам нужно создать контрол на основе нативного вида как реализовано например здесь https://github.com/Zeus64/alcinoe/blob/master/source/ALFmxEdit.pas ,тогда вы сможете назначить ему идентификатор ресурса.
  20. Вариантов масса, BASS, стандартный android MediaPlayer, сторонние библиотеки все зависит от того какая платформа, какой файл короткий, длинный, что вы хотите кроме воспроизведения и т.д.
  21. TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloatWait(Image1, 'Position.Y', P.Y, Time, Timewait); Не проверял уже давно, но в андроид не работало, в Windows точно работает, я делаю так, в особых случаях Внимание костыль! TTask.Run(procedure() begin TThread.Synchronize(nil, procedure() begin TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloat(Image1, 'Position.Y', P.Y, Time); end); sleep(Time); TThread.Synchronize(nil, procedure() begin после анимации идет важная процедура) end); end);
×
×
  • Создать...