我尝试做的与此图像相同
我尝试了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;
答案 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>
首先我在设计时安排两个对象。然后我在两个对象上设置锚点。