2013-09-17 1 views
2

Есть ли способ заставить TListView Delphi вести себя как настоящий ListView в Android? , например, каждый элемент списка имеет свой собственный «вид», и в этом представлении может быть несколько других представлений (компонентов), таких как несколько текстовых полей и флажков и ...?Delphi XE5 Android: как сделать, чтобы каждый элемент списка имел свой собственный шаблон?

enter image description here

+1

Ваш вопрос получит больше внимания, если вы пытаетесь решить эту проблему самостоятельно, и после того, что не работает вместе с фрагментом кода. –

+0

Не так ли, как FMX работает? –

+1

Используйте несколько форм, по одному для каждого вида деятельности (вид). Активируйте его, когда выбран элемент ListView, и вернитесь к основной форме, когда эта активность будет завершена. Пример переключения между формами во время выполнения см. В образце «Формы» FireMonkey Mobile, расположенном в папке «Образцы». Вы также можете использовать элемент управления вкладкой и поместить ListView на первую вкладку; при выборе действия активируется соответствующая закладка, и когда действие завершено, вы возвращаетесь на первую вкладку. –

ответ

2

Да, есть способ. Я делаю это, используя эти два метода. Метод CreateItem - это то, где вы помещаете нужные компоненты в listitem.

procedure TForm1.CreateItem; 
var 
edit1:TClearingEdit; 
editCalendar1:TCustomCalendarEdit; 
begin 
    edit1:= TClearingEdit.Create(Self); 
    edit1.Parent := fItem; 
    edit1.Align := TAlignLayout.alClient; 
    edit1.Text := 'Blabla'; 
    edit1.OnChange := actEdit1OnChange; 

    editCalendar1 := TCalendarEdit.Create(Self); 
    editCalendar1.Parent := fItem; 
    editCalendar1.Align := TAlignLayout.alRight; 
    editCalendar1.Width := 90; 
    editCalendar1.Date := Date; 
    editCalendar1.OnChange := actEditCalOnChange; 
end; 

procedure TForm1.CreateListItem; 
begin 
    fItem:= TListBoxItem.Create(your_listbox); 
    fItem.Parent := your_listbox; //Here you put the ListBox as a parent 
    fItem.Align := TAlignLayout.alTop; 
    fItem.Text := ''; 
    fItem.Height := 50; 

    CreateItem; 
end; 

Чтобы добавить пользовательский элемент в список, просто вызовите метод CreateListItem! Кроме того, я использую метод OnChange для приема данных здесь пример:

procedure TForm1.actEditCalOnChange(Sender: TObject); 
begin 
    label1.text := TCalendarEdit(Sender).Text; 
end; 

procedure TForm1.actEdit1OnChange(Sender: TObject); 
begin 
    label2.text := TClearingEdit(Sender).Text; 
end; 
+0

В каком подразделе 'TDocumentView' находится? – RezaRahmati

0

Вы должны будете использовать TListBox, то вы можете добавить элементы списка и каждый элемент может иметь текст элемента и деталь, но вы ограничены предопределенные раскладки. Вы не можете сделать свой собственный макет, как в Eclipse. Вам придется использовать FireMonkey Style Designer, чтобы создать свой собственный стиль. Взгляните here.

+0

Неправда, см. Мой ответ! Вы можете поместить каждый компонент в один элемент TListBox! – Remi