2013-12-02 3 views
0

Всякий раз, когда выбран ListboxItem, я хочу, чтобы внешний вид выбранного элемента списка был изменен (выделяется). Ниже мой код, который у меня есть. Он работает правильно и, как я ожидал, ИСКЛЮЧАЕТ, когда я прокручиваю список вниз, а затем попытаюсь выбрать другой ListBoxItem. Затем некоторые элементы вообще не меняются, некоторые не выделяют, или приложение падает, и т. Д. Почему?Как изменить внешний вид списка ListBoxItems

Delphi XE5 для мобильного приложения iOS.

procedure TForm5.ListBoxItem1Click(Sender: TObject); 
var 
    Item : TListBoxItem; 
    C : TColorBox; 
    T : TText; 
    i : Integer; 
begin 
    i := 0; 
    while i <> ListBox1.Items.Count do begin 
    Item := ListBox1.ListItems[i]; 
    T := Item.Children[1] as TText; 
    C := Item.Children[2] as TcolorBox; 
    T.Color := TAlphaColors.Black; 
    C.Visible := False; 

    i := i +1; 
    end; 
    Item := Sender as TListBoxItem; 
    T := Item.Children[1] as TText; 
    C := Item.Children[2] as TcolorBox; 

    T.Color := TAlphaColors.White; 
    C.Visible := True; 
end; 

ответ

0

Следите за выбранной вами ячейкой. Когда пользователь выбирает другой, убедитесь, что вы перерисовали ранее выбранную ячейку, а затем нарисуйте вновь выбранную ячейку.

псевдо-код:

class property: currentCell 

onCellSelection: 
previousCell = currentCell 
currentCell = selectedCell 
redrawCells:[previousCell,currentCell] 

Ваш мобильный код рисования следует учитывать свойство currentCell о том, следует ли это сделать в hilighted или нет.

Смежные вопросы