3
TListBox
(TListView
ではなく)アイテムを垂直方向に中央に配置したいと考えています。TListBoxアイテムを垂直に配置する方法は?
私はTopIndex
のプロパティを使用できますが、どうすればよいのですか?
スクロールバーが表示されないようなアイテムが少ない場合は、センタリングは必要ありません。デフォルトアイテムの選択だけで問題ありません。
このような何か:
TListBox
(TListView
ではなく)アイテムを垂直方向に中央に配置したいと考えています。TListBoxアイテムを垂直に配置する方法は?
私は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;
は、それが浮動小数点値を計算するために、必要ですか? 'div'で十分ではないでしょうか? –
さらに、私は、OPが垂直中心のアイテムを選択するのではなく、選択されたアイテムを垂直に中心に置くことを望んでいると思います。 –
divについては正しいですが、コードの一部を変更しました。縦の中心の項目を選択するのではなく、選択した項目を縦に並べたい場合は、この回答を変更または削除します。 – Kohull