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

Сергей Сергеев

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

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

  • Посещение

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

    9

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

  1. Like
    Сергей Сергеев отреагировална Евгений Корепов в TWebBrowser показывает две клавиатуры в IOS   
    Там видимо все контролы ControlType Platform подвержены этому глюку. А Браузер  - это нативный контрол по умолчанию.
  2. Like
    Сергей Сергеев отреагировална Евгений Корепов в TWebBrowser показывает две клавиатуры в IOS   
    Я в своем сообщении указал способ решения:
    https://quality.embarcadero.com/browse/RSP-25523
    Там Dave Nottage написал причину и способ исправления:

    Прикладываю архив с исправленным FMX.Platform.iOS.pas - положите в папку с проектом и все заработает нормально (я проверил).
    P.S. Несчастный FMX.Platform.iOS.pas изуродовали в Рио бесчеловечно )) Какой то индус прошелся по нему в наркотическом угаре.
    FMX.Platform.iOS.pas.7z
  3. Like
    Сергей Сергеев отреагировална Евгений Корепов в TWebBrowser показывает две клавиатуры в IOS   
    Да, легко удалось воспроизвести проблему - набрал yandex.ru, нажал Go (открылась страница), на странице нажал ссылку "Картинки" - появилась клавиатура, которая не получает фокуса, не реагирует на тыканье.
    Среда 10.3.2, iPhone SE, iOS 12.3.1
    Возможно проблема перекликается с https://quality.embarcadero.com/browse/RSP-25523

  4. Like
    Сергей Сергеев отреагировална Евгений Корепов в TWebBrowser показывает две клавиатуры в IOS   
    Закиньте сюда тестовый проект, я проверю на своем устройстве.
  5. Like
    Сергей Сергеев отреагировална Татьяна в TWebBrowser показывает две клавиатуры в IOS   
    FMX.VirtualKeyboard.iOS.rar
  6. Like
    Сергей Сергеев отреагировална juppy в Как можно обновиться в Google Play после 1 августа   
    Всем привет!
    Чот тема заглохла, а ответа так и нет.
    У меня вот с таким манифестом публикуется:
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" android:maxSdkVersion="27" />
    А вот с таким уже нет:
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" android:maxSdkVersion="28" />
    Поет песенку про то, что надо еще и 64 бит сборку бла бла.
    Все бы итак хорошо, но проблема проявляется так, что на 64 разрядные телефоны в Плей Маркете 
    приложение не выдается в поиске.
    Как можно решить эту проблему?
    ЗЫ
    Delphi 10.3 Version 26.0.33219.4899 
     
     
     
     
     
     
  7. Like
    Сергей Сергеев отреагировална qz5 в LiveBinding на ListView и FireDAC в отдельном потоке без "заморозки" интерфейса на Андроид?   
    Понятно, я пробовал вроде похожий метод взятый отсюда: https://stackoverflow.com/questions/37830470/firedac-freezes-gui
    всё равно не удовлетворило
  8. Like
    Сергей Сергеев получил реакцию от qz5 в LiveBinding на ListView и FireDAC в отдельном потоке без "заморозки" интерфейса на Андроид?   
    я тоже не разобрался.. т.к. у меня в дизайнере создана custom item, все в Live Binding настроено.. поэтому ( для моего случая подходит - т.к. данных немного , не боле 100).. создал два одинаковых DataSet - один это результат запроса, никуда не приделан, второй ( полученный копированием в дизайнере первого) - прибайденный.  Открываю запрос - заполняется первый датасет ( это в потоке без синхронайза, т.к. на экран ничего не выводится), на экране нет еще данных. Копирую из 1го во второй - и данные на экране появляются( это уже в синхронайзе). Это позволило развязать получение данных с сервера и отображение их на экране. Понятно, что данных в два раза больше, но для меня не критично.
  9. Thanks
    Сергей Сергеев отреагировална qz5 в Как можно обновиться в Google Play после 1 августа   
    и вначале дадут Бету тем у кого есть действующая подписка
    "later this month" - переводится как "позже в этом месяце" или "после этого месяца"?
    Насколько я понимаю, всё-таки "позже в этом месяце"
    остался только непонятным вопрос - для "коммуняк" дадут бету или ждать релиза
  10. Like
    Сергей Сергеев получил реакцию от Ingalime в LiveBinding на ListView и FireDAC в отдельном потоке без "заморозки" интерфейса на Андроид?   
    я тоже не разобрался.. т.к. у меня в дизайнере создана custom item, все в Live Binding настроено.. поэтому ( для моего случая подходит - т.к. данных немного , не боле 100).. создал два одинаковых DataSet - один это результат запроса, никуда не приделан, второй ( полученный копированием в дизайнере первого) - прибайденный.  Открываю запрос - заполняется первый датасет ( это в потоке без синхронайза, т.к. на экран ничего не выводится), на экране нет еще данных. Копирую из 1го во второй - и данные на экране появляются( это уже в синхронайзе). Это позволило развязать получение данных с сервера и отображение их на экране. Понятно, что данных в два раза больше, но для меня не критично.
  11. Like
    Сергей Сергеев получил реакцию от Barbanel в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  12. Like
    Сергей Сергеев получил реакцию от Евгений Корепов в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  13. Like
    Сергей Сергеев получил реакцию от krapotkin в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  14. Thanks
    Сергей Сергеев получил реакцию от Татьяна в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  15. Like
    Сергей Сергеев получил реакцию от Ingalime в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  16. Like
    Сергей Сергеев получил реакцию от qz5 в LiveBinding на ListView и FireDAC в отдельном потоке без "заморозки" интерфейса на Андроид?   
    вот нашел свой пример, который года три назад тоже подсмотрел гдето..
     
  17. Like
    Сергей Сергеев получил реакцию от qz5 в LiveBinding на ListView и FireDAC в отдельном потоке без "заморозки" интерфейса на Андроид?   
    Synchronize - синхронизирует с основным потоком, я делал так - получал данные в потоке, без синхронизации, перегружал в видимы контролы в потоке с синхронизацией, а основной поток в это время крутил индикатор..
  18. Like
    Сергей Сергеев отреагировална qz5 в Не работает JS в Android   
    или вот так
    document.getElementById('PR_FIO').setAttribute('value','test');
  19. Like
    Сергей Сергеев отреагировална #WAMACO в Редизайн, создание стиля, существующего приложения   
    Показали бы что ли... интересно ведь...
  20. Like
    Сергей Сергеев отреагировална Barbanel в Редизайн, создание стиля, существующего приложения   
    Ну так вы спрашивайте, здесь много людей могут ответить на такие вопросы.
    Также уверен, здесь есть люди, прошедшие эти курсы ?
  21. Like
    Сергей Сергеев получил реакцию от Ingalime в Бегущая строка   
    Сделал так..
    TEdit положил внутри THorzScrollBox. Ширина TEdit больше чем Scroll, что не влезло справа, обрезалось. Спрятал ScrollBar, чтобы не портил вид.
    Положил на форму TrackBar c Value от 0 до 150.  Для значения Value добавил TFloatAnimaton с изменением Value от 0-150 по циклу и с реверсом.
    На событие OnChangeValue TrackBar повесил обработчик в котором, в зависимости от значения Track меняю у HorzscrollBox позицию ползунка ( .ScrollBy (dX,dY) - еле нашел!) 
    Результат на видео https://youtu.be/crtw-qQmjFc. Проект вечером прикреплю - может кому понадобится.
    "мозг" тут :
     
    var Form1: TForm1; currPos : integer=0; implementation {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID} {$R *.Windows.fmx MSWINDOWS} procedure TForm1.TrackBar1Change(Sender: TObject); var cnt : integer; cp :integer ; begin lbT.Text := TrackBar1.Value.ToString; cp := Round(TrackBar1.Value) ; cnt := currPos - cp; currPos := cp; HorzScrollBox1.ScrollBy(cnt,0) ; end;  
    Test.rar
  22. Like
    Сергей Сергеев получил реакцию от Maximus в XE10.2 Tokyo есть запись вебинара от 28.03.2017?   
    Поставил Токио для проверки, такого я не ожидал, скажу честно. Проект, который достаточно безболезненно двигался с Сиетла в Берлин, и количество глюков уменьшалось, просто "умер" в Токио. в Андроид 4.4.2 просто не стартует после splash экрана, до точки останова на первой же команде не доходит, segmentation fault. В Андр 5.1 , 6.0 хоть запускается. Опять пропадают картинки с кнопок ( допилили). Форма с анимацией, пока идёт соединение в потоке, не анимирует. Шрифт на этой форме искажен, с зелёной обводкой. Форма не закрывается после установки соединения. Сказать что я разочарован, не сказать ничего.
  23. Like
    Сергей Сергеев получил реакцию от Rusland в Ipv6 в datasnap   
    Проблема решена - приложение в Апп сторе.
    Опишу как решил.
    Конфигурация - Berlin 10.1 - update 2, Xcode 8.
    Datasnap сервер, использую tcpIp.
    Компоненты на клиенте TSqlConnection - для Datasnap, TIdTcpClient - использую для проверки соединения перед открытием ДатаСнар соединения, т.к. в нем не работает ТаймОут и есть вероятность "залипнуть"
    Сервер так и остался в ИП4  ( вначале хотел перевести его в ип6, но провайдер МТС ответил, что такие адреса не дает, сделал туннель с tunnelbroker.net  на тестовый сервер, но так и не пригодилось ( кстати бесплатно, но без гарантии пропускной способности)  .
    Никаких квадратных скобок , если у вас имена хостов а не ИП адреса не нужны.
    Смысл простой - у обоих компонентов нужно выставить свойства протоколов в зависимости от сети нахождения клиента.
    Вначале ставлю у обоих ИПв4, если коннект ексептиться - то ставлю ипв6 и еще раз пробую коннектится. и только второй ексепт скажет, что сети действительно нет.
    function TClientModule1.gethost(aHost : string):string; var dbxProps: TDBXDatasnapProperties; begin try TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; // ставим все в ип4 IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; IdTCPClient1.Host:=TabbedForm.Host4; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут Assert(SQLConnection1.DriverName = 'DataSnap', 'Driver must be DataSnap'); dbxProps := SQLConnection1.ConnectionData.Properties as TDBXDatasnapProperties; dbxProps.CommunicationProtocol := 'tcp/ip'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; IdTCPClient1.Disconnect; end; except on E: Exception do begin //toast ('IPv4 except '+E.Message); try IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv6; IdTCPClient1.Host:= TabbedForm.Host6P; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host6DS; TabbedForm.HostDS := TabbedForm.Host6DS; TabbedForm.HostP := TabbedForm.Host6P; IdTCPClient1.Disconnect; dbxProps.CommunicationIPVersion := 'IP_IPv6'; end; except on E: Exception do begin //не подключились result:='Не подключились'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; end; end; end; end; Тут немного есть излишества кода - думал что для Ип4 и Ип6 будут разные имена хостов, но сейчас это одно и тоже имя Сервера  который находится в Ип4 и не имеет ни выхода ни адреса в ип6.
    вызвав эту фунцию я заполняю глобальные переменные  ( ds- датаснап сервер. P- для пробного открытия ("пинг" )) на самом деле они тоже одинаковые.
    клиента проверял, как описано http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/
    т.е. макбук подключен через 3ж модем в сеть и через WiFi раздает ИпВ6 сеть и Айфон к ней  присоединен. Если приложение работает в этой внутренней ипв6 сети, то все - проблема решена - Аппле именно так и проверяет.
     
     
  24. Like
    Сергей Сергеев получил реакцию от Kitty в Ipv6 в datasnap   
    Проблема решена - приложение в Апп сторе.
    Опишу как решил.
    Конфигурация - Berlin 10.1 - update 2, Xcode 8.
    Datasnap сервер, использую tcpIp.
    Компоненты на клиенте TSqlConnection - для Datasnap, TIdTcpClient - использую для проверки соединения перед открытием ДатаСнар соединения, т.к. в нем не работает ТаймОут и есть вероятность "залипнуть"
    Сервер так и остался в ИП4  ( вначале хотел перевести его в ип6, но провайдер МТС ответил, что такие адреса не дает, сделал туннель с tunnelbroker.net  на тестовый сервер, но так и не пригодилось ( кстати бесплатно, но без гарантии пропускной способности)  .
    Никаких квадратных скобок , если у вас имена хостов а не ИП адреса не нужны.
    Смысл простой - у обоих компонентов нужно выставить свойства протоколов в зависимости от сети нахождения клиента.
    Вначале ставлю у обоих ИПв4, если коннект ексептиться - то ставлю ипв6 и еще раз пробую коннектится. и только второй ексепт скажет, что сети действительно нет.
    function TClientModule1.gethost(aHost : string):string; var dbxProps: TDBXDatasnapProperties; begin try TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; // ставим все в ип4 IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; IdTCPClient1.Host:=TabbedForm.Host4; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут Assert(SQLConnection1.DriverName = 'DataSnap', 'Driver must be DataSnap'); dbxProps := SQLConnection1.ConnectionData.Properties as TDBXDatasnapProperties; dbxProps.CommunicationProtocol := 'tcp/ip'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; IdTCPClient1.Disconnect; end; except on E: Exception do begin //toast ('IPv4 except '+E.Message); try IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv6; IdTCPClient1.Host:= TabbedForm.Host6P; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host6DS; TabbedForm.HostDS := TabbedForm.Host6DS; TabbedForm.HostP := TabbedForm.Host6P; IdTCPClient1.Disconnect; dbxProps.CommunicationIPVersion := 'IP_IPv6'; end; except on E: Exception do begin //не подключились result:='Не подключились'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; end; end; end; end; Тут немного есть излишества кода - думал что для Ип4 и Ип6 будут разные имена хостов, но сейчас это одно и тоже имя Сервера  который находится в Ип4 и не имеет ни выхода ни адреса в ип6.
    вызвав эту фунцию я заполняю глобальные переменные  ( ds- датаснап сервер. P- для пробного открытия ("пинг" )) на самом деле они тоже одинаковые.
    клиента проверял, как описано http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/
    т.е. макбук подключен через 3ж модем в сеть и через WiFi раздает ИпВ6 сеть и Айфон к ней  присоединен. Если приложение работает в этой внутренней ипв6 сети, то все - проблема решена - Аппле именно так и проверяет.
     
     
  25. Like
    Сергей Сергеев отреагировална Равиль Зарипов (ZuBy) в Ipv6 в datasnap   
    а сам хост(сервер) имеет IPv6 адрес?
    вот у меня тоже самое было, пока не выдал провайдер IPv6 адрес, я не смог опубликовать
×
×
  • Создать...