Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
15-1210697006
Ega23
2008-05-13 20:43
2008.06.29
Филосовский вопрос


2-1212261234
Вася
2008-05-31 23:13
2008.06.29
Помогите!!!


2-1212586787
Ultimate
2008-06-04 17:39
2008.06.29
Слежка за буфером обмена...


3-1201011542
Olegus
2008-01-22 17:19
2008.06.29
ParamByName


2-1212397067
TBase_Tree
2008-06-02 12:57
2008.06.29
Помогите с Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский