有没有办法让Delphi的TListView像android中的实际ListView一样?
例如,列表中的每个项目都有自己的“视图”,在该视图中可以是多个其他视图(组件),如多个文本框和复选框,以及……?
例如,列表中的每个项目都有自己的“视图”,在该视图中可以是多个其他视图(组件),如多个文本框和复选框,以及……?
解决方法
是的,有办法.我是通过使用这两种方法来实现的. 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;