Вверх ↑
Этот топик читают: Гость
Ответов: 63
Рейтинг: 1
#1: 2022-07-29 10:21:42 ЛС | профиль | цитата
Приветствую. Подскажите какой элемент применить для получения данных с колеса прокрутки мыши? Т.е. крутим колесо выдаёт цифры в поток или какие-то данные.

--- Добавлено в 2022-07-29 10:34:49

Всё нашёл это в самой форме есть оказывается.

Редактировалось 1 раз(а), последний 2022-07-29 10:34:49
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8885
Рейтинг: 823
#2: 2022-07-29 12:04:05 ЛС | профиль | цитата
Andrej77rv,
И во всех интерфейсных элементах:

Add(MainForm,2953706,161,98)
{
}
Add(Edit,2853602,238,98)
{
Left=140
Top=30
Point(onMouseWheel)
link(onMouseWheel,2853602:doText2,[(277,118)(277,139)(228,139)(228,111)])
}

карма: 19

0
Ответов: 283
Рейтинг: 23
#3: 2022-07-30 11:32:11 ЛС | профиль | цитата
Из схемы выше получаю либо 120 либо -120
Так и должно быть?
карма: 2
0
Ответов: 2059
Рейтинг: 131
#4: 2022-07-30 12:23:18 ЛС | профиль | цитата
envoy_sky писал(а):
Из схемы выше получаю либо 120 либо -120
Так и должно быть?

Мужик лежит на диване и молится: «Господи, помоги мне разбогатеть. Ведь ты все можешь! Я верую в твое могущество! Я надеюсь на твое милосердие!» А Господь, с досадой: «Мужик, ну ты хоть лотерейный билет купи!»

А счётчик поставить религия не позволяет?
Add(MainForm,542193,252,140)
{
}
Add(Edit,2853602,329,140)
{
Left=140
Top=30
Point(onMouseWheel)
link(onMouseWheel,12635417:doCompare,[(383,160)(383,195)])
}
Add(CounterEx,14459525,595,182)
{
Min=-100
Point(doDirect)
link(onNext,2853602:doText2,[(639,188)(639,170)(317,170)(317,153)])
}
Add(If_else,12635417,406,189)
{
Type=1
Op2=Integer(0)
link(onTrue,14979526:doData,[(457,195)(457,181)])
link(onFalse,13021145:doData,[(457,202)(457,237)])
}
Add(DoData,13021145,476,231)
{
Data=Integer(0)
link(onEventData,1046696:doWork3,[(529,237)])
}
Add(DoData,14979526,476,175)
{
Data=Integer(1)
link(onEventData,1046696:doWork2,[(524,181)(524,202)])
}
Add(Hub,11320846,539,196)
{
link(onEvent1,14459525:doDirect,[(574,202)(574,195)])
link(onEvent2,14459525:doNext,[(574,209)(574,188)])
}
Add(HubEx,1046696,525,196)
{
link(onEvent,11320846:doEvent1,[])
}



Add(MainForm,4983658,189,56)
{
Position=1
Point(Handle)
link(onCreate,15561254:doPopup,[])
}
Add(InlineCode,12360657,336,294)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,14423304:doAdd,[])
}
Add(Memo,14423304,392,294)
{
Left=10
Top=5
Width=160
Height=260
AddType=1
ScrollBars=2
}
Add(InfoTip,13344029,322,91)
{
Info=#20:5120 - движение мыши|55:522ХХХ - прокрутка колеса, где ХХХ - значение прокрутки|18:5130 - нажатие ЛКМ|21:5140 - отпускание ЛКМ|18:5160 - нажатие ПКМ|21:5170 - отпускание ПКМ|21:5190 - нажатие колеса|24:5200 - отпускание колеса|33:5231 - нажатие 1-й боковой кнопки|36:5241 - отпускание 1-й боковой кнопки|33:5232 - нажатие 2-й боковой кнопки|35:5242 - отпускание 2-й боковй кнопки|
Frame=2
Transparent=1
HAlign=0
Width=316
Height=172
Margin=5
}
Add(WinTools,15561254,238,63)
{
link(Handle,4983658:Handle,[(244,51)(220,51)(220,100)(195,100)])
}


Редактировалось 2 раз(а), последний 2022-07-30 12:30:17
карма: 6

0
Ответов: 283
Рейтинг: 23
#5: 2022-07-30 14:06:11 ЛС | профиль | цитата
flint2 писал(а):
А счётчик поставить религия не позволяет?


Да я подумал что число 120 от модели мышки зависят или от настроек мышки.
Откуда берётся это число?

Редактировалось 2 раз(а), последний 2022-07-30 14:08:11
карма: 2
0
Ответов: 666
Рейтинг: 139
#6: 2022-07-30 16:28:35 ЛС | профиль | цитата
envoy_sky писал(а):
Откуда берётся это число?

Вот хорошая статья.
https://devblogs.microsoft.com/oldnewthing/20130123-00/?p=5473
карма: 14

0
Ответов: 2059
Рейтинг: 131
#7: 2022-07-30 16:35:27 ЛС | профиль | цитата
А разве имеет решающие значение на какого цвета автобусе ехать домой?

Вот внимательный натуралист мог бы заметить, что в двух примерах цифры соответствующие одним и тем-же кнопкам мыши различны при одной и той-же мышке. - зависит от API.
Важно то, то число соответствующее ЛКМ отлично от ПКМ.
карма: 6

0
Ответов: 666
Рейтинг: 139
#8: 2022-07-30 16:40:18 ЛС | профиль | цитата
flint2 писал(а):
А разве имеет решающие значение на какого цвета автобусе ехать домой?

Нет, не имеет. Но envoy_sky спрашивал про число которое выдаётся при скроле колёсика мышки.
А в статье очень оригинальное объяснение почему именно 120.
карма: 14

0
Ответов: 2059
Рейтинг: 131
#9: 2022-07-30 18:27:32 ЛС | профиль | цитата
Gunta писал(а):
Нет, не имеет. Но envoy_sky спрашивал про число которое выдаётся...

