Как сделать скроллирование в DBLookupComboBox

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Squirrel
Сообщения: 2
Зарегистрирован: 04 июн 2013, 17:45

04 июн 2013, 18:04

Здравствуйте! Подскажите, пожалуйста, как сделать скроллирование на компоненте DBLookupComboBox. В принципе ответ на форумах нашла (с помощью процедуры MouseWheelHandler), но не могу найти как эту процедуру подвесить (у меня Delphi 7)... Для формы есть только MouseWheel, MouseWheelup, MouseWheeldown. Для DBLookupComboBox MouseWheel... вообще нет, есть только Mouse... Я уже просто вписала её и объявила, дак она считается моей собственной, а не встроенной. Пыталась вызывать в MouseWheel для формы работает только на перемещение вверх... также ругается на Message.WParam, предлагает только Message.MSG.... Вобщем, люди помогите, пожалуйста, кто чем может. Буду рада любой информации...


procedure TForm1.MouseWheelHandler(var Message: TMessage);
var
p:TPoint;
begin
GetCursorPos(p);
If WindowFromPoint(p)=DBLookupComboBox1.Handle then
begin
If Message.WParam<0 then
DBLookupComboBox1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
else
DBLookupComboBox1.Perform(WM_VSCROLL, SB_LINEUP, 0);
end;
end;
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

06 июн 2013, 11:48

Код: Выделить всё

procedure MyMouseWheelHandler(var Message: TMessage);
 var
 p:TPoint;
 begin
 GetCursorPos(p);
 If WindowFromPoint(p)=Form1.DBLookupComboBox1.Handle then
 begin
 If Message.WParam<0 then
 Form1.DBLookupComboBox1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
 else
 Form1.DBLookupComboBox1.Perform(WM_VSCROLL, SB_LINEUP, 0);
 end;
 end;
...
...
DBLookupComboBox1.MouseWheelHandler := MyMouseWheelHandler;
It's a long way to the top if you wanna rock'n'roll
Ответить