Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.29;
Скачать: CL | DM;

Вниз

Как сделать прокрутку ListView колесиком?   Найти похожие ветки 

 
MegaVolt   (2008-06-03 16:56) [0]

Проблема в том что если мышь находится над ListView а фокус на другом компоненте то прокрутка вызывается у компонента с фокусом :( Как сделать чтобы при начале прокрутки фокус переключался на ListView?


 
DiamondShark ©   (2008-06-03 17:57) [1]

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
 MouseControl: TControl;
begin
 MouseControl := ControlAtPos(ScreenToClient(MousePos), false, true);
 if (MouseControl <> ActiveControl) and (MouseControl is TWinControl) then
 begin
   TWinControl(MouseControl).SetFocus;
   Handled := true;
 end;
end;


 
MegaVolt   (2008-06-03 18:01) [2]

Пробовал нечто подобное.
В результате вначале на одну позицию сдвигается компонент с фокусом потом фокус переключается и прокрутка идёт дальше.

Т.е. я в событие FormMouseWheel попадаю уже после того как одна прокрутка произошла :( Как бы это попасть до этого?


 
MegaVolt   (2008-06-03 18:02) [3]

Упс... Упустил Handled := true; спасибо за решение.


 
MegaVolt   (2008-06-03 18:09) [4]

Хотя всё же заметно что начало прокрутки заерживается. Можно ли как то включить фокус у ListView до начала прокрутки?


 
MegaVolt   (2008-06-04 16:02) [5]

Короче сделал так. Всё пашет на ура пользуйтесь если кому надо.

procedure TForm1.CMMouseWheel(var Message: TCMMouseWheel);
var
 MouseControl: TControl;
begin
 MouseControl:=FindVCLWindow(Mouse.CursorPos);
 if (MouseControl <> ActiveControl) and (MouseControl is TWinControl)
   then
     begin
       TWinControl(MouseControl).SetFocus;
       with TMessage(Message) do
         begin
           TWinControl(MouseControl).Perform(WM_MOUSEWHEEL, WParam, LParam);
           Result:=1;
         end;
     end
   else inherited;
end;



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

Текущий архив: 2008.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
9-1171446585
Vemer
2007-02-14 12:49
2008.06.29
Какие режимы OpenGl надо включить?


15-1210699066
AEN
2008-05-13 21:17
2008.06.29
Программа для древовидных данных...


3-1201091754
Sairex
2008-01-23 15:35
2008.06.29
В чем ошибка?


15-1210654618
Slider007
2008-05-13 08:56
2008.06.29
С днем рождения ! 13 мая 2008 вторник


4-1192474636
alek
2007-10-15 22:57
2008.06.29
Рисование в, к примеру, Paint