2017-05-10 23 views

답변

5

enter image description here

//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; 
+0

는 부동 소수점 값을 계산하기 위해 필요합니까? 'div'만으로 충분하지 않을까요? –

+0

또한 나는 OP가 수직 중앙 항목을 선택하려고하지 않고 선택한 항목을 수직 가운데 정렬한다고 생각합니다. –

+0

당신은 div에 대해 옳았습니다. 코드의 일부분을 변경했습니다. 수직 중심 아이템을 선택하는 대신 선택한 아이템을 수직으로 가운데 맞추기를 원한다면이 대답을 변경하거나 제거 할 것입니다. – Kohull