-
Постов
293 -
Зарегистрирован
-
Посещение
-
Победитель дней
21
Сообщения, опубликованные brunnengi
-
-
4 часа назад, OnePeople сказал:
Напишите полный код что за куски? Так быстрее будет понятно что не так
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects; type TForm1 = class(TForm) Path1: TPath; procedure FormCreate(Sender: TObject); procedure Path1MouseEnter(Sender: TObject); procedure Path1MouseLeave(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin path1.Data.Clear; path1.Data.MoveTo(TPointF.Create(0, 0)); path1.Data.LineTo(TPointF.Create(50, 0)); path1.Data.LineTo(TPointF.Create(50, 50)); end; procedure TForm1.Path1MouseEnter(Sender: TObject); begin Path1.Stroke.Thickness := 5; end; procedure TForm1.Path1MouseLeave(Sender: TObject); begin Path1.Stroke.Thickness := 1; end; end.
Полный код.
-
path1.Data.Clear;
path1.Data.MoveTo(TPointF.Create(0, 0));
path1.Data.LineTo(TPointF.Create(50, 0));
path1.Data.LineTo(TPointF.Create(50, 50)); -
Здравствуйте.
Кинул TPath. Размер 100 на 100.
Рисую путь (черный цвет на рисунке). Повесил на TPath события: OnMouseEnter и OnMouseLeave;
События срабатывают как при наведении на черную линию, так и на красную область (подкрасил чтобы было понятно).
Как создать такую ломанную что бы события мыши не срабатывали при входе в красную зону, а только при наведении на черную линии?
Ну за исключением самого очевидного варианта - замкнуть линию обратным ходом.
Может есть какое-то правильное решение? -
Здравствуйте.
Есть у кого идеи как реализовать что то типа TCircle, TRectangle или TLine тока для отрисовки кривой безье?
-
Будем отталкиваться от мысли что обычные браузеры из под винды тоже через Tap не пашут.
У вас стоит инфомат. Если у вас там просто текст и кликане по элементам не требуется, а просто листают вниз текст, то можно сохранить как картинку или pdf и положить в vertdscroll. А уже потом обрабатывать самому tap и свайпы.
Но в целом, вообще, эта работа, больше по части фронтовика, т.е. фронтенд разраба. Ему ничто не мешает сделать ветку сайта с JS кодом который запрещает выделение текста на странице, а сролл делать либо по клику какой нить круглой кнопки внизу по центру странице или обработать зажатие ЛКМ, свайп вверх или вниз и отпускание.
Однако на моей практике при работе с терминалами и инфоматами, лучше писать именно ПО, а не грузить в браузер свою страницу. А если уж горит через веб браузер, то надо саму страницу адоптировать всё таки, так как даже всё сделать как вы хотите, то тыкать портянки текста вниз и читать никто не будет. Максимум пару экранов в сторону отлистают и всё и интереса больше нет.
Но повторюсь что ПО, exe файл куда лучше пашет. Получаете с сервера разметку текста, картинки спокойно отображаете у себя. В FMX это вообще задачка три-семь дней, если речь именно о инфомате. -
В 05.03.2021 в 20:03, qz5 сказал:
Никак, потому что браузер это не компонента и под Андроид это по сути отдельный процесс, у которого нет возможности менять прозрачность
Мне только под Windows надо.
-
В 06.03.2021 в 16:36, Razmir сказал:
да, тоже думал о таком варианте, даже накидал код, но удалил его, так как такой вариант оказался не приемлем, возникает несколько проблем, например сортировка, несколько колонок и так далее, конечно это все можно решить созданием тонны кода, но зачем тогда стандартные компоненты, если их нельзя использовать?
ну не знаю про тонны кода. Не вижу где тут будет много кода.
Сортировка это дело для StringList или Dictionary и т.д. смотря чем пользуетесь.
А когда список есть или он поменялся, то просто отображаем его в чем хотим. Т.е. сначала подготавливаем данные, а потом уже отображаем.
Просто по мне как раз таки layout и элементы в них дают большую свободу, как в стиле так и в функциях. Но тут уже всё на ваше усмотрение.
-
не видя кода сказать тяжело.
Но в целом можно просто кинуть layout, в него VertScroll box, а в него уже создавать все нужные вами Items в real-time.
На моей практике это работает под виндой очень быстро. -
Здравствуйте.
Если кинуть на форму TWebBrower, а саму форму сделать прозрачной, то TWebBrowser не отображается.
Как это пофиксить? -
-
Получилось?
-
5 минут назад, slav_z сказал:
можете файл build_script.zip еще сюда вставить? там кругом "нельзя"...
-
1 минуту назад, slav_z сказал:
на моем проекте при компиляции в 10.4.1 выдало [DCC Fatal Error] XXXXXX.Core.pas(446): F2084 Internal Error: URW1237
а другой проект просто завис после показа активити... пока рано на 10.4 что-то делать...
Согласен.
Версия 10.3.3 очень стабильная. А вот эта 10.4 и 10.4.1 ещё темная лошадка. -
Я 10.4 поставил на VM, в надежде порешать вопрос с запуском на Andoid 10, но у меня в проекте используются платные компоненты срок обновления которых как раз закончился. А те что были скачены уже на ставятся на 10.4.1
Поэтому такой фикс мне прям помог. К тому же ждать официальный фикс от Embacadero смысла нет, его не будет. Так что придется ручками повозиться.
Да вы далеко продвинулись, практически поняли куда копать, у меня увы такие копании ни к чему не привели. -
Здравствуйте.
Некоторые пользователи Delphi 10.3 столкнулись с тем что даже при указании SDK 29 в манифесте проекта, при запуске скомпилированного приложения на платформе Android 10 происходило его падение.
В августе 30 числа 2020 года было дано решение как пофиксить эту проблему.
Переход на версию Delphi 10.4 не для всех является приемлемым решением, по разным причинам, к примеру у кого то платные компоненты и нет возможности обновиться до актуальных версий.
Ниже представлен перевод статьи. В конце будет ссылка на оригинал.
Приведенное здесь решение нацелено на обновление функции 'dlopen' в файле 'ICU.inc' (он включен в файл 'System.pas'). Вот шаги, необходимые для решения указанной проблемы:- Откройте проводник и перейдите в папку по следующему пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source
- Скопируйте файлы из архива "missing_source_files.zip", который приложен в посту, в папку source из пункта "1" (комментарий от переводчика: в "missing_source_files.zip" лежит папка "rtl" в которой две папки - "posix", "sys". Лично я сделал сначала backup папки rtl из папки source, что и вам советую. Затем скопировал rtl папку из "missing_source_files.zip" и вставил в папку source)
- Переходим по пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys
- Открываем файл "ICU.inc" в текстовом редакторе (пожалуйста, сделайте backup файла 'ICU.inc' для пущей безопасности). (комментарий от переводчика: орудовать в этой папке без прав админа не вариант. Поэтому я советую сначала скопировать файл "ICU.inc" куда нибудь в другое место, к примеру в папку Documents и там уже открыть его в том же Блокноте и сделав необходимые изменения сохранить файл и затем уже переместить его в C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys с заменой)
-
В текстовом редакторе надо изменить функцию InitICU:
Было вот так:Спойлерfunction InitICU: Boolean; ... begin ICUVersionNumber := -1; Result := False; {$IFDEF MACOS} HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY); HICUI18N := HICUUC; {$ELSEIF defined(LINUX)} HICUUC := OpenICU_Lib('libicuuc.so'); HICUI18N := OpenICU_Lib('libicui18n.so'); {$ELSEIF defined(ANDROID32)} HICUUC := dlopen('/system/lib/libicuuc.so', RTLD_LAZY); HICUI18N := dlopen('/system/lib/libicui18n.so', RTLD_LAZY); {$ELSE defined(ANDROID64)} HICUUC := dlopen('/system/lib64/libicuuc.so', RTLD_LAZY); HICUI18N := dlopen('/system/lib64/libicui18n.so', RTLD_LAZY); {$ENDIF} ... end;
А сделать надо что было вот так:
Спойлерfunction InitICU: Boolean; ... begin ICUVersionNumber := -1; Result := False; {$IFDEF MACOS} HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY); HICUI18N := HICUUC; {$ELSEIF defined(LINUX)} HICUUC := OpenICU_Lib('libicuuc.so'); HICUI18N := OpenICU_Lib('libicui18n.so'); {$ELSE defined(ANDROID)} HICUUC := dlopen('libicuuc.so', RTLD_LAZY); HICUI18N := dlopen('libicui18n.so', RTLD_LAZY); {$ENDIF} ... end;
-
Сохраняем сделанные изменения в файле "ICU.inc"
-
Возвращаемся в проводник и переходим в папку %USERPROFILE%
-
Скопируйте файл "build.bat" из архива "build_script.zip" , который приложен в этому посту в папку из пункта 7.
-
Запустите от имени Администратора файл "build.bat". (Он создаст папку %USERPROFILE%\build в которой будет несколько папок с файлами. Из них нам нужны будут только System.o, но об этом ниже)
-
Возвращаемся в проводник и переходим в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug
-
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\debug в папку из шага 10 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
-
Теперь переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release
-
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\release в папку из шага 12 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
-
Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug
-
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\debug в папку из шага 14 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
-
Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release
-
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\release в папку из шага 16 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
На этом всё. Автор данного перевода лично прошел по всем шагам и сделал всё как было сказано, а также протестил на приложении что уже было в PlayMarket'е но не запускалось под Android 10. Я его обновил и запустил как на Android ниже 10, так и на Android 10.
ЕСЛИ ВЫ НЕ ДОВЕРЯЕТЕ ПЕРЕВОДУ И/ИЛИ ВЫЛОЖЕННЫМ ФАЙЛАМ, ТО НИЖЕ ДАНА ССЫЛКА НА ОРИГИНАЛ СТАТЬИ
// файлы выложенные здесь, взяты с форума где оригинал статьи.
Ссылка на оригинал https://quality.embarcadero.com/browse/RSP-27218
Если нет логина, то под споллером скрины экрана с форума ссылки выше:
Отдельное спасибо пользователю Stanislau Ihnatovich за сообщение в Telegram о том что есть решение
build_script.zipmissing_source_files.zip
-
Прошу прощение. Забыл что на fgx требуется рега.
Сейчас скину сюда ниже -
-
2 минуты назад, slav_z сказал:
Да, оно. Это приложение собиралось на Delphi 10.3.3 после фикса. Фикс должен был решить проблему именно с крашем на Android 10. Я предположил что и на Android 11 тоже попрет.
Ниже ссылка на пост, там дается ссылку на форум fgx где есть руководство как сделать fix среды Delphi 10.3.3 -
Я сделал фикс на Delphi 10.3.3 для Android 10. Вот ссылка на приложение из PlatMarket. Прошу установить и отписаться пашет ли оно. Оно не требует прав и там только кнопка и поле ввода.
https://play.google.com/store/apps/details?id=ru.fgx.test11_10_3_3_with_fix_android10 -
В 09.09.2020 в 00:55, slav_z сказал:
После обновления до Android 11 на телефоне (Pixel2) перестали запускаться программы созданные на Delphi 10.3.3. Ну здорово!
А под Android 10 запускались?
-
Есть фикс для этой проблемы.
Можете почитать на другом форуме https://forum.fgx-native.com/topic/530-delphi-1033-fix-для-sdk-29-android-10/
Решение рабочее, лично проверял. -
В 15.06.2017 в 09:15, Равиль Зарипов (ZuBy) сказал:
во первых: синхронизация сделана не правильно
во вторых: в примерах студии есть демка с отображением индикатора загрузки
в третьих: создание TIdHTTP (лучше заменить на THTTPClient) нужно делать в потоке
код на коленке, без TThread
// uses System.Threading TTask.Run( procedure var aHTPP: THTTPClient; aStream: TStringStream; aResult: String; begin aResult := ''; aHTPP := THTTPClient.Create; aStream := TStringStream.Create('', TEncoding.UTF8); try aHTTP.Get('урл://', aStream); aResult := aStream.DataString; finally FreeAndNil(aHTPP); FreeAndNil(aStream); end; TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Text := aResult; end) end)
Подскажите пожалуйста, если нет связи или запрос шел слишком долго, то как получить информацию об этом?
Сейчас при отключенном интернете, вллбще ни каких сообщений не выходит и код в секции "TThread.Synchronize" не отрабатывает?
-
Здравствуйте.
Как скачивать с сжатый трафик через GZip по средством NetHTTPClient я знаю. А как отправить данные на сервер в жатом GZip ввиде с помощью NetHTTPClient?
-
Заказ исполнен, спасибо большое. Тему можно закрывать.
[TPath] Как закрыть путь?
в TPath
Опубликовано
Нет, не идет.
ClosePath замыкает последнюю точку с начальной, формирую замкнутую фигуру.