Главная страница
    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.058 c
4-1192188544
arab
2007-10-12 15:29
2008.06.29
Арабский язык &amp; Delphi


15-1210850308
fuzzy
2008-05-15 15:18
2008.06.29
Кнопки в стиле Media Player 11


3-1201091924
homm
2008-01-23 15:38
2008.06.29
SQL. Надо обрезать символы пробельной группы


11-1190391967
MTsv DN
2007-09-21 20:26
2008.06.29
Как "вырезать" файл в Clipboard???


2-1212563351
VovKul
2008-06-04 11:09
2008.06.29
Проблема загрузки шрифта





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