有没有办法使Delphi的TListView表现得像Android中的实际ListView?
例如,列表的每个项目都有其自己的“视图”,并且在该视图中可以是多个其他视图(组件),例如多个文本框和复选框以及...?
最佳答案
是的,有办法。我通过使用这两种方法来实现。 CreateItem方法是将所需组件放入列表项的位置。
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;