Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.03.2007, 23:29
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Авто прокрутка для ListView.....

Помогите с решить проблему с ListView-ом
Вопрос таков: как сделать что бы после поиска лист ListView покозал выбраную строчку.... а то оно находит виберает а прокрутить страничку до выбранной строчки не получается...помогите пожалуста решить проблему

Будет лучше если напишете исходник......
ЗАРАНЕЕ БЛАГОДАРЮ
Ответить с цитированием
  #2  
Старый 08.03.2007, 12:22
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

исходник писать лень, но вот из винапи:
SetScrollPos(
HWND hWnd, // handle of window with scroll bar
int nBar, // scroll bar flag
int nPos, // new position of scroll box
BOOL bRedraw // redraw flag
);
если известно кол-во строк и номер этой строки, думаю проблем быть не должно, так же функция может понадобиться:
GetScrollRange(
HWND hWnd, // handle of window with scroll bar
int nBar, // scroll bar flags
LPINT lpMinPos, // address of variable that receives minimum position
LPINT lpMaxPos // address of variable that receives maximum position
);
Ответить с цитированием
  #3  
Старый 08.03.2007, 15:31
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Дааа что то трудновато стало
Код:
for i:=0 to ListView1.Items.Count-1  do
begin
If pos(Edit1.text, ListView1.Items[i].Caption)>0 then
ListView1.Selected:=ListView1.Items[i];
нельзяли поточнее, и вопрос можно ли прокрутить до выбранного...?
Ответить с цитированием
  #4  
Старый 12.03.2007, 23:41
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

если стиль Report то можно и так вроде
ListView1.Scroll(0, Num); //Num - номер выделенного эл-та
Ответить с цитированием
  #5  
Старый 13.03.2007, 22:22
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Я сделал вот что но не помогает
Код:
for i:=0 to ListView1.Items.Count-1  do
begin
If pos(Edit1.text, ListView1.Items[i].Caption)>0 then
ListView1.Selected:=ListView1.Items[i];
ListView1.Scroll(0, i);
прокручивает до конца листа и все!
Ответить с цитированием
  #6  
Старый 14.03.2007, 22:20
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

а так:
Код:
for i:=0 to ListView1.Items.Count-1  do
begin
If pos(Edit1.text, ListView1.Items[i].Caption)>0 then begin
ListView1.Selected:=ListView1.Items[i];
ListView1.Scroll(0, i);
end;
Ответить с цитированием
  #7  
Старый 15.03.2007, 21:17
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Тот же еффект. прокручивает до конца и все..
Ответить с цитированием
  #8  
Старый 15.03.2007, 22:11
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

бред. ну у мя в почти пустом проекте прокручивалось нормально вроде.

а когда прокручивается, что выделенный элемент оказывается уеханным вверх?
Ответить с цитированием
  #9  
Старый 15.03.2007, 23:05
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

Цитата:
Сообщение от Keygenmusic
а когда прокручивается, что выделенный элемент оказывается уеханным вверх?
Ага оно просто прокручивает до конча и все!
Ответить с цитированием
  #10  
Старый 17.03.2007, 00:45
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

тогда по сложному
Код:
var rct:TRECT;
const LVM_GETITEMRECT=4110;  LVIR_BOUNDS=0;
...
for i:=0 to ListView1.Items.Count-1  do
begin
If pos(Edit1.text, ListView1.Items[i].Caption)>0 then begin
ListView1.Selected:=ListView1.Items[i];
rct.Left:=0;
SendMessage(ListView1.Handle,LVM_GETITEMRECT,0,integer(@rct));
ListView1.Scroll(0,(i-ListView1.TopItem.Index)*(rct.Bottom-rct.Top));
ListView1.SetFocus;
end;
Ответить с цитированием
  #11  
Старый 17.03.2007, 01:37
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

Да вот эт другое дело но и тут есть но как пихать этот кодик в Edit1Change а то у меня что то не получается после ввода первой буквы оно остановливается и прихотится заного выбрать Edit1
Ответить с цитированием
  #12  
Старый 17.03.2007, 12:15
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

тогда убери ListView1.SetFocus; но теперь не будет видно, что элемент до которого прокручено выделен.
Ответить с цитированием
  #13  
Старый 17.03.2007, 22:25
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

СПАСИБО ОГРОМНОЕ ПОРОБУЮ!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter