Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetScroolInfo. Как использовать? Прокрутка 
:(
    Опции темы
Beltar
Дата 25.3.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Хочу сделать прокрутку для TreeView и ListView. В хелпе нашел ф-ии GetScrollInfj и SetScrollInfo, но не могу понять как их использовать. Вызывая GetScrollInfo(TV1.Handle,SB_CTL or SB_Vert,ScInfo); получаю какую-то ерунду.
Или может я вообще не в ту сторону копаю.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
ama_kid
Дата 26.3.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Ввиду того, что проект не прикреплен к вопросу, а самому генерировать такую ситуацию долго, попробую пофантазировать...  smile 
Цитата
Вызывая GetScrollInfo(TV1.Handle,SB_CTL or SB_Vert,ScInfo); получаю какую-то ерунду.
читаю мануал по GetScrollInfo:
Цитата
SB_CTL    Retrieves the parameters for a scroll bar control. The hwnd parameter must be the handle of the scroll bar control. 
Я не знаю точно, что такое TV1.Handle, но это похоже больше на хендл TreeView, чем на хендл скроллбара. Хелп же указывает на то, что при указании параметра SB_CTL надо задавать первым параметром хендл своего скроллбара...
Ну и кроме того смотрим на само описание второго параметра:
Цитата
fnBar - Specifies the type of scroll bar for which to retrieve parameters. This parameter can be one of the following values
Что нам говорит, что этот параметр не может быть наложенными друг на друга параметрами SB_CTL и SB_Vert. Имхо надо указывать только один из этих параметров. В качестве дополнительного подтверждения этого моего тезиса смотрим дефинишен этих параметров:
Цитата

  {$EXTERNALSYM SB_HORZ}
  SB_HORZ = 0;
  {$EXTERNALSYM SB_VERT}
  SB_VERT = 1;
  {$EXTERNALSYM SB_CTL}
  SB_CTL = 2;
  {$EXTERNALSYM SB_BOTH}
  SB_BOTH = 3;
Таким образом: SB_CTL or SB_Vert = 1 or 2 = 3 = SB_BOTH - а этот параметр вообще на функцию GetScrollInfo не должен передаваться... Вывод: задавая на входе ерунду - на выходе ты не сможешь получить алмазы...  smile 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Beltar
Дата 26.3.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



2 ama_kid

Цитата

но это похоже больше на хендл TreeView


Да от TreeView. Или я тупой, или что, но я не вижу у TreeView хэндла скроллбара. И это меня немного смущает.

Цитата

Что нам говорит, что этот параметр не может быть наложенными друг на друга параметрами SB_CTL и SB_Vert.


Вот это я честно скажу просмотрел.

Цитата
задавая на входе ерунду - на выходе ты не сможешь получить алмазы...


Если бы я получил алмазы, то ничего бы не спрашивал.
Переформулирую вопрос.
Как программно прокрутить TreeView и ListView&


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
VICTAR
Дата 26.3.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Код

SendMessage(TreeView.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
SendMessage(TreeView.Handle, WM_VSCROLL, SB_LINEUP, 0);

PM MAIL   Вверх
Sunvas
Дата 26.3.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Как вариант:
Код

listview1.Perform(WM_VSCROLL, SB_LINEDOWN, 0);
listview1.Perform(WM_VSCROLL, SB_LINEUP, 0);



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
ama_kid
Дата 27.3.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Beltar @  26.3.2007,  19:07 Найти цитируемый пост)
Да от TreeView. Или я тупой, или что, но я не вижу у TreeView хэндла скроллбара. И это меня немного смущает.
Немного поясню этот момент: Задавая параметр SB_CTL - ты в качестве хендла должен указывать хендл скроллбара не от TreeView, а отдельного элемента (насколько я помню там есть такой - TScrollBar чтоли называется, не помню). Если ты хочешь получить параметры скроллбара, встроенного в другой элемент управления, тогда ты должен задавать хендл этого элемента, но SB_CTL уже не должен указывать, а надо - SB_VERT или SB_HORZ - тогда система сама вытащит соответствующий скроллбар. Поэтому я и фантазировал, не видя проекта (откуда я знаю, какой у тебя там скроллбар? Свой отдельный или ты таким образом пытаешься достучаться до скроллбара тривью...)



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Alexeyt
Дата 27.3.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



Устанавливаем гориз. скроллбар.
Handle - хендл нашего компонента, например, ListView.
Max, Page, Pos: твои числа.

Код

var
  Max, Page, Pos: Integer;
  si: TScrollInfo;
....
  FillChar(si, SizeOf(si), 0);
  si.cbSize := SizeOf(si);
  si.fMask := SIF_ALL;
  si.nMin := 0;
  si.nMax := Max;
  si.nPage := Page;
  si.nPos := Pos;

  SetScrollInfo(Handle, SB_HORZ, si, True);


Это сообщение отредактировал(а) Alexeyt - 27.3.2007, 20:33
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.