• 0
Евгений Корепов

Клонирование TListView

Вопросы

Задача следующая: есть ListView настроенный в дизайнтайме, во время работы приложения необходимо создавать в runtime и использовать несколько копий ListView. В каждом будет свой контент. 

Не могу придумать элегантное решение. Первый вариант - тупо создавать в runtime и кучей кода настраивать ListView до нужного состояния. Но это лениво ;-) Второй вариант - оставить в приложении настроенный вручную ListView и клонировать его по мере надобности, как то так наверное ListViewDestination.Assign(ListViewSource) ? Третий вариант - сериализация настроек и загрузка их в новые экземпляры ListView.

Заранее благодарю за совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 ответ на этот вопрос

  • 0

я пользуюсь первым вариантом, создаю такого плана record и использую его для разных вариантов отрисовок

  TmyListViewDrawer = record
    procedure PaintBitmaps(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); // динамическая отрисовка картинок
    procedure PaintHorzBitmaps(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); // динамическая отрисовка картинок (горизонтально LV)
    procedure RestoranDrawer(const Sender: TObject; const AItem: TListViewItem); // отрисовка плиточки

	// настройка LV
	class procedure RestoranConfig(aLV: TListView); static; 
	class procedure BludoConfig(aLV: TListView); static;
	class procedure MenuConfig(aLV: TListView); static;
	// ...

    class procedure RestoranAdd(aLV: TListView; const aTitle, aLocation, aURL: string; const aDistance, aRating: Real;
      const aMinPrice, aDeliveryPrice, aDeliveryTime: integer; const aSale: Boolean); static; // добавление Itema
  end;

плюс в том что можно потом копировать в другие проекты, просто дополняя. а не сидеть и настраивать руками

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Юрий Гусач
      Доброго дня!
      Проясните пожалуйста ситуацию: при запуске программы  под Андроидом на различных устройствах я получаю размеры формы, которые вроде всегда в разы меньше чем максимальное разрешение экрана конкретного устройства. Я пробовал планшеты и разные смартфоны. Написал тестовую прогу, которая выводит СlientScreen и  ClientWidth формы, на которой ничего больше нет. Например для крайне бюджетного смартфона Fly FS-549 получилось 497 х 320, а по паспорту 854x480. Разрешение и так хреновое, а Delphi его еще сильнее уменьшает. -       Почему это происходит и можно ли как то это обойти?
       
       
    • От Андрей Лещинский
      Здравствуйте ребята. С Firemonkey знаком только два дня. Многое уже подчеркнул с данного форума. Спасибо вам. 
      Проблема заключается в том, что у меня sdk для андроид 7 версии. Я собираю apk файл, запускаю его на Андроид 7 и все отлично, но как только я устанавливаю приложение на Андроид например версии 5, то при запуске оно мерцает пару раз и потом отображается отлично. Не подскажите в чем проблема? Я пробовал проект с данного форума, чтобы форма уходила под статусбара. Вот все они и мерцают на Андроид ниже 7, другие не пробовал проекты
      Стаж у меня только 2 дня, скажите в какую сторону смотреть мне далее
    • От gutalin79
      Почему при добавлении MapView в пример Android Service, приложение перестает работать?
      AndroidSimpleService.zip
       
       
       
      Пример делал по этому видео: 
       
    • От Astghik
      Hello !!!
      I want onButtonClick create popup. I use TPopup component. All good, but on android "Back button" click closing forma. But I want close popup (when popup is shown).

       
      //---------------------------------------------------------------------------------
      void __fastcall  btn3PointsClick(TObject *Sender)
      {
          PopUpSettings->IsOpen = true;
          PopUpSettings->PlacementTarget = btn3Points;
          PopUpSettings->BringToFront();
      }
      //-------------------------------------------------------------------------------------
      void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose)
      {
          try {
              if (PopUpSettings->IsOpen == true) {
                  CanClose = false;
              }
              else {
                  CanClose = true;
              }
          } __finally {
              PopUpSettings->IsOpen = false;
          }
      }
      //-------------------------------------------------------------------
       
    • От Rokweb
      Таймер с интервалом 1мс заметно подтормаживает во время выполнения анимации TFloatAnimation в Tokyo. У всех так или только у меня?
    • От Rokweb
      Здравствуйте.
      Речь пойдёт об Android.
      Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
       
      while not GLoaded do begin Sleep(10); Application.ProcessMessages; end;  
      Модуль прикрепил в сообщении.
       
      Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?
       
      Прошу помощи.
      GameAudioManager.zip
    • От zekelive
      Товарищи, здравствуйте. Хотел бы проконсультироваться с вами на довольно сложно для меня тему. Имеется клиентское мобильное приложение на Андроид. Принцип его просто, загружает фирмы из БД в scrollbox. За счёт того, что сразу загрузка всех данных из сервера занимает длительное время, было принято решение загружать с сервера только ключевую информацию (название фирмы), а остальную информацию загружать из локальной БД. При этом, т.к. файл БД можно легко вытащить из apk файла любому человеку, размещать всю БД на локалке нельзя. Только информацию в целом не представляющую большой значимости в отдельности от названия фирмы и не только. 
      Вопрос, правильная ли схему построения была выбрана с точки зрения защиты данных (если это так можно назвать), и оптимизации загрузки информации. 
      Приветствуются ваши советы, как лучше построить схему взаимодействия приложения с БД, или как лучше защитить данные. В идеале для быстродействия, загнать побольше данных в локальную БД. 
    • От Edward Tarasov
      Привет всем. кто сталкивался с такой ерундой, что в webbrowser вместо сайта тупо белый экран?? причем сам сайт отображаеться норм, и на том же планшете, но в стандартном бразуере и на компе... и именно этот сайт не пашет из приложения
    • От zekelive
      Друзья, первый раз столкнулся с картами и не пойму в чем дело. Приложение подписано, релизная версия. Добавил карты на форму и запустил на компиляцию, все отлично. Запускаю на смартфоне - приложение сразу вылетает. Ничего не прописывал связанное с картами, просто добавил компонент на форму. Что не так ?
    • От Виталий Иванов
      Есть такая идея. 
      Загружаю в TListView много элементов (от 500 до 1000 может и более) ситуация вынуждает грузить именно столько . Так вот когда начинаю создавать их кастомно после создания приходится вызвать oItem.Adapter.ResetView(oItem) (Если этого не делать то не корректно рассчитывается высота и ещё пару багов )  что соответсвенно вызывает подвисание интерфейса на Windows все круто это не так в глаза бросается, а на Android печалька форма зависает от 10 до 30 секунд 
      Так вот сам вопрос можно ли как это сделать в отдельном потоке что бы пользователю показывать какой нибудь Waiter. Или может кто как по другому предложит реализовать ? 
      Смотрел в сторону динамической подгрузки итемов но хотелось бы что и его поиск работал . 
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу