Перейти к содержанию

Рекомендуемые сообщения

Доброго времени суток!

Для тех, кто не может опубликовать приложение в AppStore

Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!

Что нужно для успешной публикации:

  1. Получить у Вашего хостера IPV6 адрес (примерно такой вид имеет ipv6 адрес) 
    2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d

     

  2. Если нет root-доступа к серверу, то можно воспользоваться сервисом https://cloudflare.com
  3. Если есть root-доступ, то ознакомьтесь с инструкцией

Мы рассмотрим самый частый вариант, без root-доступа, через сервис CloudFlare

  • Не буду расписывать регистрацию, там все просто
  • Нажимаем +Add Site, вписываем адрес Вашего сайта (домен), как только система проверит конфигурацию Вашего текущего DNS, она предложит изменить NS-сервера
  • В кабинете хостера Вам нужно будет сменить NS-сервара, на те которые выдал CloudFlare 
  • В CloudFlare -> раздел DNS
  1. Нужно будет дописать запись типа AAAA с Вашим ipv6 адресом 2016-10-26_15-25-40.png
  2. Все поддомены которые есть также прописать через запись типа CNAME 2016-10-26_15-25-40.png
  3. Чтобы работало FTP нужно отключить HTTP Proxy (CDN) 2016-10-26_15-25-03.png
    • Теперь FTP протокол будет доступен по IPv4, не по домену

Ждём обновления DNS и проверяем правильность конфигурации

Результат примерно такой должен быть

2016-10-26_15-36-52.png

Что нужно сделать в Delphi / C++:

  • Выкидываем TidHTTP (Indy) и переписываем на TNetHTTPClient

Приложу пример запроса и обработки ответов, учтен баг с получением контента на IOS

TmyAPI.zip или https://github.com/rzaripov1990/FMX.HTTP.Request

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, ZuBy сказал:

Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!

Это неверно: Apple не требует поддержки IPv6 от сервера - она лишь обязывает приложение уметь работать в IPv6-сети, которая, в свою очередь, может взаимодействовать с любыми другими, в том числе с Интернет, где IPv4 никто пока не отменял; официальная документация, собственно, и описывает настройку такого окружения. Сделано это, насколько я понимаю, с прицелом на светлое прекрасное будущее, когда весь Интернет будет понимать IPv6 (а это всё оборудование, включая клиентское, и всё сетевое ПО), что, само-собой, случится не так скоро.

Касательно TIdHTTP. Этот компонент умеет работать с IPv6 - нужно лишь указать это явно, т. к. по умолчанию используется 4-я версия: подробности можно узнать здесь или здесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, Сергей Пьянков сказал:

Это неверно: Apple не требует поддержки IPv6 от сервера - она лишь обязывает приложение уметь работать в IPv6-сети, которая, в свою очередь, может взаимодействовать с любыми другими, в том числе с Интернет, где IPv4 никто пока не отменял; официальная документация, собственно, и описывает настройку такого окружения. Сделано это, насколько я понимаю, с прицелом на светлое прекрасное будущее, когда весь Интернет будет понимать IPv6 (а это всё оборудование, включая клиентское, и всё сетевое ПО), что, само-собой, случится не так скоро

Те кто присутствуют в чате телеграм, могли слышать запись разговора с тех. поддержкой apple. Которые при тесте приложения не увидели контента. Ни один запрос не прошел (скорей всего IPv6-IPv4). Поэтому при публикации все время идут отказы.

Они даже провели тест не через сеть построенной Apple, а через мобильных операторов. Результат одинаковый, контента не было

17 минут назад, Сергей Пьянков сказал:

Касательно TIdHTTP. Этот компонент умеет работать с IPv6 - нужно лишь указать это явно, т. к. по умолчанию используется 4-я версия: подробности можно узнать здесь или здесь.

я проверил эту теорию...

минусы:

1) если работать с сервером IPv4-IPv4 нужно сначала узнать, в какой сети ты находишься и от этого уже решать ставить [] или нет.

2) Если сервер имеет SSL, то на андроиде начиная с 6.0 не работает TIdHTTP (не помню помогает ли, включение отдельно скачанных ssl библиотек в проект)

Так для чего все эти операции, если можно использовать TNetHTTPClient который рекомендован Embarcadero и работает без этих минусов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, ZuBy сказал:

Которые при тесте приложения не увидели контента. Ни один запрос не прошел (скорей всего IPv6-IPv4).

Я ничего не знаю про конкретно этот случай - проблема могла крыться в коде самого приложения, в коде использованных компонентов (в том числе Indy) или в оборудовании - я лишь продолжаю настаивать на необязательности поддержки IPv6 сервером, что является принципиальным моментом, ибо столкнувшиеся с этой темой впервые и прочитавшие начальное сообщение могут принять написанное за истину.

33 минуты назад, ZuBy сказал:

Поэтому при публикации все время идут отказы.

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

43 минуты назад, ZuBy сказал:

Так для чего все эти операции, если можно использовать TNetHTTPClient который рекомендован Embarcadero и работает без этих минусов?

Ни в коей мере не призываю использовать лишь Indy и срочно отказываться от премерзких альтернатив, аминь. Если проект только создаётся, то TNetHTTPClient - вероятнее всего лучший выбор; если кода с Indy уже много, то каждый пусть сам оценит трудозатраты на его доработку к IPv6 - вполне может случиться, что полное переписывание будет невыгодным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Сергей Пьянков сказал:

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

Сергей, тоже являюсь "жертвой" таких обстоятельств. Да, согласен, не обязательно приложение будет отклонено контролем. Бывает, проходит с первого раза. Если не проходит сразу, проходит на второй или третий. Ничего не меняю, просто повторно возвращаю на проверку...

Для меня Apple тоже проводили тестирование не только в рабочей сети, но и через мобильных операторов. Показывали результаты...

Но в целом системы такого поведения не уловил. На Андроиде все работает прекрасно.

Нисколько не агитирую за какое-либо решение... Каждый вибирает для себя. Просто делюсь опытом.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 минут назад, Сергей Пьянков сказал:

Я ничего не знаю про конкретно этот случай - проблема могла крыться в коде самого приложения, в коде использованных компонентов (в том числе Indy) или в оборудовании - я лишь продолжаю настаивать на необязательности поддержки IPv6 сервером, что является принципиальным моментом, ибо столкнувшиеся с этой темой впервые и прочитавшие начальное сообщение могут принять написанное за истину.

проблемы в коде нету, тестировали ребята по всему СНГ (IPv4-IPv4) (хотите потестить в личку напишите)

16 минут назад, Сергей Пьянков сказал:

Отказы по какому-то одному приложению или по всем, где есть сетевой обмен? Подозреваю, что первый вариант, иначе бы на форумах был вал вопросов и жалоб по таким отказам. Мой личный опыт подобной проблемы не подтверждает: IPv4-сервер спокойно проходит проверку Apple (правда речь о TCP, но это ничего не меняет).

Такие вопросы на форуме есть и не только на форуме

вот и вот еще

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну и как результат, написанного выше

2016-10-27_12-05-17.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мое приложение Apple также отклонила с тем же сообщением о IPv6. 

Но насколько я понимаю, CloudFlare нужно использовать для своего хостинга, а как быть с Google?

У меня приложение использует сервис Google, а все сервисы Google вроде как поддерживают IPv6 c 2012 года.

Поэтому не пойму, в чем здесь ошибка. Использую TIdHTTP. Или нужно использовать TNetHTTPClient?

 

P.S. И, если кто знает, как вообще проверить самому, решена ли в приложении проблема с IPv6, без ожидания ответа Apple каждый раз?

Можно на Windows или Android? А то в инструкции Apple нужно подключить макбук не через WiFi, а у меня в макбуке нет сетевого порта... и провайдер к тому же поддерживает только IPv4...

Отредактировал Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, Alex7wrt сказал:

Поэтому не пойму, в чем здесь ошибка. Использую TIdHTTP. Или нужно использовать TNetHTTPClient?

я бы даже сказал обязательно использовать T(Net)HTTPClient

Если работать с IPv6 в TIdHTTP, нужно хост указывать в квадратных скобках, вы наверное этого не делаете?

11 часов назад, Alex7wrt сказал:

P.S. И, если кто знает, как вообще проверить самому, решена ли в приложении проблема с IPv6, без ожидания ответа Apple каждый раз?

Скорей всего построить такую сеть. от провайдера нужен IPv6 и роутер перевести в режим работы по IPv6 (если такое имеется).

Хотя тот же TestFlight (тестовый сервис AppStore), ничего об этой ошибке не говорит и это печально конечно.

Узнать об ошибке можно только при публикации

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, Alex7wrt сказал:

А при использовании  T(Net)HTTPClient нужны какие-либо действия для указания IPv6 или нет?

нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что то я так  и не понял - обязательно или нет серверу иметь адрес ipv6? 

сделал, как описано выше, с помощью макбук подключенному в 3ж сеть (ipv4) , расшаренную вай-фай подсеть dns64/nat64, в нее смог приконнектится только Iphone ( два китайских смарта повисли при подключении на словах - получение ИП адреса, один подключается, получает ип6 адрес, но без инета)

ipv6.thumb.jpg.7746afb0968c6afacf01753de0d405c9.jpg

внизу, если раскрыть 2 адреса в разделе ipv6 есть два длинных ipv6 адреса

не очень понимаю - в какой сети iphon -  6 или 4? 

мой сайт имеющий ipv4 адрес ( по имени хоста) TWebbrowser открывает, в то же время попытка открыть connection ( TIdTcpClient) ipv4 по имени или ип адресу не работает.. exception

поставил программу пинг - google.com - показывает его ipv6 адрес.

как приконнектится к хосту с ИП4 только?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у клиента хостинг не имеет Ipv6 поддержки, что делать в этом случае?

Переходить на другой хостинг?

Сделать какой - нибудь редирект с нового хостинга на старый?

 

Спасибо. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, ENERGY сказал:

Если у клиента хостинг не имеет Ipv6 поддержки, что делать в этом случае?

Переходить на другой хостинг?

Сделать какой - нибудь редирект с нового хостинга на старый?

 

Спасибо. 

перейти на другой хостинг, это самое простое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Martifan
      здравствуйте, я пытаюсь сделать push уведомление на iOS делаю следующим образом:
      unit Unit1; interface uses   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,   System.PushNotification, FMX.Controls.Presentation, FMX.StdCtrls,   FMX.PushNotification.iOS, FMX.ScrollBox, FMX.Memo; type   TForm1 = class(TForm)     Button1: TButton;     Memo1: TMemo;     procedure Button1Click(Sender: TObject);   private     { Private declarations }     FDeviceID: string;     FDeviceToken: string;     FPushService: TPushService;     FPushServiceConnection: TPushServiceConnection;     procedure OnReceiveNotificationEvent(Sender: TObject;        const ANotification: TPushServiceNotification);     procedure OnServiceConnectionChange(Sender: TObject;        AChange: TPushService.TChanges);   public     { Public declarations }   end; var   Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin   FPushService := Nil;   FPushServiceConnection := Nil;   FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);   if Assigned(FPushService) then     begin       FPushServiceConnection := TPushServiceConnection.Create(FPushService);       FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;       FPushServiceConnection.OnChange := OnServiceConnectionChange;       FPushServiceConnection.Active := True;     end else     Begin       ShowMessage('False');     End; end; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject;   const ANotification: TPushServiceNotification); begin //  ShowMessage('OnReceiveNotificationEvent'); end; procedure TForm1.OnServiceConnectionChange(Sender: TObject;   AChange: TPushService.TChanges); begin   Memo1.Lines.Clear;   if (TPushService.TChange.DeviceToken in AChange) and        Assigned(FPushServiceConnection) then      begin        FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];        FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];        // save token and ID to  remote db here        Memo1.Lines.Add('DeviceID: '+FDeviceID);        Memo1.Lines.Add('DeviceToken: '+FDeviceToken);      end; end; end. все проходит нормально но получаю значение FDeviceID а значение FDeviceToken пустой все сертификаты установлены правильно и соответственно указана все правильно как я говорил перемен FDeviceID получает значение а
      FDeviceToken возвращается пустым на форумах тоже видел такую проблему но может кто то решал эту проблему?
      поделитесь пожалуйста
      заранее спасибо 
    • От Эрик Шакиров
      Подскажите пожалуйста, возможно ли сделать выбор файла в IOS. Например, также как в Android 
    • От Eric Myval
      Сегодня начал разбираться с компиляцией под Mac и под iOS и сразу столкнулся с проблемами. Использую Rad Studio 10.3.3, Mac Mini 10.15.1, Windows 10. PAServer20.0, Xcode 11.2.1 Выдает следующую ошибку на всех платформах, как iOS, так и iOS Simulator, macOS32 - 
      Unable to launch process on '192.168.8.182' using the parameters from the 'MacMini' profile. The following error was returned: 'Unable to create process: /Applications/PAServer-20.0.app/Contents/MacOS/dbkosx_26_0 Получается собрать проект только в macOS64, но! Приложения запускаются, работают, но после их закрытия в отладке, пишет, что ПО устаревшие и кидает ссылку на переход с 32 на 64. Но как так? Оно же собрано на 64х))) В общем, полный тупик и убил весь день. Есть идеи? 
    • От Светлана
      Ну всё в принципе как всегда, либо я барашка, либо лыжи не едут)
      А всё просто - я хочу, чтобы пока данные с сервера загружались по клику кнопки, пользователю элементарно был отклик в виде крутящейся какой нибудь фигни и он видел, что процесс идёт и что прога не зависла и никуда лишний раз не тыкал.
      Пока что для тестов сделала элементарно кнопку Update (speedbutton с image), данные элементарно грузятся и отображаются в GridPanel, а поверх него, чтоб пользователь и не смог куда либо тыкнуть, замостила панелькой с Image, вращаемой по таймеру (всё это дело наверху Visible:=false). И когда клацаем по кнопке Update, то панельку сверху грида делаю отображаемой и запускаю таймер, потом этот же обработчик/процедура грузит данные, а по окончанию останавливаем таймер и скрываем полупрозрачну, еще кстати, панельку. Аля вот так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin //отображаем лого загрузки P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; //с запуском таймера GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется //и скрывае лого загрузки Timer_load_rotate.Enabled := false; //уже в обратном порядке P_showLoad.Visible := false; end; иии... ни черта не происходит как я хочу(
      Это лого вообще в итоге не отображается, а если убрать его скрытие, то оно у нас отобразится уже только тогда, когда всё загрузится. Логика мне стала подсказывать, что следовало его как то отобразить выполнив в параллельном асинхронном потоке аля так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin TThread.Queue(TThread.Current, //TThread.Queue TThread.Synchronize ForceQueue procedure() begin P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; end); GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется end; И опять оно отображается только после того, как всё загрузится и проработает вся процедура. И уже чего только не пробовала и Synchronize и ForceQueue; и через TTask.Run и |task := TTask.Create(procedure () ... и т.д.| ничего не подходит, вот хоть убейся это всё дело будет отображаться только после полной отработки процедуры клика. Может я не в том направлении вообще рою и это как то по другому делается? Может я еще пока отлаживаю на Win32, а не всё на android, а там вот пара вариантов и норм на нём работают? Но чтот я никак не могу понять, что к чему... должно же быть как то просто, а я чтот никак не могу понять как(
    • От Сергей Сергеев
      Обнаружил глюк, как исправить - не нашел, по вот этому обсуждению на Embe - похоже он с 15 года..
      https://forums.embarcadero.com/thread.jspa?threadID=116534
      Выглядит так, взял из примера WebBrowser, прописал в дизайне адрес, к примеру Яндекс,
      и запускаю на Ифоне 5 - нажимаю Гоу, при клике на любой ссылке ( например на большой надписи Яндекс в центре), вдруг откдуда не возьмись - появляется клава - английская,
       
       
       
      которая Done, ничего никуда не вводит, и не прячется от слова Никак ( с экрана)
      дальше - тапаем в поле ввода поиска, вылазит похоже еще одна, уже похоже ФМХ клава - со словом Готово, которая работает..
      переключается и по готово - прячется.
       
       
       
       
      но после того как Готово спряталась - эта ( от Сафари чтоли ) остается, по Доне не скрывается, и при кликах по ссылкам - прячется и опять вылазит..
       
      сделал то что написано в обсуждении, но это прячется только второй ( Доне)ТулБар - клавы две так и висят..
      Ничего по теме не нашел, похоже глюк старый, и возможно уже решенный..
      пс.  клавиатуры не две все таки, два тул бара, повесил на он хайд, он Шоу обработчики, происходит следующее, по Готово - прячется клава и сразу опять показывается уже без "готово" - с "доне".. она же сразу показывается при клике по ссылке..
       
    • От Сергей Сергеев
      Приветствую всех!
      Сделал приложение для Андроид, делал свой стиль в BSD  - освоил добавление ( копированием ) панелей и чекбоксов со своими картинками.
      В принципе, все получилось, на разным смартфонах работатет - все картинки на месте.
      Но при попытке повторить стиль для Ios обнаружилась проблема, стиль для iPhone 5 ( scale 2) - все ок, но  Iphone 6+ ( scale 3) - все картинки из стиля на панельках и чек боксах берутся со смещением ( примерно 30%).
      Т.е. указана координата левого верхнего угла  в файле скажем 300 по Х, берется 400 . н у итак далее.. натыкался на тексты, что для IOS - разрешение 3х - поддерживают не все стили. Может в этом дело? никто не сталкивался?
      Попутно обнаружил, что при редактировании стиля IOS в BSD - не создаются новые обьекты в файле .style , при этом, при редактировании стиля Андроид - все нормально создается. 
      вав проверил ! и в Андроид перестало сохряняться в style файле! но полгода назад в 10.3 - все работала.. стиль то для андроид я именно так сделал ( примерно в феврале)
      Например:
      в BSD делаю - File - New - New Ios Style

      делаю копию обьекта Panel

      копия создается Panel_copy, в файле vsf - сохраняется, но при сохранении стиля для FMX, ( Save as .style) - обьекта в файле нет, причем как Panel, так и Panel_Copy

       
      если проделать, так же в стиле для Андроид Лайт, то обьект добавляется в конец файла..  ( Уже не делается и для Андроида)
        а здесь нет - последний icon.. и поиском не находится и если загрузить в BookStyle - то стиля Panel_Copy нет.

      про "сьезжающие"  картинке в стиле для Ios 3x - опишу подробнее позже, решение не найдено пока..
       
    • От Евгений Корепов
      Подскажите, реально ли в текущий момент сделать рекламу в iOS приложениях? 
      Документация эмбаркадеры, вроде и современная (http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_the_AdMob_Service в примеру), но пометка внизу страниц "This page was last edited on 28 September 2015, at 15:17." дает понять что они забили на этот раздел документации 4 года назад, и с выходом Rio тупо скопипастили, чтоб было. Издевательство какое то (
       
      P.S. В документации идет речь о iAd, но согласно Apple:
      About the iAd App Network Shutdown : As of December 31, 2016, the iAd App Network is no longer available.
       
       
    • От slav_z
      Показать/скрыть сенсорную клавиатуру Windows.
      unit Lib.Keyboard; interface uses Winapi.Windows, Winapi.ActiveX, System.Win.ComObj, FMX.Forms, FMX.Platform.Win; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); implementation const CLSID_UIHostNoLaunch: TGUID = '{4CE576FA-83DC-4F88-951C-9D0782B4E376}'; type ITipInvocation = interface ['{37C994E7-432B-4834-A2F7-DCE1F13B834B}'] procedure Toggle(WND: HWND); safecall; end; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); var TipInvocation: ITipInvocation; begin OleCheck(CoCreateInstance( CLSID_UIHostNoLaunch,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, ITipInvocation,TipInvocation)); TipInvocation.Toggle(FormToHWND(Form)); end; end. C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe - Сенсорная клавиатура Windows. В Windows 10 простой запуск уже не работает.
      Кто как делал? Очень интересны примеры кода.
       
    • От genakust
      добрый день,
      у меня есть несколько TabItems in FMX- TabControl (как на вложенной картинке) один из которых заполняется динамически:
      FindAndDeleteItemContext; frameIndex:= GetFrameIndexByText(item); {factory} FFramesFactory:= TFramesFactory.DefaultFactory; {Index-> Frame} aktFrame:= FFramesFactory.GetFrame(frameIndex); {add to layout} aktFrame.Parent:= LyContent; aktFrame.Align:= TAlignLayout.Client; LyContent.AddObject(aktFrame); {open tab} ActionToContentTabExecute(Sender); я пытаюсь найти фрейм и удалить его только из TabItem но не как Object обследующим способом:
      procedure Txxx.FindAndDeleteItemContext; var   i: Integer; begin   for i:= 0 to Pred(LyContent.ComponentCount) do   begin     if LyContent.Controls.Items[i] is TFrame then       LyContent.RemoveObject(i);   end; end но почему- то LyContent.ComponentCount всегда равен 0.
      Подскажите пожалуйста что неправильно?
      Спасибо.

    • От genakust
      Здравствуйте,
      я создал свой ListBoxItem (FMX) который выглядит следующим образом:

      затем я добавил Items динамически в ListBox и получилось следующее:

      Когда я запускаю программу на Windows 10 и выбираю мышкой Item он селектируется, а если запускаю на Андроид- таблете, то я не могу выбрать (селектировать) Item.
      Подскажите пожалуйста, какие могут быть причины длы такого поведения.
      Заранее спасибо.
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...