【问题标题】:Remove separator lines for TListView on Delphi FMX删除 Delphi FMX 上 TListView 的分隔线
【发布时间】:2022-01-25 03:19:07
【问题描述】:

是否可以删除 TListView 中的分隔线?我尝试过使用 TListView 上的属性,但仍然无法删除它上面的行...有人可以帮忙吗?

【问题讨论】:

  • 我试过那个方法,但是分隔符还在……
  • 使用Delphi 10.4 CE 并按照链接的问答中的说明操作,我成功了。所以,首先用标签表明你使用的是哪个版本的 Delphi。然后,通过编辑您的问题,描述您尝试时采取的步骤。请准确描述您的描述。

标签: android delphi firemonkey pascal tlistview


【解决方案1】:

您是否尝试过使用“DynamicAppearance”模式?但是您必须手动编写代码,在“结构”部分添加图像和文本字段,并在“onUpdateObjects”事件中管理所有内容。像这样:

procedure TForm1.FormCreate(Sender: TObject);
  var Voce : TListViewItem;
begin
      Voce := ListView1.Items.Add;
      Voce.Data['Text3'] := 'pippo 1';

      Voce := ListView1.Items.Add;
      Voce.Data['Text3'] := 'pippo 2';          
end;

procedure TForm1.ListView1UpdateObjects(const Sender: TObject;
                                    const AItem: TListViewItem);
  var ImageItem : TListItemImage;
      TextItem1 : TListItemText;
begin
      ImageItem := AItem.Objects.DrawableByName('Image2') as TListItemImage;
      TextItem1 := AItem.Objects.DrawableByName('Text3') as TListItemText;

      If Assigned(ImageItem) Then
         Begin
         ImageItem.Bitmap := ImageList1.Bitmap(TSizeF.Create(16,16),0);
         //ImageItem.PlaceOffset.X := 0;
         //ImageItem.PlaceOffset.Y := 0;
         End;

      If Assigned(TextItem1) Then
         Textitem1.TextColor := claRed;
end;

在“ImageList1”中有一个简单的白色图像。

【讨论】:

  • 你可以分享你的原型吗?我在我的项目上尝试了代码,但边界线仍然存在......
【解决方案2】:

也许可以对“自定义样式”进行操作以获得您想要的效果,但我无法做到,由于其他原因,我使用了这个程序,它可能会达到您的目的。我做了一些测试,效果很好。

在表单上放置一个 ListView。

在“对象检查器”部分: 项目外观\项目编辑外观\动态外观 ItemSpaces 左=0,右=-10

在“结构”部分: 右键单击“ListView1”,然后单击“切换设计模式” 展开“ListView1”并选择“Item”,在属性中点击“Addnew...\TImageObjectAppearance”

图像将包含一个白色位图(或其他颜色),它将覆盖一个项目和另一个项目之间的标志,在您看到项目结构的表单上,您可以根据需要手动修改图像,或写入“onUpdateObjects”事件的一些代码,这里是一个例子:

procedure TForm1.ListView1UpdateObjects(const Sender: TObject;
                                    const AItem: TListViewItem);
  var ImageItem : TListItemImage;
      TextItem1 : TListItemText;
begin
      ImageItem := AItem.Objects.DrawableByName('Image2') as TListItemImage;
      TextItem1 := AItem.Objects.DrawableByName('Text1') as TListItemText;

      //ImageItem.Bitmap := Image1.Bitmap;
      ImageItem.Bitmap := ImageList1.Bitmap(TSizeF.Create(16,16),0);
      //ImageItem.Visible := True;
      //ImageItem.ScalingMode := TImageScalingMode.Stretch;

      ImageItem.PlaceOffset.Y := -1;
      ImageItem.PlaceOffset.X := 0;
      ImageItem.Height := 2;
      ImageItem.Width := Width;
end;

要将项目添加到列表中,您需要使用以下代码:

var Voce : TListViewItem;
begin
      Voce := ListView1.Items.Add;
      Voce.Data['Text1'] := 'pippo 1';

【讨论】:

    【解决方案3】:

    更改ListviewStyle.Frame.color 属性并将其设置为等于ListviewStyle.background.color 属性。

    有很多方法可以做到这一点:

    • 更改默认样式
    • 修改自定义样式
    • 编码(但这是另一个挑战)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2017-03-12
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多