C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: TListView  (Прочитано 2250 раз)
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 784


TListView
« : 25 Июль 2014, 18:18:34 »

Как в строки списка добавить компонент TTimeEdit в проекте FMX?
Код
/*
//на дельфи для добавления картинки
Image := TImage.Create(Item);
Image.Parent :=Item;
*/

 
void __fastcall TMainForm::Button3Click(TObject *Sender)
{
//ItemAppearance=Custom
ListView1->BeginUpdate();
for (int i = 0; i 10; i++)
 {
  TListViewItem * item = ListView1->Items->Add();
  item->Text = "Текст: " + IntToStr(i);
  item->Detail = "Детальный текст: " + IntToStr(i);
  TTimeEdit * VideoTimeEdit = new TTimeEdit(item->Parent);
  VideoTimeEdit->Parent = item->Parent;
  VideoTimeEdit->Position->X = 140;
  VideoTimeEdit->Position->Y = 10;
  VideoTimeEdit->TimeFormatKind = 1;
 }
ListView1->EndUpdate();
 
}

В результате вижу TTimeEdit только в первой строке списка. Как получить TTimeEdit во всех 10-и строках списка?
« Последнее редактирование: 25 Июль 2014, 20:27:55 от SilverFish » Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 784


Re: TListView
« Ответ #1 : 26 Июль 2014, 11:44:42 »

И так не работает:
Код
void __fastcall TMainForm::Button3Click(TObject *Sender)
{
//ItemAppearance=Custom
TListViewItem * item;
TTimeEdit * VideoTimeEdit;
ListView1->BeginUpdate();
int j = 0;
for (int i = 0; i 10; i++)
 {
  item = new TListViewItem(ListView1);
  item->Text = "Текст: " + IntToStr(i);
  item->Detail = "Детальный текст: " + IntToStr(i);
  VideoTimeEdit = new TTimeEdit(item->Parent);
  VideoTimeEdit->Parent = item->Parent;
  VideoTimeEdit->Position->X = 140;
  VideoTimeEdit->Position->Y = 10 ;
  VideoTimeEdit->TimeFormatKind = 1;
  ListView1->AddObject(item);
 }
ListView1->EndUpdate();
}
 
Could not find a match for 'TListViewItem::TListViewItem(TListView *)'

« Последнее редактирование: 26 Июль 2014, 11:51:51 от SilverFish » Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 784


Re: TListView
« Ответ #2 : 29 Июль 2014, 00:14:07 »

В ListBox добавляется без проблем:
Код
void __fastcall TMainForm::Button4Click(TObject *Sender)
{
TListBoxItem * item;
TTimeEdit * VideoTimeEdit;
ListBox1->BeginUpdate();
int j = 0;
for (int i = 0; i 10; i++)
  {
  item = new TListBoxItem(ListBox1);
  item->Text = "Текст: " + IntToStr(i);
  item->Height = 44;
  //item->Detail = "Детальный текст: " + IntToStr(i);
  VideoTimeEdit = new TTimeEdit(item);
  VideoTimeEdit->Parent = item;
  VideoTimeEdit->Position->X = 140;
  VideoTimeEdit->Position->Y = 10 ;
  VideoTimeEdit->TimeFormatKind = 1;
  ListBox1->AddObject(item);
 }
ListBox1->EndUpdate();
}
 

Странно, что в ListView это сделать не возможно...
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: TListView
« Ответ #3 : 29 Июль 2014, 12:21:53 »

FMX - наистраннейший фреймворк, я бы сказал...
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 784


« Ответ #4 : 29 Июль 2014, 19:25:48 »

Цитата: S0mbre от 29 Июль 2014, 12:21:53
FMX - наистраннейший фреймворк, я бы сказал...

Нашла ответ от одного из авторов FMX:

Цитата:
Главные отличия TListView от TListBox в:
    TListBoxItem - контрол, TListViewItem - нет
    В TListBoxItem можно добавлять любые контролы, используя Parent. В TListVIewItem - нет.
    TListVIewItem хранит только данные для отображения
    TListVIewItem сам выполняет отрисовку хранимых данных через метод Render
    За счет собственно ручной отрисовки в TListVIewItem достигается прирост скорости и малое потребление памяти (хранение только актуальных данных)
    Чтобы создать свой вариант TListViewItem, нужно создать свой класс итема, в нем реализовать требуемые данные (например время) и создать in-place редактор для редактирования времени, зарегистрировать его и тд.

P.S. В вашем случае, проще использовать Master-Detail подход. При котором по нажатию на итем, будет открываться вкладка для редактирования информации об итеме, в том числе время через TTimeEdit. Это будет быстрее и проще.

P.S.P.S. Если же вы все-таки хотите создать свой итем, будьте готовы, что придется детально изучить, как это делается в самом TListVew.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.125 секунд. Запросов: 19.