Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];

Вниз

Заставить ScrollBox реагировать на перетаскивание ползунка?   Найти похожие ветки 

 
AlexeyT ©   (2006-12-07 17:07) [0]

Хочется реакции на перетаскивание ползунка. Кажется, в API это соотв-ет параметру SB_THUMBTRACK сооб-я WM_V/HSCROLL. Что делать?


 
kivadim   (2006-12-07 17:49) [1]

может поможет... но правда др компонент..

Нижеприведенный пример передвигает второй ScrollBar на такое же количество едениц, на которое передвинет пользователь первый. Т.е. синхронизирует их.



type
{$IFDEF WIN32}
 WParameter = LongInt;
{$ELSE}
 WParameter = Word;
{$ENDIF}
 LParameter = LongInt;

 {Declare a variable to hold the window procedure we are replacing}
var
 OldWindowProc: Pointer;

function NewWindowProc(WindowHandle: hWnd;
 TheMessage: WParameter;
 ParamW: WParameter;
 ParamL: LParameter): LongInt
{$IFDEF WIN32} stdcall;
{$ELSE}; export;
{$ENDIF}
var
 TheRangeMin: integer;
 TheRangeMax: integer;
 TheRange: integer;
begin

 if TheMessage = WM_VSCROLL then
 begin
   {Get the min and max range of the horizontal scroll box}
   GetScrollRange(WindowHandle,
     SB_HORZ,
     TheRangeMin,
     TheRangeMax);
   {Get the vertical scroll box position}
   TheRange := GetScrollPos(WindowHandle,
     SB_VERT);
   {Make sure we wont exceed the range}
   if TheRange < TheRangeMin then
     TheRange := TheRangeMin
   else if TheRange > TheRangeMax then
     TheRange := TheRangeMax;
   {Set the horizontal scroll bar}
   SetScrollPos(WindowHandle,
     SB_HORZ,
     TheRange,
     true);
 end;

 if TheMessage = WM_HSCROLL then
 begin
   {Get the min and max range of the horizontal scroll box}
   GetScrollRange(WindowHandle,
     SB_VERT,
     TheRangeMin,
     TheRangeMax);
   {Get the horizontal scroll box position}
   TheRange := GetScrollPos(WindowHandle,
     SB_HORZ);
   {Make sure we wont exceed the range}
   if TheRange < TheRangeMin then
     TheRange := TheRangeMin
   else if TheRange > TheRangeMax then
     TheRange := TheRangeMax;
   {Set the vertical scroll bar}
   SetScrollPos(WindowHandle,
     SB_VERT,
     TheRange,
     true);
 end;

 { Call the old Window procedure to }
 { allow processing of the message. }
 NewWindowProc := CallWindowProc(OldWindowProc,
   WindowHandle,
   TheMessage,
   ParamW,
   ParamL);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 { Set the new window procedure for the control }
 { and remember the old window procedure. }
 OldWindowProc := Pointer(SetWindowLong(ScrollBox1.Handle,
   GWL_WNDPROC,
   LongInt(@NewWindowProc)));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 { Set the window procedure back }
 { to the old window procedure. }
 SetWindowLong(ScrollBox1.Handle,
   GWL_WNDPROC,
   LongInt(OldWindowProc));
end;


 
AlexeyT ©   (2006-12-07 18:10) [2]

Мм.. даже на знаю. Тут заменяется оконная процедура в формы - как то же сделать для scrollbox"а, можно у него заменить оконную процедуру или нет?


 
Gadenysh   (2006-12-07 18:40) [3]

tracking := true


 
AlexeyT ©   (2006-12-07 18:50) [4]


> tracking := true


:-)

Спасибо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
15-1165184452
Pr!m@ry
2006-12-04 01:20
2006.12.24
Пароль от ICQ


1-1162984667
Димыч
2006-11-08 14:17
2006.12.24
Прилипание дочерних окон к главному окну


2-1165238459
Kostafey
2006-12-04 16:20
2006.12.24
Экспорт таблицы MS SQL Server


15-1164840692
Фотто
2006-11-30 01:51
2006.12.24
Существуют ли он-лайн преобразователи паскаля в html ?


4-1155593723
Sergey_FV
2006-08-15 02:15
2006.12.24
Quick Launch под NT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский