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

xenon54

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

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

  • Посещение

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

    14

Сообщения, опубликованные xenon54

  1. 50 элементов для ListBox в мобильной платформе это ооочень много. Вообще, где-то писали что ListBox следует использовать не более чем как для меню, т.е. количество элементов не более десятка, на вскидку. Если у вас список более 10 элементов, листбокс лучше не использовать. ListView очень хорош с большим количеством элементов. Основная его фишка ускорения работы, как я  понял, это то что он не держит кучу чилдрен контролов у себя и всю отрисовку делает только он сам, а вот листбокс это куча контролов, каждый из которых занимается отрисовкой. Есть у тебя 50  итемов, на них на каждом по 3 контрола, считай метод отрисовки вызовется 201 раз (1=сам листбокс, 50 это каждый итем, и еще 150 это по 3 контрола в каждом итеме).

  2.  

    xenon54, согласен. Но сам объект от этого никуда не денется - как минимум, его будет держать Parent.

    Кстати, только сейчас обратил внимание на "compiler translates.....". Весьма удивился, если честно. Я почему-то был уверен, что всё от TObject и выше (дженерики не в счет) реализовано именно кодом в .pas файлах :)

    procedure TObject.Free;
    begin
    // under ARC, this method isn't actually called since the compiler translates
    // the call to be a mere nil assignment to the instance variable, which then calls _InstClear
    {$IFNDEF AUTOREFCOUNT}
      if Self <> nil then
        Destroy;
    {$ENDIF}
    end;

    Касательно этого примера, да, фри не сделает того чего от него ожидают :)

     

    Но просто фраза "Free на мобильных платформах не делает ничего." звучит слишком однозначно и может ввести некоторых в заблуждение.

  3. Если реально сейчас TSwitch в состоянии IsChecked=true, то при попытке динамически изменить его состояние:

    Switch1.IsChecked := false;
    

    Реальное значение свойства меняется, но ползунок остается в состоянии True. Т.е. получается визуальное значение не соответствует значению "IsChecked". Как побороть?

    Студия Xe8 без апдейта. Смотрел в фикс листе Update1 не нашел там фикса этого бага.

    Кстати, в XE7 этого бага не было, так что подозреваю что это связано с переходом на контрол-модель-презентация.

  4. 1. Все контролы в ФМ являются контейнерами.

    2. Итемы внутр листбокса являются контролами, а значит и контейнерами, следовательно вы можете делать там внутри что угодно хоть колонки, хоть кружочки, хоть что...

    3. поменять местами итемы можно так:

    ListBox1.ItemsExchange( ListBox1.ItemByIndex(0), ListBox1.ItemByIndex(1)  );
    

    4. Чтобы в Листбокс итеме поменять текст, нужно поменять его паблишед свойство Text, делается это так:

    ListBox1.ItemByIndex(1).Text := '123';
    
  5. Раньше надо было явно указывать этот пункт, теперь этот пункт сам автоматом подсасывается в зависимости от провижн профиля в котором прописаны разрешения. Ну а в опциях проекта этот пункт более не доступен естессно.

  6.  

    может кто-нибудь пояснить что значат вот эти строки кода в unit Data.DbxSqlite :

    {$HPPEMIT LINKUNIT}

    и

     

    {$IF DEFINED(MACOS) or DEFINED(IOS)} // эта строка понятна
    {$HPPEMIT ''}
    {$HPPEMIT '#ifndef USEPACKAGES'}
    {$HPPEMIT '/* automatically link to libsqlite3.dylib */'}
    {$HPPEMIT '#pragma link "libsqlite3.dylib"'}
    {$HPPEMIT '#endif'}
    {$HPPEMIT ''}
    {$ENDIF MACOS or IOS}

     

    http://docwiki.embarcadero.com/RADStudio/XE8/en/HPP_emit_(Delphi)

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

     

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

  8. Ну лично мне не известно о каких-либо патчах для XE7 и ниже. Поддержка 64 IOS аннонсирована в XE8 как новая возможность, а то что AppStore сделал это требование обязательным, это проблемы индейцев, т.е. нас :)

    Но я могу просто не знать о таких патчах, не искал.

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