【问题标题】:Delphi XE5 Android : how to make each listview item have its own template?Delphi XE5 Android:如何让每个列表视图项都有自己的模板?
【发布时间】:2013-09-17 20:06:50
【问题描述】:

有没有办法让 Delphi 的 TListView 表现得像 android 中的实际 ListView? 例如,列表中的每个项目都有自己的“视图”,并且在该视图中可以是多个其他视图(组件),例如多个文本框和复选框以及...?

【问题讨论】:

  • 如果您尝试自己解决此问题并发布无效的代码以及 sn-p 代码,您的问题将得到更多关注。
  • FMX 不就是这样工作的吗?
  • 使用多个表单,每个活动(视图)使用一个。选择 ListView 项目时激活它,并在该活动完成时切换回主窗体。有关在运行时在表单之间切换的示例,请参阅位于 Samples 文件夹中的 FireMonkey Mobile 示例“表单”。也可以使用选项卡控件,将ListView放在第一个选项卡上;选择一个活动会激活相应的标签页,当活动完成后,您会切换回第一个标签页。
  • 我对 delphi 真的很陌生,我没有任何 sn-p 但是当我浏览它时,我没有找到类似的东西。 @Ken White:我不是在谈论活动(翻译表单),而是在谈论每个项目的列表视图,例如每个项目有 3 个文本和 2 个复选框的项目列表,这些项目在彼此下方排序,您可以滚动浏览它们。希望能解决我的问题
  • 看看我给你的最后一个示例文件夹(就在这条评论的上方)。打开 SampleListViewMultiDetailAppearancePackage.dproj 文件,在项目管理器中右键单击它,然后选择“安装”。然后File->Close all(保存更改),然后打开SampleListViewMultiDetailAppearanceProject.dproj。第一个(包)创建项目模板并使其可用,第二个向您展示如何使用它。

标签: android delphi delphi-xe5


【解决方案1】:

是的,有办法。我通过使用这两种方法来做到这一点。 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;

【讨论】:

    【解决方案2】:

    您必须使用 TListBox,然后您可以添加列表项,并且每个项都可以包含项文本和详细信息,但您仅限于预定义的布局。您不能像在 Eclipse 中那样制作完全自己的布局。您必须使用 FireMonkey 样式设计器来创建自己的样式。看看here

    【讨论】:

    • 不是真的,看我的回答!您可以将所需的每个组件放入一个 TListBox 项中!
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多