Вот я про то же. Почему такая мысль возникла и такой вопрос?
Вот например в SDL2(интерфейсная библиотека для многих графических движков, а`ля стандарт для них) совсем другие значения, с 200xxx начинается, а в ImGui совсем другие.

Редактировалось 4 раз(а), последний 2022-07-30 18:53:26
карма: 6

0
Ответов: 283
Рейтинг: 23
#10: 2022-07-30 19:40:49 ЛС | профиль | цитата
Gunta писал(а):
Вот хорошая статья.

Спасибо большое.
карма: 2
0
Ответов: 2059
Рейтинг: 131
#11: 2022-08-01 15:30:41 ЛС | профиль | цитата
envoy_sky, ну что ты ей богу либезишь?

Редактировалось 1 раз(а), последний 2022-08-01 15:30:55
карма: 6

0
Ответов: 283
Рейтинг: 23
#12: 2022-08-01 16:32:56 ЛС | профиль | цитата
flint2 писал(а):
ну что ты ей богу либезишь?

Нет.

Поблагодарил человека.
карма: 2
0
Ответов: 178
Рейтинг: 14
#13: 2022-09-05 16:53:07 ЛС | профиль | цитата
Я вот так делал

Add(Edit,2853602,203,161)
{
Left=140
Top=30
Point(onMouseWheel)
link(onMouseWheel,9893551:doCompare,[])
}
Add(Math,13267456,315,140)
{
Op2=1
link(onResult,9604568:doWork1,[(363,146)])
link(Op1,5153740:Var2,[(321,129)(401,129)])
}
Add(If_else,9893551,252,175)
{
Type=2
Op2=Integer(0)
link(onTrue,13267456:doOperation,[(300,181)(300,146)])
link(onFalse,7005202:doOperation,[(299,188)(299,223)])
}
Add(Math,7005202,315,217)
{
OpType=1
Op2=1
link(onResult,9604568:doWork2,[])
link(Op1,5153740:Var1,[(321,194)])
}
Add(GetDataEx,5153740,395,189)
{
Angle=2
link(Data,2853602:Text,[(401,274)(209,274)])
}
Add(HubEx,9604568,359,217)
{
Angle=1
link(onEvent,2853602:doText2,[(363,290)(188,290)(188,174)])
}

карма: 0

0
Ответов: 178
Рейтинг: 14
#14: 2022-09-05 20:37:05 ЛС | профиль | цитата
А можно сделать? чтоб при наведении курсора на Edit менять значения колесиком не устанавливая фокус на нем (без каретки в нем)

Add(MainForm,12409137,126,35)
{
Width=250
Height=154
Point(doSetFocus)
}
Add(Edit,2853602,203,161)
{
Left=140
Top=30
Point(onMouseWheel)
Point(onMouseEnter)
Point(doSetFocus)
Point(onMouseLeave)
link(onMouseWheel,9893551:doCompare,[])
link(onMouseEnter,2853602:doSetFocus,[(247,188)(247,212)(181,212)(181,181)])
link(onMouseLeave,13821191:doWork1,[(242,195)(242,132)])
}
Add(Math,13267456,315,140)
{
Op2=1
link(onResult,9604568:doWork1,[(363,146)])
link(Op1,5153740:Var2,[(321,129)(401,129)])
}
Add(If_else,9893551,252,175)
{
Type=2
Op2=Integer(0)
link(onTrue,13267456:doOperation,[(300,181)(300,146)])
link(onFalse,7005202:doOperation,[(299,188)(299,223)])
}
Add(Math,7005202,315,217)
{
OpType=1
Op2=1
link(onResult,9604568:doWork2,[])
link(Op1,5153740:Var1,[(321,194)])
}
Add(GetDataEx,5153740,395,189)
{
Angle=2
link(Data,2853602:Text,[(401,274)(209,274)])
}
Add(HubEx,9604568,359,217)
{
Angle=1
link(onEvent,2853602:doText,[(363,298)(168,298)(168,167)])
}
Add(Edit,8394687,203,357)
{
Left=140
Top=75
Point(onMouseWheel)
Point(onMouseEnter)
Point(doSetFocus)
Point(onMouseLeave)
link(onMouseWheel,13622124:doCompare,[])
link(onMouseEnter,8394687:doSetFocus,[(245,384)(245,415)(191,415)(191,377)])
link(onMouseLeave,13821191:doWork3,[(250,391)(250,463)(114,463)])
}
Add(Math,11057270,336,336)
{
Op2=1
link(onResult,13887054:doWork1,[(384,342)])
link(Op1,6476464:Var2,[(342,324)(403,324)])
}
Add(If_else,13622124,259,371)
{
Type=2
Op2=Integer(0)
link(onTrue,11057270:doOperation,[(321,377)(321,342)])
link(onFalse,3086124:doOperation,[(320,384)(320,419)])
}
Add(Math,3086124,336,413)
{
OpType=1
Op2=1
link(onResult,13887054:doWork2,[])
link(Op1,6476464:Var1,[(342,390)])
}
Add(GetDataEx,6476464,397,385)
{
Angle=2
link(Data,8394687:Text,[(403,484)(209,484)])
}
Add(HubEx,13887054,380,413)
{
Angle=1
link(onEvent,8394687:doText,[(384,517)(173,517)(173,363)])
}
Add(HubEx,13821191,110,126)
{
Angle=3
link(onEvent,16354603:doSetFocus,[(114,104)])
}
Add(Label,16354603,140,91)
{
Left=60
Top=55
Point(doSetFocus)
}

карма: 0

0
Ответов: 8885
Рейтинг: 823
#15: 2022-09-05 21:46:08 ЛС | профиль | цитата
Stalevar,
меньше


Add(MainForm,12409137,238,42)
{
Width=250
Height=154
Point(doSetFocus)
}
Add(Edit,2853602,315,168)
{
Left=95
Top=30
Text="0"
Point(onMouseWheel)
Point(onMouseEnter)
Point(doSetFocus)
Point(onMouseLeave)
link(onMouseWheel,11571439:doCalc,[])
link(onMouseEnter,2853602:doSetFocus,[(359,195)(359,219)(293,219)(293,188)])
link(onMouseLeave,13821191:doWork1,[(354,202)(354,139)])
}
Add(Edit,8394687,315,231)
{
Left=95
Top=75
Width=135
Text="100"
Point(onMouseWheel)
Point(onMouseEnter)
Point(doSetFocus)
Point(onMouseLeave)
link(onMouseWheel,471153:doCalc,[])
link(onMouseEnter,8394687:doSetFocus,[(354,258)(354,279)(305,279)(305,251)])
link(onMouseLeave,13821191:doWork3,[(361,265)(361,286)(226,286)])
}
Add(HubEx,13821191,222,133)
{
Angle=3
link(onEvent,16354603:doSetFocus,[(226,111)])
}
Add(Label,16354603,252,98)
{
Left=15
Top=55
Point(doSetFocus)
}
Add(MathParse,11571439,378,182)
{
DataCount=1
MathStr="(%1>0)*(%0+1)+(%1<0)*(%0-1)"
link(onResult,2853602:doText2,[(417,188)(417,160)(305,160)(305,181)])
}
Add(MathParse,471153,378,245)
{
DataCount=1
MathStr="(%1>0)*(%0*1.1)+(%1<0)*(%0/1.1)"
Default=100
link(onResult,8394687:doText2,[(417,251)(417,230)(305,230)(305,244)])
}

карма: 19

3
Голосовали:Stalevar, envoy_sky, Gunta
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)