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
thingTop
属性?恐怕我还是搞不懂这件事。item rendering events为您提供内容矩形,因此使用它们并在其底部附近进行渲染。如果此人希望在列表框中绘制,他们应该按照您所说的那样获取矩形,然后实现所有者绘制。感谢您提供的链接+1,并根据公式接受