1 (edited by sibprogsistem 2021-02-20 21:37:00)

Topic: положение курсора мышки

прокрутка мышкой срабатывает когда та находится над формой, но если на форма забита компонентами, то наведение мышки на саму форму не отслеживается..

как решить эту проблему?
или мне каждый компонент на форме подписывать на событие OnMouseEnter, что бы отследить этого зверя?

Re: положение курсора мышки

sibprogsistem wrote:

...положение курсора мышки
...прокрутка мышкой....
...OnMouseEnter...

sibprogsistem wrote:

как решить эту проблему?

Как-то более связно выразив мысли наверное, ибо части вопроса между собой не вяжутся...

3 (edited by sibprogsistem 2021-02-21 14:07:55)

Re: положение курсора мышки

vovka3003 wrote:

Как-то более связно выразив мысли наверное, ибо части вопроса между собой не вяжутся...

на двух формах включен AutoScroll
обе формы наполнены компонентами 
прокрутка формы активируется когда на нее наводится курсор мышки, но если курсор попадает на компонент в этой форме то прокрутка не срабатывает

4 (edited by vovka3003 2021-02-21 15:50:05)

Re: положение курсора мышки

На:

procedure FmMouseWheel(Sender: TObject; isShift, isAlt, isCtrl: boolean;
WheelDelta: Integer; X, Y: Integer; var Handled: Boolean);
var Accel:integer;
begin
  if isCtrl then Accel := 2 else Accel := 10; // Ускорение 5х при зажатом Ctrl
  TForm(Sender).VertScrollBar.Position:=
  TForm(Sender).VertScrollBar.Position - WheelDelta div Accel;
end;

var fc:Integer;

begin
  for fc:=0 to Screen.FormCount-1 do
  TForm(Screen.Forms[fc]).OnMouseWheel := @FmMouseWheel;
end.

5 (edited by sibprogsistem 2021-02-21 15:52:05)

Re: положение курсора мышки

vovka3003 wrote:

Скроллбар тоже не работает..?

скролл отображается но  косячно, для нормальной работы применил Range

Re: положение курсора мышки

vovka3003 wrote:

На:

procedure FmMouseWheel(Sender: TObject; isShift, isAlt, isCtrl: boolean;
WheelDelta: Integer; X, Y: Integer; var Handled: Boolean);
var Accel:integer;
begin
  if isCtrl then Accel := 2 else Accel := 10; // Ускорение 5х при зажатом Ctrl
  TForm(Sender).VertScrollBar.Position:=
  TForm(Sender).VertScrollBar.Position - WheelDelta div Accel;
end;

var fc:Integer;

begin
  for fc:=0 to Screen.FormCount-1 do
  TForm(Screen.Forms[fc]).OnMouseWheel := @FmMouseWheel;
end.

Спасибо!