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

时间:2015-05-15 10:16:47

标签: delphi listviewitem delphi-xe7

我尝试做的与此图像相同

enter image description here

我尝试了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;

2 个答案:

答案 0 :(得分:2)

如果查看文档http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.ComCtrls.TListItem.Position,您将看到TListitem.Position仅在ListView视图样式为vsIcon或vsSmallIcon时有效。

因此,不应使用Position属性,而应使用DisplayRect方法http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.ComCtrls.TListItem.DisplayRect,该方法返回呈现List项的矩形。

答案 1 :(得分:0)

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

<None>

首先我在设计时安排两个对象。然后我在两个对象上设置锚点。