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

kami

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

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

  • Посещение

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

    41

Весь контент kami

  1. Да. И иногда очень удобно. Сразу получаешь полный набор консистентных данных (главных и зависимых), выполнив всего один запрос к базе.
  2. ADO? Работаем с первым. Потом: myADOStoredProc.Recordset := myADOStoredProc.NextRecordset(i); // здесь i - фейковая Integer переменная, она не понадобится далее И продолжаем работать с первым, но теперь там уже сидит второй Возможно, прокатит и такой финт ушами: myADOStoredProc.open; tmpQuery.Recordset:=myADOStoredProc.NextRecordset(i); // и пробуем использовать StoredProc как первый набор данных, а tmpQuery - как второй. Но не факт, что такое получится, // возможно - для правильного подтягивания рекордсета в сторонний квери потребуется сперва открыть его фейковым запросом, например /// `Select 1`
  3. Вы подменяете понятия. Озвученное - это (возможно) "самое разумное решение", если "надо сделать быстро, а дальше трава не расти" (вспоминаем картинку быстро-качественно-дорого), а никак не самое правильное. У индейцев есть как минимум одна плохая черта - они очень любят покушать ресурсы системы, особенно - посоздавать потоков. Посему система, построенная на тетеринге будет не очень масштабируемой в условиях интенсивного обмена. Небольшая ремарка - еще в первой версии появления нативных http компонентов официальные представители Embarcadero настоятельно стали рекомендовать отказаться от Indy. Самое правильное решение должно удовлетворять всем требованиям, предъявляемым к приложению, обладать хорошей способностью к модификации/устранению ошибок/надстраиваемостью функционала и быть легко масштабируемым. У тетеринга есть одно неоспоримое преимущество - это кроссплатформенность. В остальном правильность выбора его в качестве решения зависит от задачи.
  4. не соглашусь. Тетеринг основан на Indy, а это уже автоматически означает "не самое правильное".
  5. и однобокая. Далеко не всегда есть необходимость парсить гигабайтные джейсоны. Чаще (имхо) бывает нужно обработать много достаточно маленьких, но с какой-нибудь структурой а-ля "массив объектов в объекте, который в...". Или быстро сформировать свой (много своих). И вот тут картина может поменяться.
  6. В описании русским по экрану написано: " Классы-обертки над TClient|TServerSocket, работоспособны Delphi 2009 и выше "
  7. Ну, из всех вопросов - важен только первый. Остальное уже есть неоднократно. Пропиарю себя: https://github.com/kami-soft/SimpleTCPComponents
  8. Ну, чукча не читатель, чукча писатель Не посмотрел что обсуждалось ранее, полез сразу в исходники TreeView. Ну, тогда только рекурсия остается...
  9. Мне, по большому счету, без разницы что за дата Я ориентируюсь на ники участников. Я считал, что если заголовок блока - "Последние сообщения", то и информация должна быть о последних сообщениях. В приведенном мной примере в п.1 - автор "последнего сообщения" - один, а по факту, когда заходишь в тему - совсем другой. Получается, что в текущей реализации блок стоило бы назвать "обновления в темах", "обсуждаемые темы" или что-то в этом духе. Дабы не вводить в заблуждение.
  10. То, что "жирность" шрифта в этом блоке скачет как хочет - это, по большому счету, ерунда. Но вот то, что "последнее сообщение" в теме не соответствует реальному - это уже плохо. В качестве примера: 1 - скрин главной страницы после нажатия Ctrl+F5 (полное обновление, минуя кеш) 2 - скрин темы. Самое интересное - что цифра 4 на главной странице действительно соответствует количеству ответов в теме. Вот только последний - не от того пользователя.
  11. на потерю фокуса эдитом - скрыть клавиатуру. на получение фокуса - показать. как-то так.
  12. 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. Но, видимо, вам нравятся кактусы.
  13. "Приложения становятся медленнее быстрее, чем железо становится быстрее". (с) вроде как Никлаус Вирт...
  14. Поправка: это самый верный способ для FMX, вне зависимости от платформы. Емнип, у TCircle нет наследников. Ну и - для использования Release не обязательно приводить тип к истинному классу объекта. Поэтому сей код можно записать так (не проверял в IDE, но если скомпилируется - значит всё нормально): for k:=Layout1.ChildrenCount-1 downto 0 do if Layout1.Children[k] is TCircle then Layout1.Children[k].Release;
  15. As far as I know, это пока единственный способ (сам не пробовал). Буду рад узнать, если появились другие возможности.
  16. Нет, не правильнее. Объект может иметь ссылки не только в родителе (в списке его дочерних контролов), но и еще в куче мест, например - на которые он подписался (FreeNotification, к примеру) или на которые подписали его. Поэтому из родителя он исчезнет, Free - заNilит его текущую ссылку, но сам объект не удалится. Ссылка не на ту статью. В другой статье Ярослав упоминал Самый Правильный Метод - это вызвать myObject.Release. Это гарантированно удалит все ссылки на объект, присутствующие во внутренностях FMX. Понятное дело, что если объект присутствует где-то в списках (или просто отдельной переменной) в коде, созданном вами, то нужно заNilить эти ссылки (и удалить из списков) самостоятельно.
  17. я нашел вот здесь. Причем опции "в этой сессии" у меня нет Любопытно. А какой браузер?
  18. Читайте сообщения полностью. Я писал: Естественно, что выбор "уведомлять в этой сессии" будет приводить к повторному появлению окна.
  19. На кнопке "Получать в этой сессии" нажать стрелку вниз и выбрать нужный вариант, чего уж проще-то. Следует выбирать или "не хочу вообще никогда-никогда" или "да, хочу всё и всегда". Я вот получаю от этого сайта уведомления всегда. Очень удобно "уведомляться" когда меня цитируют или упоминают в переписке.
  20. kami

    TEdit and TControlType::Platform

    никак. Лень искать предыдущие темы, но их есть здесь. Вкратце: нативные контролы всегда отрисуются поверх стилизованных, поскольку рисуются самой ОС. И Z-order не поможет.
  21. SDK в среду подтянул? http://cc.embarcadero.com/Item/30680
  22. Возможно, причина как раз в этом. Восьмой XCode не гарантирует работу с 10.2, о чем честно пишет в окне Devices при подключении устройства. Требуется обновить XCode и установить hotfix для PAServer. Альтернативный вариант, который я использовал до появления hotfix: запустить XCode - Windows - Devices - выбрать подключенное устройство, нажать "+", найти сформированный ipa-файл (в первую очередь он деплоится именно в эту папку, и только потом копируется на комп с IDE и на устройство) и выбрать его. Путь, по которому лежит ipa на маке - сейчас не подскажу, завтра утром могу глянуть.
  23. Понимаю, что предложение не по теме, но все же - почему не воспользоваться дженериками?
  24. kami

    TTask опасен (Android)

    А там что? Обращение к визуальным компонентам?
×
×
  • Создать...