Delphi 如何将tpanel与listview项目的最底部对齐

Delphi 如何将tpanel与listview项目的最底部对齐,delphi,listviewitem,delphi-xe7,Delphi,Listviewitem,Delphi Xe7,我尝试做的和这张图片一样 我尝试过的东西panel1.top:=ListView1.Items[i].position.Y 但这个技巧并没有成功,是否有可能在某些项目的底部对齐Tpanel 添加的实际代码 procedure Ttestthreading.streamClick(Sender: TObject); var i, R: integer; begin if stream.Caption = 'stream' then begin for i := 0 to Li

我尝试做的和这张图片一样

我尝试过的东西
panel1.top:=ListView1.Items[i].position.Y

但这个技巧并没有成功,是否有可能在某些项目的底部对齐Tpanel

添加的实际代码

procedure Ttestthreading.streamClick(Sender: TObject);
var
  i, R: integer;
begin
  if stream.Caption = 'stream' then
  begin
    for i := 0 to ListView1.Items.Count - 1 do
      if ListView1.Items[i].SubItems[3] = IntToStr(UniqueID) then
      begin
        R := ListView1.Items[i].Index;
        panel2.Top := ListView1.Items[i].Position.Y;
      end;
    ExchangeItems(ListView1, R, 0);
    stream.Caption := 'stopstream';
    panel2.Visible := true;

    // start stream
  end
  else if stream.Caption = 'stopstream' then
  begin
    ExchangeItems(ListView1, R, 0);
    stream.Caption := 'stream';
    panel2.Visible := false;
    // stopstream

  end;
end;

获取新表单,复制此代码并将其粘贴到表单上

object ListView1: TListView
  Left = 0
  Top = 40
  Width = 250
  Height = 296
  Anchors = [akLeft, akTop, akRight, akBottom]
  Columns = <>
  TabOrder = 0
end
object Panel1: TPanel
  Left = 0
  Top = 0
  Width = 250
  Height = 41
  Anchors = [akLeft, akTop, akRight]
  Caption = 'Panel1'
  TabOrder = 1
end
对象列表视图1:TListView
左=0
Top=40
宽度=250
高度=296
锚定=[akLeft、akTop、akRight、akBottom]
列=
TabOrder=0
结束
对象面板1:TPanel
左=0
Top=0
宽度=250
高度=41
锚定=[akLeft、akTop、akRight]
标题='Panel1'
TabOrder=1
结束

首先,我在设计时排列这两个对象。然后我在两个对象上设置了锚

如果查看文档,您将看到TListitem.Position仅在ListView视图样式为vsIcon或vsSmallIcon时有效


因此,与其使用Position属性,不如使用DisplayRect方法,该方法返回呈现列表项的矩形。

我担心这与实际情况相差甚远question@DelphiStudent“将这个灰色面板与项目的最底部对齐”引发了无数个问题。它是一个。两个还是三个组件。它是什么组件?如果是灰色面板上方的3个组件,请查看添加到其中的实际代码的问题,这是FMX。。。你照片中的灰色面板在哪里?你用箭头指向的是1或2像素高的线吗?您是否尝试将
Bottom
设置为面板的
Align
属性?这是一个vcl应用程序@TLama,我创建了listview并在其上绘制了一些渐变,我尝试做的是将这条1像素线与我所说的实际物品高度的按钮对齐,然后将该线绘制到物品矩形的底部。但我不能,因为有一个面板的东西。因此,您有一个列表视图项的父级面板(什么?)?或者这是怎么回事?好的,我会描述,首先我不想在所有项目下画线,这个1像素的面板在默认情况下是不可见的,直到这个应用程序的一些客户端点击一些按钮,在他的项目下用这条线标记他自己哦,所以它不是一个
TPanel
控件,而是一个你称之为面板的东西。但为什么要设置为
Panel1
thing
Top
属性?恐怕我还是搞不懂这件事。item rendering events为您提供内容矩形,因此使用它们并在其底部附近进行渲染。如果此人希望在列表框中绘制,他们应该按照您所说的那样获取矩形,然后实现所有者绘制。感谢您提供的链接+1,并根据公式接受