Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
ВнизКак сделать прокрутку 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c