TListView - podświetlanie wybranego elementu

0

Witam, od jakiegoś czasu korzystam z komponentu TListView i mam z nim nie lada kłopot.

Mam program, w którym istnieje TListView, jeżeli zaprogramuję na przykład przycisk, by podświetlić wybrany item, nie podświetla się...

Chcę zrobić tak, że po wciśnięciu np. przycisku (dla testu), zostaje podświetlony 100 item. Jeżeli lista jest u samej góry na scrool'u, nie tylko chcę podświetlić 100 item, ale i przesunąć listę tak, żeby był widoczny.

Moje pytanie brzmi - jaką metodę wybrać do tej operacji.

Eksperymentowałem z kilkoma metodami, próbowałem:

lvList.Items[99].Selected := True;
lvList.ItemIndex := 99;

niestety, ani jedno ani drugie nie działa. Ani nie podświetla, ani indeksu nie przenosi na setny item.

Bardzo proszę o pomoc.
Pozdrawiam.

2

ListView.SetFocus;
ListView.ItemFocused := ListView.Items[99];
ListView.Selected := ListView.Items[99];

0

A co, jeżeli okno z TListView jest zablokowane lub niewidoczne?

W moim przypadku jest zablokowane, ponieważ sterowane jest z formularza wywoływanego modalnie. Metoda lvList.SetFocus generuje błąd.

0

to go zaremuj...

0

Zaremować mogę, ale zależy mi na tym, by ustawić ten komponent jako aktywny. ActiveControl odpada.

0

Zrobiłem zgodnie z opisem, zaznacza prawidłowo, ale drań nie chce się przewinąć, jeżeli jest niewidoczny. Czego jeszcze brakuje?

  for ii := 0 to lvObwody.Items.Count - 1 do
    if lvObwody.Items[ii].SubItems[0]=sSzukaj then
    begin
      lvObwody.SetFocus;
      lvObwody.ItemFocused:=lvObwody.Items[ii];
      lvObwody.Selected:=lvObwody.Items[ii];
//    lvObwody.Refresh;
      break;
    end;
 
1

Nie wiem co to znaczy, że jest niewidoczny. Sprecyzuj ma Visible ustawione na False, czy jest na innej niewidocznej aktualnie formatce? Jeżeli ma Visible na False lub Enabled na False i chcesz ustawić nań Focus to musisz mieć wspomniane własności na True. Inna metoda aby Item poza widocznym aktualnie obszarem stał się widoczny czyli ListView się na niego "przescrollował" to zrób może tak (przykład dla osobnej formatki):

//...
  with Form2 do
  begin
    with LV do
    begin
      Items.Item[99].MakeVisible(True);
      Items.Item[99].Selected := True;
    end;
    ShowModal;
  end;
//...
0

Wspaniały, jak zwykle :)
Niewidoczny, bo przeskrolowany za krawędzią, ale MakeVisible działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1