wyszukiwanie w TreeView

0

szukałem, ale nie znalazłem... ma ktoś jakiś pomysł?

pozdro.

0

a napisać tak trudno?wystarczy lecieć po itemach (liniowo) i sprawdzać z podanym parametrem. proste? wykonać!

0

dobra... wyskrobalem cos takiego:

var
i: Integer;
begin
for i:= TreeView.Selected.Level + 1 to TreeView.Items.Count - 1 do
if Pos(UpperCase(EditFind.Text),UpperCase(TreeView.Items[i].Text)) > 0 then
begin
TreeView.SetFocus;
TreeView.Items.Item[i].Selected := True;
Break;
end;
end;

jednak bez sensu byloby zecie jakby cos jak zwykle sie nie spier***
postaram sie przedstawic problem -

w TreeView mam taka liste

  1. aaaaa
    1.1 dddd
    1.2 dsdd
    1.3 dddd
  2. dsdsd
    2.1 ddd
    2.1 asas
  3. ddad
    3.1 sda
    3.2 daa
  4. jhgjg
    4.1 asda
    4.2 ddasda
    4.3 dsaa

i teraz tak, petelka ktora przedstawilem wyzej wyszukuje tylko w pierwszym czlonie tej listy, czyli w

              1. aaaaa
                 1.1 dddd
                 1.2 dsdd
                 1.3 dddd

tak wiec jezeli chce wyszukac z CALEJ listy slowo/znak np. "1" to procedura zaznacza mi pozycje 1. aaaaa i po nastepnym kliknieciu kolejne czyli: 1.1 dddd itd... i to jest ok. ale nie wiem jakim cudem w konsekwencji klikania znajduje mi tylko w tym pierwszym bloku?? znajduje mi 1.1 dddd, 1.2 dddd, 1.3 dddd, a powinno brac pod uwage jeszcze kolejne wiersze np.: 2.1 ddd, 2.1 asas itd...
probowalem nie stosowac procedury Break, i wtedy wyszukiwana byla cala lista ale niestety wszystko bylo robione praktycznie naraz i zaznaczany byl ostatni wers listy ktory zawiera szukane slowo/znak.

staram sie naknajdokladniej opisac moj problem. nie wiem dlaczego tak sie dzieje. logicznie patrzac na ta procedure wszystko jest OK. ale dlaczego efekt jest przeciwny?? i dlaczego bez break wyszukuje w calej liscie a z break tylko w pierwszym czlonie? to wyglada tak jakby procedura wyszukiwala tylko do momentu napotkania kolejnego punktu rozwiniecia listy. odpalcie delphi i sami zobaczcie jakie cuda sie dzieja

[glowa]

pozdro.

0

for i := 0 to TreeView1.Items.Count - 1 do
if Pos('a', TreeView1.Items[i].Text)>0 then robcos

//do ponizej

sorki, mialo byc:
for i := TreeView.Selected.AbsoluteIndex +1 to ...

0

poza tym ze twoja zaczyna sie od indexu = 0 a moja od zaznaczonego... to powiedz mi czym sie rozni moja procedura od twojej?

pozdro.

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