private
{ Private declarations }
// обработка движения колеса мыши
{procedure MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); }
// обработка прокрутки колеса вниз
procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
// обработка прокрутки колеса вверх
procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
...
procedure TForm1.FormCreate(Sender: TObject);
begin
// Назначаем обработчики для событий:
// движение колеса мыши
{Form1.OnMouseWheel:= MouseWheel;}
// прокрутка колеса вниз
Form1.OnMouseWheelDown:= MouseWheelDown;
// прокрутка колеса вверх
Form1.OnMouseWheelUp:= MouseWheelUp;
end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
// Детекция движения колеса вниз
if ButtonStepMotor.Tag = 1 then
begin
reverschek:= 0;
If CheckBoxMotor1.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FE, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FE,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor2.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FD, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FD,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor3.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FB, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FB,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor4.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $F7, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $F7,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor5.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FE, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FE,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor6.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FD, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FD,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor7.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $FB, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $FB,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
If CheckBoxMotor8.Checked Then
Step(Blocks[TabControl1.TabIndex].motor, Blocks[TabControl1.TabIndex].RotateDirection and $F7, Blocks[TabControl1.TabIndex].motor2, Blocks[TabControl1.TabIndex].RotateDirection2 and $F7,
1{Blocks[TabControl1.TabIndex].StepCount}, Blocks[TabControl1.TabIndex].StepLength);
EditKolShag.Text:= IntToStr(KolvoShag);
end;
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id1);
label1.Caption:=IntToStr(id1);
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id2);
Label2.Caption:=IntToStr(id2);
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
id1:Integer = 0;
id2:Integer = 0;
implementation
{$R *.dfm}
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id1);
label1.Caption:=IntToStr(id1);
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id2);
Label2.Caption:=IntToStr(id2);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, AppEvnts;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
ListBox1: TListBox;
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Procedure WMMOUSEWHEEL (Var Msg: TWMMOUSEWHEEL );
Message WM_MOUSEWHEEL ;
public
{ Public declarations }
end;
var
Form1: TForm1;
id1:Integer = 0;
id2:Integer = 0;
implementation
{$R *.dfm}
Procedure TForm1.WMMOUSEWHEEL(Var Msg: TWMMOUSEWHEEL );
Begin
{
//если нужно... что то делать...
//в общем, мы просто отобрали у самой формы это событие
//и теперь OnWheel есть только у самих компонентов...
If Msg.WheelDelta > 0 Then
Label3.Caption:='UP'
Else
Label3.Caption:='DOWN';
}
End;
procedure TForm1.Button1Click(Sender: TObject);
function GetNumScrollLines: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
begin
//по хорошему это надо знать и "крутить" в соответствии с этим количеством:
ShowMessage(IntToStr(GetNumScrollLines));
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id1);
label1.Caption:=IntToStr(id1);
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id2);
Label2.Caption:=IntToStr(id2);
end;
end.
function GetNumScrollLines: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
// Детекция движения колеса вниз
inc(idscrol);
if (idscrol mod GetNumScrollLines) <> 0 then
exit;
....
end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
// Детекция движения колеса вверх
inc(idscrol);
if (idscrol mod GetNumScrollLines) <> 0 then
exit;
....
end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
// Детекция движения колеса вниз
inc(idscrol);
if (idscrol mod 3) <> 0 then
exit;
....
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
id1:Integer = 0;
id2:Integer = 0;
implementation
{$R *.dfm}
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id1);
label1.Caption:=IntToStr(id1);
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Inc(id2);
Label2.Caption:=IntToStr(id2);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
//КЛЮЧЕВОЕ добавление:
Procedure WMMOUSEWHEEL (Var Msg: TWMMOUSEWHEEL );
Message WM_MOUSEWHEEL ;
public
{ Public declarations }
end;
var
Form1: TForm1;
id1:Integer = 0;
id2:Integer = 0;
implementation
{$R *.dfm}
Procedure TForm1.WMMOUSEWHEEL(Var Msg: TWMMOUSEWHEEL );
Begin
{
//"захватили" сообщение и ничего по нему не делаем...
//но если нужно... что то делать...
//в общем, мы просто отобрали у самой формы это событие
//и теперь OnWheel есть только у самих компонентов...
//тем не менее если необходимо далее с этим сообщением работать
//используйте код:
If Msg.WheelDelta > 0 Then
Label3.Caption:='UP'
Else
Label3.Caption:='DOWN';
}
End;
procedure TForm1.Button1Click(Sender: TObject);
//функция позволяющая узнать что установлено в свойствах системы -
//Панель управления / Мышь / Закладка "Колесико" / Поворот на указанное количество строк.
//т.е. как пользователь хотел... бы чтобы работало колесико:
function GetNumScrollLines: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
begin
//по хорошему это надо знать и "крутить" в соответствии с этим количеством:
ShowMessage(IntToStr(GetNumScrollLines));
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
//увеличиваем счетчик срабатывания и выводим значение в label1:
Inc(id1);
label1.Caption:=IntToStr(id1);
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
//увеличиваем счетчик срабатывания и выводим значение в label2:
Inc(id2);
Label2.Caption:=IntToStr(id2);
end;
end.
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
inc(id1);
if (id1 mod 2) <> 0 then exit; //или 3... сколько у вас будет. Суть - "убрать" лишние срабатывания.
//Ниже ВАШ код который Вы хотите чтобы выполнялся с приращением "1":
//.....
end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
inc(id2);
if (id2 mod 2) <> 0 then exit; //или 3... сколько у вас будет.
//Ниже ВАШ код который Вы хотите чтобы выполнялся:
//.....
end;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.