-
Похожий контент
-
От Malstream
Недавно решил написать небольшое приложение под андроид, которое будет в удобном виде показывать расписание моего ВУЗа (они нам передают 20 летний привет в виде экселя), ну и задно изучить FMX.
Написал за пару дней парсер, все более менее работает. Встал вопрос - какими компонентами все это удобно и красиво отобразить? Перечитал кучу инфы по стандартным компонентам и, кажется, они мне не подойдут
Для того чтобы было понятно, чего именно я хочу - набросал схему. Границы для наглядности.
Каким компонентом это можно реализовать? Если все-таки коробочные тоже годятся, то ткните лицом куда читать :)
Заранее спасибо.
-
От Виталий Иванов
Есть такая идея.
Загружаю в TListView много элементов (от 500 до 1000 может и более) ситуация вынуждает грузить именно столько . Так вот когда начинаю создавать их кастомно после создания приходится вызвать oItem.Adapter.ResetView(oItem) (Если этого не делать то не корректно рассчитывается высота и ещё пару багов ) что соответсвенно вызывает подвисание интерфейса на Windows все круто это не так в глаза бросается, а на Android печалька форма зависает от 10 до 30 секунд
Так вот сам вопрос можно ли как это сделать в отдельном потоке что бы пользователю показывать какой нибудь Waiter. Или может кто как по другому предложит реализовать ?
Смотрел в сторону динамической подгрузки итемов но хотелось бы что и его поиск работал .
-
От Alex Bozhko
Вопрос из серии "чего-то странного хочется".
Предположим, я хочу написать собственный ListView. Если я наследую от TListView, то всё нормально. Я его регистрирую с помощью процедуры Register
Примерно так:
procedure Register; begin RegisterComponents('<Моя вкладка>', [TМойListView]); end; И всё работает.
Но, как показывает практика, в том числе пример Равиля Зарипова (https://github.com/rzaripov1990/ModernListView) для того, что бы написать полноценный ListView, наследоваться надо от предков TListView, едва ли не от TStyledControl.
Дальше возникает вопрос. Где и как правильно регистрировать вновь созданный компонент?
Если зарегистрировать компонент с помощью процедуры Register, то при размещении компонента на форме в окне Structure к вновь созданному компоненту не привязывается ItemAppearence.
Да и IDE падает.
Прилагаю файл с кастомным ListView. Сделан по аналогии с оригинальным, изменены только названия.
My.FMX.ListView.zip
-
От Виталий Иванов
Вопрос к экспертам
Возникла необходимость и хотел спросить можно ли как-то сделать TlistViewItem прозрачным, а то получается что сам TlistView может быть прозрачным а его итем нет . Это как-то же делаться у TListBoxItem.
Заранее огромное спасибо.
-
От x11
ListView в режиме appearance.
Добавил пару TListItemGlyphButton, указал в свойстве ButtonType - CheckBox. Но при работе приложения - пустота.
Другие типы кнопок тоже не отображает.
ЧЯДНТ.
-
От x11
По совету krapotkin`a
http://fire-monkey.ru/topic/4595-listview-скрывает-повторяющийся-текст-заголовков/?do=findComment&comment=29209
Забросил LiveBinding при заполнении TListView и начал заполнять ручками.
Почти всё хорошо за исключением загрузки картинки из базы.
При использовании LiveBinding картинка грузилась, а теперь просто пустота.
На Windows картинки грузятся и отображаются, а на Андроиде не хотят.
Вот часть кода загрузки
Var stream: TBlobStream; ... begin .... lv.BeginUpdate; try lv.Items.Clear; qObjects2.close; qObjects2.Open; while not qObjects2.Eof do begin item := lv.Items.Add; item.Data[sItemId] := qObjects2id.AsString; item.Data[sItemPrice] := qObjects2price.AsString; item.Data[sItemType] := qObjects2type_name.Value; ... ... ... ListItemImage := Item.Objects.FindObjectT<TListItemImage>(sItemImg); stream := TBlobStream.Create(qObjects2img, bmRead); try if stream.Size <= 0 then ListItemImage.ImageIndex := 0 else ListItemImage.Bitmap := TBitmap.CreateFromStream(stream); finally stream.Free; end;
К ListView прикреплен список картинок, где есть картинка-пустышка, которая грузится, если у записи нет картинки.
вот этой строкой ListItemImage.ImageIndex := 0
картинки-пустышки нормально отображаются и на Андроид-устройстве в том числе.
Ошибок нет, а просто пустой TListItemImage там, где должна быть картинка.
Может, я какое-то свойство забыл включить у TListItemImage?
При отладке видно, что картинка загружается из базы.
-
От x11
Сделал такой эксперимент в событии OnUpdateObjects
if AItem.Purpose in [TListItemPurpose.Header] then Memo1.Lines.Add(AItem.Text);
И в memo загрузилось в два раза больше строк, чем элементов списка.
Это нормально, так и должно быть?
-
От x11
Через LiveBinding загружаются данные в ListView, в том числе и в ListItemImage.
Но у некоторых Item`ов нет картинки. И в этом случае нужно показать "пустышку" типа No image.
Делаю в событии UpdateObjects
procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var ListItemImage: TListItemImage; begin if Assigned(AItem) then begin ListItemImage := AItem.Objects.FindObjectT<TListItemImage>('img'); if Assigned(ListItemImage) then if not assigned(ListItemImage.Bitmap) then ListItemImage.ImageIndex := 0; end; end;
Но теперь у всех ListItemImage отображается пустышка, даже там, где должна быть правильная картинка.
Пробовал использовать событие UpdatingObjects, но в этом случае грузится правильная картинка, а пустышка не грузится.
-
От x11
В TListView есть картинка и другие поля. В поля уже выводятся данные из таблицы с помощью LiveBinding.
Добавил новое поле в DataSet типа TBlobField, но LiveBinding Designer это поле не отображает, не видит его, поэтому и к картинке не могу привязать.
Так и должно быть или это баг?
-
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
Приложение создается для платформы Андроид.
Из INI файла читается время и помещается в список. Рисунок прилагается. Для размещения этого времени справа в списке я использую стандартный пример, который идет в Samples студии:
Подскажите, пожалуйста, как вместо простого текста в этих местах размещать программно компонент TTimeEdit чтобы читать в него значения, и иметь возможность править эти значения времени прямо в ListView?
Спасибо.
Поделиться сообщением
Ссылка на сообщение