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

TListBoxItem.TagObject = nil


Barbanel

Вопрос

Всем хай.

Пол дня бьюсь, уже с ума начинаю сходить, и как назло не с кем посоветоваться сегодня. Выручайте)
Суть:
Есть TListBox. В него динамически из кода создаются TListBoxItem.
Каждому итему в поле TagObject присваивается некий объект, хранящий дополнительные данные.
По клику на итем, вытаскивается этот объект и в зависимости от данных, выполняются разные действия.

Проблема:
Под Windows ее собсно нет)
Под Android при клике на TListBoxItem оказывается что TagObject = nil.

Голова уже дымится, у меня закончились мысли, что это может быть...

Код, на всякий:

        while not query.Eof do
        begin
            item := TListBoxItem.Create(lbTeilLeistungsArten);
            lbTeilLeistungsArten.AddObject(item);
            item.StyleLookup := 'listboxitemTL';
            item.Height      := 60;
            item.Text        := query.FieldByName('Bezeichnung').AsString;
            item.OnClick     := OnTeilleistungenClick;
            item.Tag         := query.FieldByName('ID').AsInteger;
            item.DisableDisappear := true;
            item.ApplyStyleLookup();

            lStObj := TStoreObject.CreateTL(query.FieldByName('ID').AsInteger);
            lStObj.TeilLeistung.Name := query.FieldByName('Bezeichnung').AsString;

            item.TagObject := lStObj;

            query.Next();
        end;

Всем заранее спасибо!

Ссылка на комментарий

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

  • 2

TagObject имеет тип ссылки [weak]

Когда у меня было такое:

item.tagObject := TStringList.Create

if not Assigned(item.tagObject) then ShowMessage('Noy Assigned');

всегда показывало сообщение.

Если я правильно понял суть работы ARC, который работает только под мобильными платформами, то [weak] ссылка не увеличивает счетчик ссылок для обьекта.

для решения этой проблемы я был переделал на свой клас:

TMyObject = class(TFMXObject)

и потом при создании итема

MyObject := TMyObject.Create;

Item.AddObject(MyObject)

Item.tagObject := MyObject;

Чтобы на обьект хранилась нормальная ссылка еще где-то.

 

Вот тут уже такое обсуждалось:

 

Ссылка на комментарий
  • 0

del.

Про weak как-то вообще не подумал...
Пробую.
Спасибо!

Изменено пользователем Barbanel
Конец рабочего дня, голова не варит
Ссылка на комментарий
  • 0
В 09.11.2018 в 19:43, wamaco сказал:

и как решили? можно код?

Присвоил этот объект полю TListBoxItem.Data

Это поле не содержит слабую ссылку. Альтернативный вариант указал RealSHELS

Ссылка на комментарий
  • 0
1 час назад, wamaco сказал:

"Альтернативный вариант указал RealSHELS" - у меня этот вариант не завелся! поэтому и спросил!

Странно, в теории должен сработать, но я не проверял. Просто убедился что TagObject имеет пометку Week.

Ссылка на комментарий

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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