【问题标题】:Removing Items from TFramedVertScrollBar Correctly?正确地从 TFramedVertScrollBar 中删除项目?
【发布时间】:2019-11-16 19:32:34
【问题描述】:

我正在尝试创建一个Previewlist,在其中我使用以下代码在TFramedVertScrollbar 中添加图像和删除按钮:

var
PreviewList: TFramedVertScrollBox;
i: integer;
...
procedure TDashboard.AddClick(Sender: TObject);
var
  sImg: TImage;
  sBtn: TButton;
  sbit: TBitmap;
begin
  sbit := TBitmap.Create;
  try
    with sbit do
    begin
      Width := Image1.Bitmap.Width;
      Height := Image1.Bitmap.Height;
      Assign(Image1.Bitmap);
    end;
    sImg := TImage.Create(PreviewList);
    with sImg do
    begin
      Align := TAlignLayout.Top;
      Position.X := i * Height;
      Height := 60;
      Margins.Bottom := 2;
      Bitmap.Assign(sbit);
      Parent := PreviewList;
      WrapMode := TImageWrapMode.Stretch;
      onClick := PreviewItemClick;
    end;
    sBtn := TButton.Create(sImg);
    with sBtn do
    begin
      StyleLookup := 'listboxdeleteitem';
      Position.X := sImg.Width - 25;
      Position.Y := 5;
      Width := 15;
      Height := 15;
      Text := 'X';
      Parent := sImg;
      onClick := PreviewItemClick;
    end;
    i := i + 1;
  finally
    sbit.Free;
    Image1.Bitmap.Assign(nil);
  end;
end;

PreviewItem 的创建工作但不能删除,因为在删除 PreviewItem 时 SystemBar 不响应(例如无法移动或关闭或单击)或不接受鼠标事件,我必须单击表单中的其他组件让它再次响应。

我尝试了两个版本的 PreviewListClick 首先如下:

begin
 PreviewList.BeginUpdate;
 Obj := TButton(Sender).Parent;
 FreeAndNil(Obj); 
 PreviewList.EndUpdate;
end;

以上使 SystemBar 没有响应,所以我这样做了:

begin
 PreviewList.BeginUpdate;
 PreviewList.RemoveObject(TButton(Sender).Parent);
 PreviewList.EndUpdate;
end;

SystemBar 在这种情况下响应并且项目被删除但是有一个问题,在单击 PreviewItem 的 Remove 按钮后,PreviewList 项目没有更新。

例如。如果列表中有四个项目,如果我删除第二个项目,那么项目将被删除,但列表不会更新,因为第二个项目的位置仍然保留。现在 PreviewList 看起来像这样:

Item1->BlankSPace->Item2->Item3

如何正确添加和删除项目?

【问题讨论】:

  • 创建一个函数,您可以在其中更新项目在创建和删除时的位置。然后在添加或删除项目时调用它
  • @NasreddineGalfout 好吧,我找到了一个解决方案,直到它显示任何错误。谢谢你的时间晚安。

标签: delphi firemonkey delphi-10.3-rio


【解决方案1】:

从内容中删除对象效果很好

PreviewList.Content.RemoveObject(TButton(Sender).Parent);

【讨论】:

    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 2016-12-25
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多