-
Постов
342 -
Зарегистрирован
-
Посещение
-
Победитель дней
58
Весь контент OnePeople
-
Вы можете перемещаться по этим "квадратикам" клавишей Tab - соответственно вперед, удерживая Shift нажимая Tab - соответственно назад. Удобна например когда редактируемых переменных несколько например попробуйте для for также нажать пробел и по перемещаться!
-
Можно ссылку на вопрос?
-
Ну так Application.ProcessMessages в Андроиде не работает так то
-
Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё.
- 21 ответ
-
- scrollbox
- запрет нажатия
- (и ещё 1 )
-
Все верно, но есть ещё доступ к устройствам, блютуз, вай фай, доступ к уведомлениям и т.д., вот были бы методы управления не зависимые от платформы, а то на одной платформе нужно так с ними взаимодействовать, на другой по другому.( Имею ввиду почему это не обернуть, сделать например WifiUtils, BTUtils, NotificationUtils). Вы пишете один код, а в нутри в зависимости от платформы код меняется, хоть самому пиши)
- 21 ответ
-
- scrollbox
- запрет нажатия
- (и ещё 1 )
-
Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение!
- 21 ответ
-
- scrollbox
- запрет нажатия
- (и ещё 1 )
-
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; А так сколько показывает?
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
ну так у вас 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);
-
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
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
FMX.Printer.Win пробовали?
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
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.
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
Вы печатаете с начала листа, но существуют так называемые "аппаратные поля" или "физические поля", в зависимости от возможностей принтера: это область, недоступная для печати, вокруг бумаги; то есть, если вы нарисуете что-то в этой области, оно не будет напечатано - эти поля зависят от принтера, и в некоторых случаях можно получить значения этих полей с помощью вызова LeftSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); TopSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
- 18 ответов
-
- fmx.printer
- печать
-
(и ещё 2 )
C тегом:
-
Можно не писать в 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.
-
Библиотеки которые вы задеплоите можно использовать, а загруженные в процессе работы приложения нельзя!
-
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');
-
Это можно
-
Если будете загружать файл в 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
-
Ну согласно перевода вы не можете запускать исполняемые файлы из папки своего приложения, и вы не можете изменять код библиотек .so из своего приложения. Оно вам зачем?
-
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;
-
Да зависит, вам скинуть код?
-
Вам нужно создать контрол на основе нативного вида как реализовано например здесь https://github.com/Zeus64/alcinoe/blob/master/source/ALFmxEdit.pas ,тогда вы сможете назначить ему идентификатор ресурса.
-
Вариантов масса, BASS, стандартный android MediaPlayer, сторонние библиотеки все зависит от того какая платформа, какой файл короткий, длинный, что вы хотите кроме воспроизведения и т.д.
-
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);