Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2009, 19:43   #1
Dr.Badnezz
Ученик
Форумчанин
 
Регистрация: 19.09.2008
Сообщений: 119
По умолчанию как прокрутить ListBox с помощью TrackBar

Всем привет!!! Вопрос:
как прокрутить ListBox с помощью TrackBar? Подскажите пожалуйста
Dr.Badnezz вне форума Ответить с цитированием
Старый 05.01.2009, 20:40   #2
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

ничего не приходит в голову кроме как

procedure TrackBar1Change(Sender: TObject);
begin
listbox1.ItemIndex:=round((trackbar 1.Position / (trackbar1.Max / listbox1.Items.Count)));
end;

и придется обнулять
listbox1.ItemIndex:=-1
чтобы визуально не было видно меняющийся itemindex..
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 05.01.2009, 21:03   #3
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

ну а я как всегда попробовал свое любимое WinApi
но прикол состоит в самой корявости стандартного ListBox
если послать собщение
Код:
SetScrollPos(ListBox1.Handle, SB_VERT, TrackBar1.Position,true);
то видно что скрол скрол двигается но при этом итемсы остаются на месте. посмотрел исходники и обнаружил что там это событие не обрабатывается. А вот скрол создает система и двигает им вот изза этого и казус тако. у их там изминение позицыи стоит либо от мыши либо от клавиши. посему прийдется перейти на какойто другой компонент либо дописать его.
если понадобится то вот получение инфы от скрола
Код:
procedure TForm1.ChangeList;
var
  lpMinPos, lpMaxPos: Integer;
begin
  GetScrollRange(ListBox1.Handle, SB_VERT, lpMinPos, lpMaxPos);
  TrackBar1.Min := lpMinPos;
  TrackBar1.Max := lpMaxPos;
  TrackBar1.Position := GetScrollPos(ListBox1.Handle, SB_VERT);
end;
ViktorXP вне форума Ответить с цитированием
Старый 05.01.2009, 21:52   #4
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 103
По умолчанию

Код:
 //Scroll Up
 SendMessage(ListBox1.Handle, WM_VSCROLL, 0, 0);
 //Scroll down
 SendMessage(ListBox1.Handle, WM_VSCROLL, 1, 0);
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Старый 06.01.2009, 14:54   #5
Dr.Badnezz
Ученик
Форумчанин
 
Регистрация: 19.09.2008
Сообщений: 119
По умолчанию

Всем спасибо!
Dr.Badnezz вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как автоматически прокрутить ScroolBar в WebBrowser SeRhy Общие вопросы Delphi 3 19.08.2008 08:38
Как поместить trackbar в statusbar SeRhy Общие вопросы Delphi 4 11.06.2008 02:58
как вы думаете можно с помощью delphi написать online игру ну к примеру как muonline 0pex Свободное общение 9 28.06.2007 13:20
TrackBar как в Windows Media Player Viteef Компоненты Delphi 11 09.05.2007 09:42
как управлять звуком правой и левой колонок с помощью TrackBar? ZhekON Win Api 8 12.04.2007 13:50