2016-11-23 99 views
-1

我用delphi 10.1標準的TListView VCL得到與按鈕列表視圖中的每一項單擊

生病嘗試和exmple是更好,但我不是在說對不起OK很不錯的說,我有標準的ListView

有下列順序

  1. 肯白,
  2. 大衛·赫弗南,
  3. 西蒙·劉易斯,
  4. 在它的項目

現在我有兩個按鈕來回和前進,當我按下前進按鈕時,它會得到列表中的第一個項目肯懷特,如果我繼續按下按鈕,它將沿列表直到它到達西蒙或最後一項。

現在它對於後退按鈕是相同的,但是它會反過來從底部到頂部直到回到Ken White。

很抱歉,如果它沒有多大意義的拼寫不是我的東西CHAPS歉意誦讀困難

+3

這是一個標準的TListView或其他東西?另外,包括這是VCL還是Firemonkey(它有所不同)。請[編輯]您的帖子以闡明這些詳細信息,幷包含填充示例列表視圖的代碼。 –

+1

你是否在向前和向後計數掙扎。你有什麼具體問題。 –

+0

你不要跑一個循環倒計時,一個倒計時。你知道關於循環。 –

回答

0

要在TListView向前移動,你可以使用GetNextItem

ListView1.Selected := ListView1.GetNextItem(ListView1.Selected, sdAll, []); 

在上面的'sdAll'指定下一個項目將是其索引高於已選項目的項目。此方法在沒有選定項目時選擇第一個項目。當最後一個項目已被選中時,在呼叫返回後它將被取消選擇。

要走向相反的方向,如果合適,您可以傳遞'sdLeft'或'sdAbove'而不是'sdAll'。如果沒有,因爲沒有'GetPreviousItem',你必須編寫代碼來選擇其索引低於已選項目的項目。例如:

if not Assigned(ListView1.Selected) then 
    ListView1.Selected := ListView1.Items[ListView1.GetCount - 1] 
else if ListView1.Selected.Index = 0 then 
    ListView1.Selected := nil 
else 
    ListView1.Selected := ListView1.Items[ListView1.Selected.Index - 1]; 

當選擇了最後一個項目,你按你向前無所求發生你可能有,如果你想不同的行爲,修改代碼,例如。

+0

感謝那個sertac :) –

相關問題