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

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


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

Вопрос

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

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

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

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

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

  • 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;

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

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

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

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

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

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

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

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

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

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

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