kami

Пользователи
  • Публикации

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

  • Посещение

  • Days Won

    15

Все публикации пользователя kami

  1. То, что "жирность" шрифта в этом блоке скачет как хочет - это, по большому счету, ерунда. Но вот то, что "последнее сообщение" в теме не соответствует реальному - это уже плохо. В качестве примера: 1 - скрин главной страницы после нажатия Ctrl+F5 (полное обновление, минуя кеш) 2 - скрин темы. Самое интересное - что цифра 4 на главной странице действительно соответствует количеству ответов в теме. Вот только последний - не от того пользователя.
  2. Мне, по большому счету, без разницы что за дата Я ориентируюсь на ники участников. Я считал, что если заголовок блока - "Последние сообщения", то и информация должна быть о последних сообщениях. В приведенном мной примере в п.1 - автор "последнего сообщения" - один, а по факту, когда заходишь в тему - совсем другой. Получается, что в текущей реализации блок стоило бы назвать "обновления в темах", "обсуждаемые темы" или что-то в этом духе. Дабы не вводить в заблуждение.
  3. на потерю фокуса эдитом - скрыть клавиатуру. на получение фокуса - показать. как-то так.
  4. Добрый день всем! Начал доставать Hint от компилятора под iOS: Конфигурация: RAD 10.1 Berlin upd1 (Prof), XCode 8.0 (8A218a), OSX El Capitan 10.11.6 В SDK этой папке соответствует Path: $(SDKROOT)/System/Library/PrivateFrameworks | FrameworkName: UIFoundation Проверил - действительно такой папки нет на диске. Обновление локального кеша, удаление и установка заново SDK (32бит iOS10) не помогает. При этом в SDK для iOS8.1 - 9.2 такая папка есть. И под симулятор iOS10 такая папка тоже есть. Не то чтобы оно сильно мешало, приложение вроде компилируется и запускается, но не люблю сообщения от компилятора и хотелось бы от него избавиться (это единственный хинт на текущий момент). Что можно сделать? Что это вообще за фреймворк UIFoundation и насколько он нужен для работы?
  5. if (TabControl1.ActiveTab = TabItem1) then if (FFrame <> nil) then begin FFrame.Parent := nil; FFrame.DisposeOf; FFrame := nil; end; вместо этого написать: if (TabControl1.ActiveTab = TabItem1) then if Assigned(FFrame) then begin FFrame.Release; FFrame := nil; end; Этого будет достаточно, чтобы завершились все обработчики событий и в то же время не было новых обращений к этому фрейму. Кстати, вам уже рекомендовалось использовать именно Release. Но, видимо, вам нравятся кактусы.
  6. "Приложения становятся медленнее быстрее, чем железо становится быстрее". (с) вроде как Никлаус Вирт...
  7. Поправка: это самый верный способ для FMX, вне зависимости от платформы. Емнип, у TCircle нет наследников. Ну и - для использования Release не обязательно приводить тип к истинному классу объекта. Поэтому сей код можно записать так (не проверял в IDE, но если скомпилируется - значит всё нормально): for k:=Layout1.ChildrenCount-1 downto 0 do if Layout1.Children[k] is TCircle then Layout1.Children[k].Release;
  8. As far as I know, это пока единственный способ (сам не пробовал). Буду рад узнать, если появились другие возможности.
  9. Нет, не правильнее. Объект может иметь ссылки не только в родителе (в списке его дочерних контролов), но и еще в куче мест, например - на которые он подписался (FreeNotification, к примеру) или на которые подписали его. Поэтому из родителя он исчезнет, Free - заNilит его текущую ссылку, но сам объект не удалится. Ссылка не на ту статью. В другой статье Ярослав упоминал Самый Правильный Метод - это вызвать myObject.Release. Это гарантированно удалит все ссылки на объект, присутствующие во внутренностях FMX. Понятное дело, что если объект присутствует где-то в списках (или просто отдельной переменной) в коде, созданном вами, то нужно заNilить эти ссылки (и удалить из списков) самостоятельно.
  10. я нашел вот здесь. Причем опции "в этой сессии" у меня нет Любопытно. А какой браузер?
  11. Читайте сообщения полностью. Я писал: Естественно, что выбор "уведомлять в этой сессии" будет приводить к повторному появлению окна.
  12. На кнопке "Получать в этой сессии" нажать стрелку вниз и выбрать нужный вариант, чего уж проще-то. Следует выбирать или "не хочу вообще никогда-никогда" или "да, хочу всё и всегда". Я вот получаю от этого сайта уведомления всегда. Очень удобно "уведомляться" когда меня цитируют или упоминают в переписке.
  13. никак. Лень искать предыдущие темы, но их есть здесь. Вкратце: нативные контролы всегда отрисуются поверх стилизованных, поскольку рисуются самой ОС. И Z-order не поможет.
  14. SDK в среду подтянул? http://cc.embarcadero.com/Item/30680
  15. Возможно, причина как раз в этом. Восьмой XCode не гарантирует работу с 10.2, о чем честно пишет в окне Devices при подключении устройства. Требуется обновить XCode и установить hotfix для PAServer. Альтернативный вариант, который я использовал до появления hotfix: запустить XCode - Windows - Devices - выбрать подключенное устройство, нажать "+", найти сформированный ipa-файл (в первую очередь он деплоится именно в эту папку, и только потом копируется на комп с IDE и на устройство) и выбрать его. Путь, по которому лежит ipa на маке - сейчас не подскажу, завтра утром могу глянуть.
  16. Понимаю, что предложение не по теме, но все же - почему не воспользоваться дженериками?
  17. А там что? Обращение к визуальным компонентам?
  18. Ох уж эти любители "удалить себя из себя". dim - обрати внимание на тему
  19. а если сделать не при запуске, а (временно) по нажатию на какую-нибудь кнопку, чтобы до перехода по URL WB 100% полностью инициализировался, отобразился и так далее.
  20. Нет, не пойдет. Потому что DoOnCloseInfo по прежнему вызывается из внутренностей TButton.Click. Если ваш код отрабатывает на Windows - это ваша недоработка, а не показатель правильности. Причины я изложил выше. А на мобильных платформах с фреймом визуально просто ничего не произойдет. Причины опять-таки изложил выше. И в таком виде тоже не пойдет. Потому что Synchronize и Queue, будучи вызванными из главного потока, моментально передают управление в метод, а не дожидаются очередного витка выборки сообщений у Application. В таком виде вы просто добавляете несколько вложенных вызовов, увеличивая занятость стека. Не меняя при этом концепцию работы.
  21. так не пойдет На Windows - получим тот же AV, ибо по нажатию на кнопку вызовется DoOnCloseInfo, по завершению которой фрейма и кнопки на нем уже не будет. А во внутренностях TControl по завершению вызова OnClick еще идет обращение к себе. На мобильной платформе - ничего не случится, потому что ARC и фрейм еще присутствует у своего родителя, простое за nil-ивание ссылки ничего не даст. Правильный выход - непосредственно в обработчике кнопки сделать fr.Release;
  22. Да, было. Более того - с подобным борюсь сейчас, переделывая логику уже работающего приложения :). Правда, баги не "непонятные", а вполне себе адекватные, видимо из-за того, что изначальная архитектура была неплоха. Такая ситуация говорит о том, что не продумана логика взаимодействия этих частей. И очень хорошо, что это вылезло до релиза.
  23. Я искал (перед тем, как написать предыдущее сообщение) - не нашел. Посему - мой предыдущий пост написан именно на основе собственных умозаключений. В частности: в Windows сообщения отправляются окну, которое описывается хендлом этого окна. Каждый хендл принадлежит какому-нибудь конкретному процессу и потоку. Поэтому Windows может и переключает контекст потока для выборки сообщения оконной процедурой. В FMX сообщения отправляются объекту. Объект - существо интернациональное, оно существует без привязки к какому-нибудь потоку, а некоторые - так вообще не могут существовать в пределах одного (TThread). Собственно, именно поэтому я и пришел к выводу, что раз нельзя определить, в каком потоке сообщение должно быть принято объектом, значит всё происходит именно в текущем.
  24. SendMessage через механизмы FMX !=SendMessage через механизмы Windows. Да, в Windows получатель обработает сообщение в том потоке, в котором принявшее сообщение окно было создано. Боюсь, что SendMessage из FMX не учитывает это, так что прием сообщения осуществляется в контексте вызывающего потока. Со всеми вытекающими.
  25. первое вычеркнуть. Остановилось в развитии, команда разогнана, перспектив нет.