Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TListView


Автор: Akella 16.4.2005, 12:25
Выполняя поиск по TListView нужно прокрутить программно до найденного элемента.
Свойство ViewStyle:=vsList;
если так
Код

  lvFiles.ScrollBy(lv.Index,0);

то получается не очень-то получается.



Код


procedure TfmFindTlf.bbFindClick(Sender: TObject);
Var
 _f:integer;
 lv:TListItem;
begin
  with fmMain do begin
    lvFiles.ClearSelection;
    For _f:=0 to lvFiles.Items.Count-1 do begin
      lv:=lvFiles.Items[_f];
      if Pos(edFind.Text,lv.Caption) <> 0 then begin
        if lv <> nil then begin
          lvFiles.Selected:= lv;
          lvFiles.ScrollBy(lv.Index,0);//нужно прокрутить
          exit;
        end;
      end;//if Pos(edFind.Text,lvFiles.Items[_f].Caption) <> 0 then begin
    end;//for
  end;//with
  ShowMessage('Телефон не найден');
end;



Внимание, вопрос! КАК?

Автор: z-END 16.4.2005, 12:50
Код

   if lv <> nil then 
      begin
          lvFiles.Selected := lvFiles.Items[_f];
          lvFiles.Items[_f].MakeVisible (false);
          exit;
        end;

Попробуй так...

Автор: Akella 16.4.2005, 12:58
Решил немного по другому

Код

procedure TfmFindTlf.bbFindClick(Sender: TObject);
Var
 _f:integer;
 lv:TListItem;
begin
  with fmMain do begin
    lvFiles.ClearSelection;
    For _f:=0 to lvFiles.Items.Count-1 do begin
      lv:=lvFiles.Items[_f];
      if Pos(edFind.Text,lv.Caption) <> 0 then begin
        if lv <> nil then begin
          lvFiles.Selected:= lv;
          lvFiles.Selected.MakeVisible(false);
          exit;
        end;
      end;//if Pos(edFind.Text,lvFiles.Items[_f].Caption) <> 0 then begin
    end;//for
  end;//with
  ShowMessage('Телефон не найден');
end;


Добавлено @ 13:00
Цитата(z @ 16.4.2005, 12:50)
lvFiles.Selected := lvFiles.Items[_f];
          lvFiles.Items[_f].MakeVisible (false);


MakeVisible относится к TListItem поэтому необязательно так делать, ведь selected тоже относится к TListItem.

Всё равно благодарю, за мысль в правильном направлении.
Добавлено @ 13:01
Alex, не хотел бы внести в FAQ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)