Это может быть немного многословно, но в основном я ищу некоторые указатели для разработки нового проекта.
Я использую RAD Studio 11, используя как Delphi, так и C++ Builder, хотя у меня больше опыта работы с C++.
Раньше я загружал данные из JSON API, обрабатывал JSON в отдельные объекты (в основном содержащие только строки), добавлял эти объекты в TList и отображал их с помощью пользовательского объекта TListBoxItem в TListBox. Это работает нормально, но медленно обрабатывает, сохраняет, загружает, фильтрует и отображает (т.е. необходимо создать новый TListBoxItem для каждого объекта и заполнить его вручную, а также сохранить/загрузить из пользовательского формата текстового файла). Для будущих проектов я хотел бы использовать что-то вроде TClientDataSet или TFDMemTable, но у меня нет большого опыта работы с ними.
Я дошел до того, что могу заполнить TFDMemTable произвольным JSON, загруженным из моего API, и отобразить его, используя LiveBindings времени разработки в TStringGrid.
Мой вопрос сводится к тому, как я буду отображать свои данные с помощью TListBox с гораздо большей информацией, чем может показать TListBoxItem по умолчанию (т.е. более двух строк, несколько значков/изображений и т. д.), или если есть другой лучший/более простой способ справиться с этим.
Буду ли я создавать свой пользовательский объект TListBoxItem и каким-то образом связывать его программно? Использовать книгу стилей для создания пользовательского макета? Какой-то другой процесс, о котором я не знаю?
У меня нет большого опыта работы с объектами базы данных в RAD Studio или живыми привязками, но это похоже на то, как сделать мои приложения более быстрыми и быстрыми для пользователей. Любые указатели будут высоко оценены.
Предполагая, что вы используете фреймворк FMX (согласно тегам).
Не рекомендуется использовать TListBox с LiveBindings для создания большого количества элементов из источника данных из-за медлительности компонента. TListBox в основном подходит для небольшого количества элементов, созданных и настроенных вручную (либо во время разработки, либо во время выполнения), при этом каждый элемент имеет собственное изображение и текст. Также возможно, если вы хотите, создать свой собственный компонент TListBoxItem с дополнительными свойствами и элементами.
Но, с другой стороны, есть компонент FMX TListView, который оптимизирован для создания и прокрутки больших элементов из источника данных (любой набор данных: TClientDataSet, TFDMemTable, ...) через LiveBindings. И у него есть возможность, которую вы ищете: он позволяет легко изменять концепцию и внешний вид TListViewItem в дизайнере IDE, добавляя компоненты текста и изображения с пользовательским положением и настройками, без необходимости разрабатывать собственный пользовательский компонент. Вы также можете привязать эти дополнительные компоненты к набору данных.
Вот несколько полезных ссылок из документации Delphi о том, как заполнить TListView с помощью LiveBindings и как настроить внешний вид TListView: