如何垂直居中 TListBox 项目?
How to vertically center TListBox item?
所以我想将 TListBox
(而不是 TListView
)项垂直居中。
我可以使用 TopIndex
属性,但我该怎么做呢?
如果项目较少,滚动条不出现,则不需要居中,只选择默认项目即可。
像这样:
//IF YOU WANT TO SELECT THE CENTER ITEM
procedure TForm2.Center;
var VisibleItems : Integer;
begin
VisibleItems := ListBox1.ClientHeight div ListBox1.ItemHeight;
ListBox1.TopIndex := Trunc((ListBox1.Items.Count / 2) - (VisibleItems / 2));
if ListBox1.Items.Count > VisibleItems then
ListBox1.Selected[ListBox1.TopIndex + (VisibleItems div 2)] := True
else
ListBox1.Selected[ListBox1.Items.Count div 2] := True;
end;
//IF YOU WANT TO CENTER A ITEM
procedure TForm2.Center(Index : Integer);
var VisibleItems : Integer;
begin
VisibleItems := ListBox1.ClientHeight div ListBox1.ItemHeight;
if Index > VisibleItems then
ListBox1.TopIndex := Index - (VisibleItems div 2);
end;
所以我想将 TListBox
(而不是 TListView
)项垂直居中。
我可以使用 TopIndex
属性,但我该怎么做呢?
如果项目较少,滚动条不出现,则不需要居中,只选择默认项目即可。
像这样:
//IF YOU WANT TO SELECT THE CENTER ITEM
procedure TForm2.Center;
var VisibleItems : Integer;
begin
VisibleItems := ListBox1.ClientHeight div ListBox1.ItemHeight;
ListBox1.TopIndex := Trunc((ListBox1.Items.Count / 2) - (VisibleItems / 2));
if ListBox1.Items.Count > VisibleItems then
ListBox1.Selected[ListBox1.TopIndex + (VisibleItems div 2)] := True
else
ListBox1.Selected[ListBox1.Items.Count div 2] := True;
end;
//IF YOU WANT TO CENTER A ITEM
procedure TForm2.Center(Index : Integer);
var VisibleItems : Integer;
begin
VisibleItems := ListBox1.ClientHeight div ListBox1.ItemHeight;
if Index > VisibleItems then
ListBox1.TopIndex := Index - (VisibleItems div 2);
end;