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

zairkz

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

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

  • Посещение

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

    12

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

  1. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в RAD 11 на подходе?   
    вот это классно
     хотя уже zairkz решил это, всего то нужно было ставить маркер(каждый) в центр карты. тогда AV не выходит
    а это я так понимаю косяк на IOS'ах исправили, когда включен режим модема
     
  2. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в RAD 11 на подходе?   
    это просто мега фейл, и как теперь их ошибки устранять... править каждый раз сорцы???
  3. Like
    zairkz отреагировална AndroidHalfNoob в Добавление контакта в телефонную книгу   
    Может кому пригодится. Функцию нашел на  просторах интернета. Адаптировал по себя. На форме 5 edit-ов. Для фамилии, имени, отчества, номера телефона и электронной почты.
    Подключаем модули.
    В проекте Options--->Uses Permissions ставим true в разделе Write contacts.
    Функция добавления контакта
    На кнопку привязываем функцию
     
  4. Like
    zairkz отреагировална krapotkin в На сколько оптимально решение с TTabControl?   
    у меня мобильное приложение - несколько форм, практически на всех TabControl.
    классические паттерны:
    список - детали
    логин - регистрация
    настройка - форма настройки параметра
    по 2-4 закладки, по десятку-два контролов соответственно
    работает абсолютно без нареканий
     
    зависит от сценария использования
    если нельзя окно сделать модальным, тогда да, есть смысл в одной форме
    но все-таки вместо Layout я бы выбрал TFrame
  5. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в На сколько оптимально решение с TTabControl?   
    я для себя решил давно, TTabContol го*но
  6. Like
    zairkz отреагировална krapotkin в RAD 11 на подходе?   
    вот и ответ
    "Embarcadero tools are built for elite developers who build and maintain the world’s most critical applications. "
    Элитность!
  7. Like
    zairkz отреагировална krapotkin в Отображение в виде плиток   
    ну, ZuBy у нас признанный эксперт по таким делам, возможно, лучше поступить как он советует
    а у скролла - все просто:
    у нас есть компоненты (проще всего TLayout, и все нужное в него покидать) с шириной и высотой, у нас есть размер окна
    высчитываем сколько влазит компонентов в рядок и в цикле каждому Layout просто присваиваем Parent:=ScrollBox1, Position.X и Position.Y рассчитываем исходя их номера ряда и номера в ряду
    scroll вроде сам соображает, в какую сторону он может двигаться...
  8. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Это еще такой средненький ресторанчик)), это ж Астана.
  9. Like
    zairkz отреагировална AndroidHalfNoob в Отображение в виде плиток   
    ZuBy ни чего себе у вас жаренный Лагман в ресторанах стоит:) У нас 60р за порцию в 250 грамм. Грубо говоря 300-350 тенге  
  10. Like
    zairkz отреагировална Kitty в RAD 11 на подходе?   
    Нынешний инсталлятор эбраркадеро для русской локали это глюк. В качестве теста Win 7. Ждите фикс. Это уже признало все русское сообщество тестеров...
  11. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Ну так начиналось это все с твоей бредовой идеи))
  12. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Я не знаю что там в недрах в ListView, но по скорости скролла данная реализация поспорит с многими нативными приложениями, авторы ListView молодцы, а реализация колонок Zuby как всегда на высоте!))
    Тест (более 2000 элементов, с динамической подгрузкой картинок)
  13. Like
    zairkz получил реакцию от Rusland в Отображение в виде плиток   
    Я не знаю что там в недрах в ListView, но по скорости скролла данная реализация поспорит с многими нативными приложениями, авторы ListView молодцы, а реализация колонок Zuby как всегда на высоте!))
    Тест (более 2000 элементов, с динамической подгрузкой картинок)
  14. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Предыстория была такая:
    Изначально такие плитки были сделаны на Button'ах (стиль) и TPresentedScrollBox. Но как только пошло дело в тест основательный идею тут же выбросил. 120+ элементов выключили телефон (samsung ace2 duos) при отрисовке, точней при динамической загрузке картинок. да и в целом вся эта беда работает медленней чем реализация на TListView
    Я не художник, но смысл вроде передал
    Пример: У нас есть 12 элементов,и 4 колонки
    Можно в LV отрисовывать дополнительные "контролы" и поместить в один реальный айтем, 4 виртуальные панельки (в нашем случае)
    Для того чтобы такое получилось:
    1) ListView должна при ресайзе рассчитать сколько колонок она может иметь (ширина LV / на ширину одной панельки)
    2) дальше Вам нужно будет разбить отрисовку Itema на 4 панельки
        2.1) тоже самое проделать и при выделении
    3) При таком подходе не будет стандартных элементов отображения (Text, Detail, Image и прочее нужно выключить)
    Добавление Itema будет проходить в два цикла: первый добавляет реальный Item (0-2), а второй заполняет данными наши поля в панельках (title1, price1, bitmap1, title2, price2, bitmap2 и тд...)
    4) Ну и самое важное в OnUpdateObjects все это отрисовать
    Надеюсь вам это поможет!
  15. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Давайте меняться   
    Не все так просто, как кажется. Для простых приложении это еще куда не шло при наличии хорошего интернета!! Пользователю не охота ждать пока его интерфейс ответит, ему глубоко пофиг что и как устроено в приложении, ему главное чтобы интерфейс отвечал мгновенно. Да и такой подход не подойдет для больших проектов, собственные стили, отрисовки ListView, работа с картой и сенсорами, с записью аудио, да и вообще кучей всего. А так конструктор для одной формочки которая выводит новости и разные справочники в самый раз, хотя для таких приложении не нужны такие затраты времени в разработке.
  16. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Давайте меняться   
    Хм, сомнительное предложение. Так то XSuperObject со всеми плюшками собирается для всех платформ. Если кого родной не устраивает. Что за стили и при чем тут суперобжект не ясно. А вообще у нас на форуме не принято меняться, есть что полезного показывайте. Велком в нужный раздел
  17. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Проверка статуса GPS в настройках (вкл или выкл)   
    использовать IsGPSActive
  18. Like
    zairkz отреагировална Dimoniks в [FGX] Предложения о разработке компонентов   
    Да у TMS вообще более не стану ничего покупать, хватило одного раза, купил пакет ради RichEdit'ов, чтоб не париться, в итоге полный абзац... Многие события не работают, как например OnURLClick, а еще в компонентах идет утечка памяти, за несколько часов работы приложение распухает на несколько десятков мегабайт...
  19. Like
    zairkz отреагировална rareMax в Что делать, когда код расходится к отладкой   
    Ну если родной сорс - копируй его в папку с проектом, либо создай новую папку и добавь ее в Library path( только нужно поиграться - либо вначале либо в конце что бы было прописано) . И правь его уже там
  20. Like
    zairkz отреагировална Rusland в Скачать курс валют через THTTPClient   
    Проблема решена.
    Оказалось что там кодировка Win1251, а я указал 
    TStringStream.Create('', TEncoding.UTF8); вместо
    TStringStream.Create(''); И парсер на всякий случай:
    uses msxml; procedure GetKursValutAndDate(XML:String; var KDollar,KEuro:Double); var XMLDoc: IXMLDOMDocument; Subnodes: IXMLDOMNodeList; AttributeNode: IXMLDOMNode; OperationNode: IXMLDOMNode; i:integer; begin KDollar:=0; KEuro:=0; try XMLDoc:=CoDOMDocument.Create; if Assigned(XMLDoc) and XMLDoc.loadXML(XML) then begin Subnodes:=XMLDoc.selectNodes('//ValCurs/node()'); if Assigned(Subnodes) then begin for I := 0 to Subnodes.length - 1 do begin AttributeNode := Subnodes[I].attributes.getNamedItem('ID'); if Assigned(AttributeNode) then if (AttributeNode.nodeValue='R01235') then begin // доллар OperationNode:=Subnodes[I].selectSingleNode('.//Value'); if Assigned(OperationNode) then KDollar:=StrToFloat(OperationNode.text); end else if (AttributeNode.nodeValue='R01239') then begin // евро OperationNode:=Subnodes[I].selectSingleNode('.//Value'); if Assigned(OperationNode) then KEuro:=StrToFloat(OperationNode.text); end end; end; end; except Raise Exception.Create('Не удалось получить курс валют'); end; end;  
  21. Like
    zairkz отреагировална Brovin Yaroslav в Клонирование компонента в RunTime   
    Добрый день,
     
    FireMonkey вводит специальный метод TFmxObject.Clone, позволяющий выполнить копирование объекта (без внутреннего состояния) и всех его дочерних объектов путем сериализации/десериализации объекта в памяти.
     
    Соответственно, чтобы получить копию объекта нужно использовать метод:
    function TFmxObject.Clone(const AOwner: TComponent): TFmxObject; У этого метода есть важные особенности:
    Этот метод не копирует родителя Parent у копируемого объекта. Этот метод не копирует обработчики событий. Этот метод не копирует внутреннее состояние объекта. Только если это состояние сериализуется самим объектом. ​Поэтому после выполнения копирования, вы должны задать вручную родителя для копии и требуемые обработчики событий.
     
    Так сделано, поскольку в большинстве случаев после копирования для копии задается другой родитель, поэтому чтобы уменьшить количество не нужных операций по выравниванию контролов и тд, задание родителя отводится пользователю.
  22. Like
    zairkz отреагировална Brovin Yaroslav в Как правильно удалять контролы в RunTime?   
    Добрый вечер,
     
    Главное, что нужно помнить по теме время жизни объектов - это то, что в мобильных платформах (Android и iOS) процесс удаления объектов отличается от поведения на настольных платформах (Windows и OSX). В мобильных платформах появился механизм ARC (Automatic Reference Counting - автоматический подсчет ссылок). Почитать описание (на английском), как это работает можно тут: Apple Developer. Для нас же, это означает, что все объекты имеют поле - счетчик ссылок (RefCount). Когда счетчик ссылок равен нулю, объект автоматически удаляется. Если кто-то присваивает ссылку на объект, то счетчик автоматически увеличивается на 1.
    property RefCount: Integer read FRefCount; // Свойство TObject Можно ошибочно подумать, что это связано со сборщиком мусора. Однако, это не так. При компиляции, компилятор автоматически вставляет в код служебные команды по увеличению и уменьшению счетчика ссылок. Поэтому объект физически уничтожится в тот момент, когда счетчик ссылок станет равным 0. В то время как сборщик мусора, удаляет объекты по своему внутреннему расписанию.
     
    Теперь о вашем вопросе. Когда вы создаете объект и указываете ему родителя, автоматически ваш объект попадает как минимум в список дочерних объектов TabItem1. А значит, автоматически счетчик ссылок на TCircle будет увеличен. Когда вы сохраняете ваш объект в массиве, это опять же автоматически увеличивает счетчик ссылок. Поэтому, чтобы удалить объект есть два способа:
     
    1. Вызвать метод TObject.DisposeOf. Это форсирует вызов деструктора, но не очищает память выделенную под объект. Это означает, что выполниться код деструктора, TCircle будет удален из списков, все ресурсы, которые окружность захватила будут распущены. Но сама память, которая была выделена из кучи под его хранение будет распущена, только в момент, когда больше не будет ни одной ссылки. Например, так:
    c[r].DisposeOf; c[r] := nil; 2. Убрать все ссылки, которые указывают на ваш объект. Это приведет к автоматическому удалению объекта. Убрать объект из структуры объектов, путем удаления удаления его из родительcкого контроkа Parent = nil, и затем вызывать Free и занилилить уже ссылку на объект в массиве. 
    c[r].Parent := nil; c[r].Free; c[r] := nil; // Или FreeAndNil(c[r]), в зависимости от типа c. Если больше ссылок на ваш объект нету, то данный код автоматически удалит объект c[r].
    Дополнение от RAD Studio XE6. В этой версии компилятор автоматически после вызова метода Free очистит указатель на объект. По этой причине дополнительно присваивание nil указателю на объект не требуется на мобильных платформах
    var A: TObject; begin A := TObject.Create; A.Free; // В этом месте A = nil на мобильных платформах. // На настольных платформах: A указывает на мусор end;  Чтобы осталась совместимость с настольными платформами, лучше использовать второй подход.
     
    P.S. Никогда не вызывайте деструктор напрямую, вызовом метода Destroy.
  23. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Custom Font   
    не за что, старайтесь меньше использовать TListBox. там в примере есть настройка для ListView с таким же отображением
  24. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Custom Font   
    попробуйте вот так
    procedure FontAwesomeApply(const Control: TControl); var i: Integer; begin if Control is TControl then begin FontAwesomeAssign(TControl(Control)); if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; end; for i := 0 to Control.ControlsCount - 1 do FontAwesomeApply(Control.Controls[i]); end;  
  25. Like
    zairkz отреагировална kami в vkbdhelper - поднятие компонентов над клавиатурой   
    vkbdHelper имеет весьма интересный алгоритм - если он находит scrollbox и понимает, что тот в состоянии поднять поле ввода так, чтобы оно было над клавиатурой, то собственный Layout не создается, а прокручивается имеющийся ScrollBox. Но там какой-то алгоритм работы со scrollbox-ом, который отличается от штатной демки.
    Не проверял этот момент и не менял его, попробую посмотреть, когда разгребусь с текущими вопросами.
×
×
  • Создать...