Для чистоты эксперимента, форма с комбо-боксом пересоздается каждый раз, после загрузки в него данных и отображения выпадающего списка.
Загружаю в комбо-бокс объекты (JSONObject) обычным способом.
forFJSONValue in FJSONArraydoAcb.Items.AddObject((FJSONValue as TJSONObject).GetValue('name').Value,TObject(FJSONValue.Clone));
Так же при очистке, за собой удаляю объекты из комбо-бокса.
for index := 0 to Acb.Items.Count - 1 do
if Acb.Items.Objects[index] <> nil then
begin
Acb.Items.Objects[index].DisposeOf;
Acb.Items.Objects[index]:= nil;
end;
Acb.Items.Clear;
На 2-3 круге, после загрузки содержимого в комбо-бокс, при вызове DropDown (программно или через GUI тапом/кликом) приложение падает.
Редко получаю ошибку на класс TCustomComboBox в методе
function TCustomComboBox.GetItems: TStrings;
begin
Result := FListBox.Items;
end;
Что я делаю не так? Я неправильно чищу память за собой? Неправильно добавляю объект? Почему оно падает при попытке вызвать сам выпадающий список?
Вопрос
Станислав Менинник
Среда последняя, иОС СДК последний.
На форме один комбо-бокс.
Для чистоты эксперимента, форма с комбо-боксом пересоздается каждый раз, после загрузки в него данных и отображения выпадающего списка.
Загружаю в комбо-бокс объекты (JSONObject) обычным способом.
Так же при очистке, за собой удаляю объекты из комбо-бокса.
for index := 0 to Acb.Items.Count - 1 do if Acb.Items.Objects[index] <> nil then begin Acb.Items.Objects[index].DisposeOf; Acb.Items.Objects[index]:= nil; end; Acb.Items.Clear;
На 2-3 круге, после загрузки содержимого в комбо-бокс, при вызове DropDown (программно или через GUI тапом/кликом) приложение падает.
Редко получаю ошибку на класс TCustomComboBox в методе
function TCustomComboBox.GetItems: TStrings;
begin
Result := FListBox.Items;
end;
Что я делаю не так? Я неправильно чищу память за собой? Неправильно добавляю объект? Почему оно падает при попытке вызвать сам выпадающий список?
На Win10 и андроид работает без проблем.
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.