Listview specyficzne sortowanie ... problem

0

Witam.

Mam listview sortowane przez kliknięcie w kolumnę i item w popupmenu, po stringach datach integerach ( w zależności która kolumna kliknięta ) i teraz mam problem bo chcę dodać coś co ma być niezbędne w moim programie:

obok listview mamy edit, wpisując w niego literki ListView selekcjonuje po item.caption dane rekordy i chowa je ...
Czyli edit.onchange :=

wpisuje np literkę a w edit

w listview znikają wszystkie rekordy których caption nie zaczyna się na 'a', jednak jak usuniemy 'a' z edita listview powraca do pierwotnej ilości rekordów ... ktoś ma jakiś pomysł jak to ugryźć ?

Pozdrawiam.

0

no i? przecież to intuicyjne chyba jest, że jak usuniesz to po czym ma szukać to pokazujesz całość

0

To co odpisałeś to wiadome że tak musi zrobić, ale wtedy nic nie przychodzi mi do głowy jak całe list view przechowywać w zbiorze bo do czego ma przywrócić jeśli fizycznie nie posiada danych rekordów ? idealna była by możliwość nadania danemu rekordowi właściwości visible ;) Dlatego pytałem czy jest jakaś możliwość aby takie coś zasymulować ? ( a nie przemielać bazy co zmianę litery w edit )

0

no widzisz ale nie napisałeś tego w pierwszym poście :p

z mojego punktu widzenia najlepsze będzie użycie VirtualTreeView zamiast ListView. Jest trudniejszy na początku, ale ma ogromne możliwości (min. sortowanie i chowanie elementów).
Co do ListView to nie mam pomysłu poza ponownym dorzuceniem usuniętych elementów

0

Dzięki za odpowiedź. Skoro tak twierdzisz to pewnie tak jest(Twoja wiedza rozchwytywana na wielu forach ^^).

Jakby ktoś potrzebował to wkleję kodzik jaki wykorzystam do wyszukiwania rekordów przez tedit.
listview.hideselection musi byc false.

edit1.onchange:

var
  lvItem: TListItem;
begin
  if listview1.Items.Count = 0 then exit;
  lvItem := ListView1.FindCaption(0,
                                  edit1.Text,
                                  True,
                                  True,
                                  False);
  if lvItem <> nil then
  begin
    ListView1.Selected := lvItem;
    lvItem.MakeVisible(True);
    ListView1.SetFocus;
   edit1.SetFocus;
    edit1.SelStart := (length(edit1.Text));
  end;
  end;

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